Class: QC::Instance

Inherits:
DataType show all
Defined in:
lib/qc.rb

Constant Summary collapse

DEFAULT_IMAGE_ID =
'xenialx64a'

Instance Attribute Summary

Attributes inherited from DataType

#result

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from DataType

describe, #initialize, #method_missing, #to_s

Constructor Details

This class inherits a constructor from QC::DataType

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class QC::DataType

Class Method Details

.load(instance_id) ⇒ Object



109
110
111
# File 'lib/qc.rb', line 109

def Instance.load instance_id
  Instance.describe('instances.1' => instance_id)[0]
end

.run(p = {image_id: DEFAULT_IMAGE_ID, instance_name: nil, count: 1, login_mode: 'keypair', login_keypair: nil, login_passwd: nil, security_group: nil, zone: nil, instance_type: 'small_a'}) ⇒ Object



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

def Instance.run p = {image_id: DEFAULT_IMAGE_ID, instance_name: nil, count: 1, login_mode: 'keypair',
                      login_keypair: nil, login_passwd: nil, security_group: nil, zone: nil, instance_type: 'small_a'}
  p[:image_id] = DEFAULT_IMAGE_ID if p[:image_id].nil?
  p[:login_mode] = 'keypair' if p[:login_mode].nil?
  p[:instance_type] = 'small_a' if p[:instance_type].nil?
  p['vxnets.1'] = 'vxnet-0' if p['vxnets.1'].nil?
  ret = API::Request.execute! 'RunInstances', p
  ret['instances']
end

Instance Method Details

#add_keypair(kp_id) ⇒ Object



123
124
125
126
# File 'lib/qc.rb', line 123

def add_keypair kp_id
  p = {'instances.n1' => @values['instance_id'], 'keypairs.1' => kp_id}
  API::Request.execute!('AttachKeyPairs', p)
end

#ip=(eip_id) ⇒ Object



118
119
120
121
# File 'lib/qc.rb', line 118

def ip= eip_id
  p = {'instance' => @values['instance_id'], 'eip' => eip_id}
  API::Request.execute!('AssociateEip', p)
end

#terminate!Object



113
114
115
116
# File 'lib/qc.rb', line 113

def terminate!
  p = {'instances.1' => @values['instance_id']}
  API::Request.execute!('TerminateInstances', p)
end