class NCC::Instance

Attributes

console_log[RW]
environment[RW]
host[RW]
id[RW]
image[R]
ip_address[RW]
name[RW]
size[R]
status[R]

Public Class Methods

new(cfg, opt={}) click to toggle source
# File lib/ncc/instance.rb, line 73
def initialize(cfg, opt={})
    @cfg = cfg
    @logger = opt[:logger] if opt.has_key? :logger
    self.id = opt['id']
    self.name = opt['name']
    self.size = opt['size']
    self.image = opt['image']
    self.environment = opt['environment']
    self.role = opt['role']
    self.host = opt['host']
    self.ip_address = opt['ip_address']
    self.console_log = opt['console_log']
    self.extra = opt['extra']
end

Public Instance Methods

clear_extra() click to toggle source
# File lib/ncc/instance.rb, line 159
def clear_extra
    @extra = nil
end
debug(msg=nil) { || ... } click to toggle source

Should be mixed in

# File lib/ncc/instance.rb, line 59
def debug(msg=nil)
    msg ||= yield
    log 'debug', msg
end
extra(param=nil) click to toggle source
# File lib/ncc/instance.rb, line 163
def extra(param=nil)
    if param.nil?
        @extra
    else
        if !@extra.nil? and @extra.has_key? param
            @extra[param]
        else
            { }
        end
    end
end
extra=(newextra) click to toggle source
# File lib/ncc/instance.rb, line 175
def extra=(newextra)
    if !newextra.nil?
        raise NCC::Error, "Invalid extra parameter of type " +
            "#{newextra.class} (must be Hash)" unless
            newextra.respond_to? :to_hash
        if @extra.nil?
            @extra = newextra.to_hash
        else
            @extra = @extra.deep_soft_merge(newextra.to_hash)
        end
    end
end
image=(newimage) click to toggle source
# File lib/ncc/instance.rb, line 147
def image=(newimage)
    raise NCC::Error, "Invalid image #{newimage.inspect}" unless
        newimage.nil? or @cfg[:images].has_key? newimage
    @image = newimage
end
log(level, msg) click to toggle source
# File lib/ncc/instance.rb, line 68
def log(level, msg)
    @logger.send(level.intern, "#<#{me}>: #{msg}") if
        @logger.respond_to? level.intern
end
role() click to toggle source
# File lib/ncc/instance.rb, line 102
def role
    @role
end
role=(value) click to toggle source
# File lib/ncc/instance.rb, line 106
def role=(value)
    if value.nil?
        @role = []
    elsif value.respond_to? :join
        @role = value
    else
        @role = value.split(/, */)
    end
end
set_without_validation(fields) click to toggle source
# File lib/ncc/instance.rb, line 116
def set_without_validation(fields)
    fields.each_pair do |field, value|
        case field
        when :id
            @id = value
        when :name
            @name = value
        when :size
            @size = value
        when :image
            @image = value
        when :environment
            @environment = value
        when :role
            self.role = value
        when :extra
            @extra = value
        when :status
            self.status = value
        when :ip_address
            @ip_address = value
        when :host
            @host = value
        when :console_log
            @console_log = value
        else
            raise NCC::Error, "Invalid field #{field.inspect}"
        end
    end
end
size=(newsize) click to toggle source
# File lib/ncc/instance.rb, line 153
def size=(newsize)
    raise NCC::Error, "Invalid size ${newsize.inspect}" unless
        newsize.nil? or @cfg[:sizes].has_key? newsize
    @size = newsize
end
status=(newstatus) click to toggle source
# File lib/ncc/instance.rb, line 188
def status=(newstatus)
    raise NCC::Error, "Invalid status #{newstatus.inspect}" unless
        @@valid_statuses.include? newstatus
    @status = newstatus
end
to_hash() click to toggle source
# File lib/ncc/instance.rb, line 194
def to_hash
    {
        'name' => name,
        'id' => id,
        'extra' => extra,
        'environment' => environment,
        'role' => role,
        'size' => size,
        'image' => image,
        'ip_address' => ip_address,
        'host' => host,
        'status' => status
    }.delete_nil_values
end
to_json() click to toggle source
# File lib/ncc/instance.rb, line 209
def to_json
    to_hash.to_json
end
warn(msg) click to toggle source
# File lib/ncc/instance.rb, line 64
def warn(msg)
    log 'warn', msg
end
with_defaults(*defaults) click to toggle source
# File lib/ncc/instance.rb, line 88
def with_defaults(*defaults)
    obj = self.dup
    defaults.each do |d|
        next if d.nil?
        obj.name ||= d['name']
        obj.size ||= d['size']
        obj.image ||= d['image']
        obj.environment ||= d['environment']
        obj.role ||= d['role']
        obj.extra = d['extra']
    end
    obj
end