Class: NCC

Inherits:
Object
  • Object
show all
Defined in:
lib/ncc.rb,
lib/ncc/error.rb,
lib/ncc/config.rb,
lib/ncc/instance.rb,
lib/ncc/connection.rb

Defined Under Namespace

Classes: Config, Connection, Error, Instance

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_path = nil, opt = {}) ⇒ NCC

Returns a new instance of NCC.



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ncc.rb', line 28

def initialize(config_path=nil, opt={})
    @logger = opt[:logger] if opt.has_key? :logger
    config_path ||= [
        '/etc/ncc-api']
    config_path = [config_path] unless config_path.respond_to? :unshift
    config_path.unshift(File.join(ENV['NCCAPI_HOME'], 'etc')) if
        ENV['NCCAPI_HOME']
    @config = NCC::Config.new(config_path, :logger => @logger)
    @inventory = CMDBclient.new(@config)
    @clouds = { }
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



26
27
28
# File 'lib/ncc.rb', line 26

def config
  @config
end

#inventoryObject (readonly)

Returns the value of attribute inventory.



26
27
28
# File 'lib/ncc.rb', line 26

def inventory
  @inventory
end

Instance Method Details

#api_urlObject



93
94
95
96
97
98
99
# File 'lib/ncc.rb', line 93

def api_url
    if @config['services'].has_key? 'v2api'
        @config['services']['v2api']
    else
        'http://localhost/ncc_api/v2'
    end
end

#clouds(cloud = nil, opt = {}) ⇒ Object



61
62
63
64
65
66
67
# File 'lib/ncc.rb', line 61

def clouds(cloud=nil, opt={})
    if cloud.nil?
        @config[:clouds].keys
    else
        connect(cloud, :logger => @logger)
    end
end

#connect(cloud, opt = {}) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/ncc.rb', line 50

def connect(cloud, opt={})
    if ! @config[:clouds].has_key? cloud
        raise NCC::Error::NotFound, "Cloud #{cloud} not provided"
    end
    @clouds[cloud] ||= NCC::Connection.connect(self, cloud, opt)
    if @clouds[cloud].nil? or ! @clouds[cloud].current?
        @clouds[cloud] = NCC::Connection.connect(self, cloud, opt)
    end
    @clouds[cloud]
end

#debug(msg) ⇒ Object



40
41
42
43
44
# File 'lib/ncc.rb', line 40

def debug(msg)
    if @logger.respond_to? :debug
        @logger.debug "#{me}: #{msg}"
    end
end

#images(image = nil) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
# File 'lib/ncc.rb', line 81

def images(image=nil)
    if image.nil?
        @config[:images].to_array
    else
        if @config[:images].has_key? image
            @config[:images][image].to_hash
        else
            raise NCC::Error::NotFound, "No such image #{image.inspect}"
        end
    end
end

#meObject



46
47
48
# File 'lib/ncc.rb', line 46

def me
    self.class
end

#sizes(size = nil) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/ncc.rb', line 69

def sizes(size=nil)
    if size.nil?
        @config[:sizes].to_array
    else
        if @config[:sizes].has_key? size
            @config[:sizes][size].to_hash
        else
            raise NCC::Error::NotFound, "No such size #{size.inspect}"
        end
    end
end