class Asteroid::Provider::DigitalOcean

Public Class Methods

new(config = {}) click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 7
def initialize(config = {})
  @config = config
  Digitalocean.client_id  = config[:client_id]
  Digitalocean.api_key    = config[:api_key]
end

Public Instance Methods

create_instance(server) click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 30
def create_instance(server)

  instance_options = server.instance_options

  require_attribute instance_options, 
                    :size_id,
                    "needs size of droplet"

  require_attribute instance_options,
                    :image_id, 
                    "needs starting image for droplet"

  require_attribute instance_options, 
                    :region_id, 
                    "needs region for droplet"

  require_attribute instance_options, 
                    :ssh_key_ids, 
                    "needs SSH key registered for droplet"

  instance = Digitalocean::Droplet.create(
    name: server.generate_instance_name, 
    size_id: instance_options[:size_id], 
    image_id: instance_options[:image_id], 
    region_id: instance_options[:region_id], 
    ssh_key_ids: instance_options[:ssh_key_ids],
    private_networking: true
  )

  if instance.status == "OK"
    Instance.new instance.droplet.marshal_dump.merge(provider: self)
  else
    nil
  end
end
create_ssh_key(config) click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 79
def create_ssh_key(config)
end
destroy_instance(instance) click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 66
def destroy_instance(instance)
  Digitalocean::Droplet.destroy instance.id
end
instances() click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 21
def instances
  response = Digitalocean::Droplet.all
  response.droplets.map do |d|
    d.marshal_dump.merge(
      provider: self
    )
  end
end
reboot_instance(instance) click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 82
def reboot_instance(instance)
end
sizes() click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 13
def sizes
  Digitalocean::Size.all.sizes.map do |d|
    d.marshal_dump.merge(
      provider: self
    )
  end
end
ssh_keys() click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 70
def ssh_keys
  response = Digitalocean::SshKey.all
  response.ssh_keys.map do |d|
    d.marshal_dump.merge(
      provider: self
    )
  end
end

Private Instance Methods

instance_name() click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 91
def instance_name
  "Droplet"
end
provider_name() click to toggle source
# File lib/asteroid/provider/digital_ocean.rb, line 87
def provider_name
  "DigitalOcean"
end