Class: NCC

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

Defined Under Namespace

Classes: Config, Configurator, Connection, Error, Instance

Constant Summary collapse

VERSION =
'1.1.2'
@@global_config =
NCC::Configurator.new

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of NCC.



46
47
48
49
50
51
52
53
54
55
# File 'lib/ncc.rb', line 46

def initialize(config_path=nil, opt={})
    @logger = opt[:logger] if opt.has_key? :logger
    config_path ||= @@global_config.config_path
    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 = NOMS::CMDB.new(@config)
    @clouds = { }
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



38
39
40
# File 'lib/ncc.rb', line 38

def config
  @config
end

#inventoryObject (readonly)

Returns the value of attribute inventory.



38
39
40
# File 'lib/ncc.rb', line 38

def inventory
  @inventory
end

Class Method Details

.configure {|@@global_config| ... } ⇒ Object

Yields:

  • (@@global_config)


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

def self.configure
    yield @@global_config
end

Instance Method Details

#api_urlObject



110
111
112
113
114
115
116
# File 'lib/ncc.rb', line 110

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



78
79
80
81
82
83
84
# File 'lib/ncc.rb', line 78

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

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



67
68
69
70
71
72
73
74
75
76
# File 'lib/ncc.rb', line 67

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



57
58
59
60
61
# File 'lib/ncc.rb', line 57

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

#images(image = nil) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/ncc.rb', line 98

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



63
64
65
# File 'lib/ncc.rb', line 63

def me
    self.class
end

#sizes(size = nil) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
# File 'lib/ncc.rb', line 86

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