Class: Deltacloud::Drivers::Digitalocean::DigitaloceanDriver

Inherits:
BaseDriver
  • Object
show all
Defined in:
lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb

Defined Under Namespace

Classes: Client

Constant Summary

Constants inherited from BaseDriver

BaseDriver::MEMBER_SHOW_METHODS, BaseDriver::STATE_MACHINE_OPTS

Instance Method Summary collapse

Methods inherited from BaseDriver

#address, #api_provider, #blob, #bucket, #catched_exceptions_list, #configured_providers, constraints, define_hardware_profile, define_instance_states, driver_name, feature, features, #filter_hardware_profiles, #filter_on, #find_hardware_profile, #firewall, #hardware_profile, #hardware_profiles, hardware_profiles, #has_capability?, #has_feature?, has_feature?, #image, #instance_actions_for, #instance_state_machine, instance_state_machine, #key, #name, #realm, #storage_snapshot, #storage_volume, #supported_collections

Methods included from Exceptions

exception_from_status, exceptions, included, logger, #safely

Instance Method Details

#create_instance(credentials, image_id, opts = {}) ⇒ Object



171
172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 171

def create_instance(credentials, image_id, opts={})
  safely do
    client = new_client(credentials)
    args = { :image_id => image_id }
    args.merge!(:region_id => opts[:realm_id]) if opts[:realm_id]
    args.merge!(:size_id => opts[:hwp_id]) if opts[:hwp_id]
    args.merge!(:name => opts[:name] || "inst#{Time.now.to_i}")
    convert_instance(
      credentials.user,
      client.get("droplets/new", args)['droplet']
    )
  end
end

#destroy_image(credentials, image_id) ⇒ Object

You can only destroy images you own.



147
148
149
150
151
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 147

def destroy_image(credentials, image_id)
  safely do
    new_client(credentials).get('images/%s/destroy', image_id)
  end
end

#destroy_instance(credentials, instance_id) ⇒ Object



185
186
187
188
189
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 185

def destroy_instance(credentials, instance_id)
  safely do
    new_client(credentials).get("droplets/#{instance_id}/destroy/")
  end
end

#images(credentials, opts = {}) ⇒ Object

By default images will return list of ‘all’ images available to launch. With ‘owner_id’ you can filter them using ‘global’ and ‘my_images’ values to get less images.



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 126

def images(credentials, opts={})
  unless opts[:id]
    filter = opts[:owner_id] ? { :filter => opts[:owner_id] } : {}
    img_arr = safely do
      new_client(credentials).get('images', filter)['images'].map do |i|
        convert_image(credentials, i)
      end
    end
    filter_on( img_arr, :architecture, opts )
  else
    safely do
      [convert_image(
        credentials,
        new_client(credentials).get('images/%s' % opts[:id])['image']
      )]
    end
  end
end

#instance(credentials, opts = {}) ⇒ Object



162
163
164
165
166
167
168
169
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 162

def instance(credentials, opts={})
  safely do
    convert_instance(
      credentials.user,
      new_client(credentials).get("droplets/#{opts[:id]}")["droplet"]
    )
  end
end

#instances(credentials, opts = {}) ⇒ Object



153
154
155
156
157
158
159
160
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 153

def instances(credentials, opts={})
  inst_arr = safely do
    new_client(credentials).get('droplets')['droplets'].map do |i|
      convert_instance(credentials.user, i)
    end
  end
  filter_on inst_arr, :state, opts
end

#realms(credentials, opts = {}) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 108

def realms(credentials, opts={})
  safely do
    new_client(credentials).get('regions')['regions'].map do |r|
      Realm.new(
        :id => r['id'],
        :name => r['name'],
        :state => 'AVAILABLE',
        :limit => :unlimited
      )
    end
  end
end

#reboot_instance(credentials, instance_id) ⇒ Object



203
204
205
206
207
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 203

def reboot_instance(credentials, instance_id)
  safely do
    new_client(credentials).get("droplets/#{instance_id}/reboot/")
  end
end

#start_instance(credentials, instance_id) ⇒ Object



197
198
199
200
201
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 197

def start_instance(credentials, instance_id)
  safely do
    new_client(credentials).get("droplets/#{instance_id}/power_on/")
  end
end

#stop_instance(credentials, instance_id) ⇒ Object



191
192
193
194
195
# File 'lib/deltacloud/drivers/digitalocean/digitalocean_driver.rb', line 191

def stop_instance(credentials, instance_id)
  safely do
    new_client(credentials).get("droplets/#{instance_id}/shutdown")
  end
end