Module: Rudy::MetaData::ObjectBase

Includes:
Huxtable
Included in:
Rudy::Machine, Backup, Disk
Defined in:
lib/rudy/metadata/objectbase.rb

Instance Method Summary collapse

Methods included from Huxtable

change_environment, change_position, change_region, change_role, change_zone, #check_keys, #config_dirname, create_domain, #current_group_name, #current_machine_address, #current_machine_count, #current_machine_group, #current_machine_hostname, #current_machine_image, #current_machine_name, #current_machine_size, #current_user, #current_user_keypairpath, debug?, #debug?, domain, domain_exists?, #group_metadata, #has_keypair?, #has_keys?, #has_pem_keys?, #has_root_keypair?, keypair_path_to_name, #known_machine_group?, #root_keypairname, #root_keypairpath, #switch_user, update_config, update_global, update_logger, #user_keypairname, #user_keypairpath

Instance Method Details

#==(other) ⇒ Object



54
55
56
57
# File 'lib/rudy/metadata/objectbase.rb', line 54

def ==(other)
  return false unless other.is_a?(self.class)
  self.name == other.name
end

#destroyObject



42
43
44
45
46
# File 'lib/rudy/metadata/objectbase.rb', line 42

def destroy
  @sdb ||= Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
  @sdb.destroy(Rudy::DOMAIN, name)
  true
end

#init(*args) ⇒ Object



18
# File 'lib/rudy/metadata/objectbase.rb', line 18

def init(*args); raise "Must override init"; end

#initialize(*args) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/rudy/metadata/objectbase.rb', line 8

def initialize(*args)
  a, s, r = @@global.accesskey, @@global.secretkey, @@global.region
  @sdb = Rudy::AWS::SDB.new(a, s, r)
  @ec2inst = Rudy::AWS::EC2::Instances.new(a, s, r)
  @rvol = Rudy::AWS::EC2::Volumes.new(a, s, r)
  @radd = Rudy::AWS::EC2::Addresses.new(a, s, r)
  @rsnap = Rudy::AWS::EC2::Snapshots.new(a, s, r)
  init(*args)
end

#inspectObject



73
74
75
76
77
78
79
80
81
82
# File 'lib/rudy/metadata/objectbase.rb', line 73

def inspect
  lines = []
  lines << liner_note
  field_names.each do |key|
    next unless self.respond_to?(key)
    val = self.send(key)
    lines << sprintf(" %22s: %s", key, (val.is_a?(Array) ? val.join(', ') : val))
  end
  lines.join($/)
end

#liner_noteObject



68
69
70
71
# File 'lib/rudy/metadata/objectbase.rb', line 68

def liner_note
  info = @awsid && !@awsid.empty? ? @awsid : "[no aws object]"
  "%s  %s" % [self.name.bright, info]
end

#name(identifier, zon, env, rol, pos, *other) ⇒ Object



30
31
32
33
# File 'lib/rudy/metadata/objectbase.rb', line 30

def name(identifier, zon, env, rol, pos, *other)
  pos = pos.to_s.rjust 2, '0'
  [identifier, zon, env, rol, pos, *other].flatten.compact.join(Rudy::DELIM)
end

#refreshObject



48
49
50
51
52
# File 'lib/rudy/metadata/objectbase.rb', line 48

def refresh
  @sdb ||= Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
  h = @sdb.get(Rudy::DOMAIN, name) || {}
  from_hash(h)
end

#save(replace = true) ⇒ Object



35
36
37
38
39
40
# File 'lib/rudy/metadata/objectbase.rb', line 35

def save(replace=true)
  replace = true if replace.nil?
  @sdb ||= Rudy::AWS::SDB.new(@@global.accesskey, @@global.secretkey, @@global.region)
  @sdb.put(Rudy::DOMAIN, name, self.to_hash, replace) # Always returns nil
  true
end

#to_query(more = [], less = []) ⇒ Object



22
23
24
# File 'lib/rudy/metadata/objectbase.rb', line 22

def to_query(more=[], less=[])
  Rudy::AWS::SDB.generate_query build_criteria(more, less)
end

#to_sObject

A generic default



60
61
62
63
64
65
66
# File 'lib/rudy/metadata/objectbase.rb', line 60

def to_s
  str = ""
  field_names.each do |key|
    str << sprintf(" %22s: %s#{$/}", key, self.send(key.to_sym))
  end
  str
end

#to_select(more = [], less = []) ⇒ Object



26
27
28
# File 'lib/rudy/metadata/objectbase.rb', line 26

def to_select(more=[], less=[])
  Rudy::AWS::SDB.generate_select ['*'], Rudy::DOMAIN, build_criteria(more, less)
end

#valid?Boolean

Returns:

  • (Boolean)


20
# File 'lib/rudy/metadata/objectbase.rb', line 20

def valid?; raise "#{self.class} must override 'valid?'"; end