Class: Deltacloud::Drivers::Terremark::TerremarkDriver
- Inherits:
-
BaseDriver
- Object
- BaseDriver
- Deltacloud::Drivers::Terremark::TerremarkDriver
- Defined in:
- lib/deltacloud/drivers/terremark/terremark_driver.rb
Constant Summary collapse
- VAPP_STATE_MAP =
– Vapp State Map… for use with convert_instance (get an integer back from terremark) –
{ "0" => "PENDING", "1" => "PENDING", "2" => "STOPPED", "4" => "RUNNING" }
Instance Method Summary collapse
-
#create_instance(credentials, image_id, opts) ⇒ Object
– CREATE INSTANCE – launch a vapp template.
-
#destroy_instance(credentials, id) ⇒ Object
– DESTROY INSTANCE – shuts down…
-
#images(credentials, opts = nil) ⇒ Object
– IMAGES – aka “vapp_templates”.
-
#instances(credentials, opts = nil) ⇒ Object
– INSTANCES – aka vApps.
-
#realms(credentials, opts = nil) ⇒ Object
– REALMS – only one realm…
-
#reboot_instance(credentials, id) ⇒ Object
– REBOOT INSTANCE –.
-
#start_instance(credentials, id) ⇒ Object
– START INSTANCE –.
-
#stop_instance(credentials, id) ⇒ Object
– STOP INSTANCE –.
Methods inherited from BaseDriver
#catched_exceptions_list, declare_feature, define_hardware_profile, define_instance_states, feature, feature_decl_for, feature_decls, #features, features, #filter_hardware_profiles, #filter_on, #find_hardware_profile, #hardware_profile, hardware_profiles, #hardware_profiles, #has_collection?, #image, #instance, #instance_actions_for, instance_state_machine, #instance_state_machine, #realm, #storage_snapshot, #storage_snapshots, #storage_volume, #storage_volumes, #supported_collections
Instance Method Details
#create_instance(credentials, image_id, opts) ⇒ Object
– CREATE INSTANCE – launch a vapp template. Needs a name, ram, no. cpus, id of vapp_template
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 129 def create_instance(credentials, image_id, opts) new_vapp = nil vapp_opts = {} #assemble options to pass to Fog::Terremark::Real.instantiate_vapp_template terremark_hwp = hardware_profiles(credentials, {:name => 'default'}).first #sanity check values against default name = opts['name'] #name could be nil or length 0 or too long name = "inst#{Time.now.to_i}" if (name.nil? || (name.length == 0)) name = name.slice(0..13) #name < 15 chars (says terremark) unless ( (terremark_hwp.include?(:cpu, opts[:hwp_cpu].to_i)) && (terremark_hwp.include?(:memory, opts[:hwp_memory].to_i)) ) then raise Deltacloud::Validation::Failure.new(Deltacloud::Validation::Param.new(["cpu"]), "Error with cpu and/or memory values. you said cpu->#{opts[:hwp_cpu]} and mem->#{opts[:hwp_memory]}") end vapp_opts['cpus'] = opts[:hwp_cpu] vapp_opts['memory'] = opts[:hwp_memory] safely do terremark_client = new_client(credentials) ####### #FIXME# what happens if there is an issue getting the new vapp id? (eg even though created succesfully) ####### vapp_id = terremark_client.instantiate_vapp_template(name, image_id, vapp_opts).body['href'].split('/').last new_vapp = terremark_client.get_vapp(vapp_id) return convert_instance(new_vapp, terremark_client, credentials.user) #return an Instance object end end |
#destroy_instance(credentials, id) ⇒ Object
– DESTROY INSTANCE – shuts down… in terremark need to do a futher delete to get rid of a vapp entirely
187 188 189 190 191 192 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 187 def destroy_instance(credentials, id) safely do terremark_client = new_client(credentials) return terremark_client.delete_vapp(id) end end |
#images(credentials, opts = nil) ⇒ Object
– IMAGES – aka “vapp_templates”
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 57 def images(credentials, opts=nil) image_list = [] terremark_client = new_client(credentials) safely do vdc_id = terremark_client.default_vdc_id catalogItems = terremark_client.get_catalog(vdc_id).body['CatalogItems'] catalogItems.each{ |catalog_item| current_item_id = catalog_item['href'].split('/').last current_item = terremark_client.get_catalog_item(current_item_id).body['Entity'] if(current_item['type'] == 'application/vnd.vmware.vcloud.vAppTemplate+xml') image_list << convert_image(current_item, credentials.user) end } #end of catalogItems.each end image_list = filter_on( image_list, :id, opts ) image_list = filter_on( image_list, :architecture, opts ) image_list = filter_on( image_list, :owner_id, opts ) image_list end |
#instances(credentials, opts = nil) ⇒ Object
– INSTANCES – aka vApps
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 93 def instances(credentials, opts=nil) instances = [] terremark_client = new_client(credentials) safely do vdc_items = terremark_client.get_vdc(terremark_client.default_vdc_id()).body['ResourceEntities'] vdc_items.each{|current_item| if(current_item['type'] == 'application/vnd.vmware.vcloud.vApp+xml') vapp_id = current_item['href'].split('/').last vapp = terremark_client.get_vapp(vapp_id) instances << convert_instance(vapp, terremark_client, credentials.user) end }#end vdc_items.each end instances = filter_on( instances, :id, opts ) instances end |
#realms(credentials, opts = nil) ⇒ Object
– REALMS – only one realm… everything in US?
81 82 83 84 85 86 87 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 81 def realms(credentials, opts=nil) [Realm.new( { :id=>"US-Miami", :name=>"United States - Miami", :state=> "AVAILABLE" } )] end |
#reboot_instance(credentials, id) ⇒ Object
– REBOOT INSTANCE –
156 157 158 159 160 161 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 156 def reboot_instance(credentials, id) safely do terremark_client = new_client(credentials) return terremark_client.power_reset(id) end end |
#start_instance(credentials, id) ⇒ Object
– START INSTANCE –
166 167 168 169 170 171 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 166 def start_instance(credentials, id) safely do terremark_client = new_client(credentials) return terremark_client.power_on(id) end end |
#stop_instance(credentials, id) ⇒ Object
– STOP INSTANCE –
176 177 178 179 180 181 |
# File 'lib/deltacloud/drivers/terremark/terremark_driver.rb', line 176 def stop_instance(credentials, id) safely do terremark_client = new_client(credentials) return terremark_client.power_shutdown(id) end end |