Class: Seedee::DigitalOcean

Inherits:
Object
  • Object
show all
Defined in:
lib/seedee/digital_ocean.rb

Overview

Talk to Digital Ocean

Constant Summary collapse

ACCESS_TOKEN =
ENV['DIGITAL_OCEAN_TOKEN']
TRAVIS_BUILD_DIR =
ENV['TRAVIS_BUILD_DIR']

Instance Method Summary collapse

Instance Method Details

#await_active_droplet(droplet) ⇒ Object



33
34
35
36
37
38
39
40
# File 'lib/seedee/digital_ocean.rb', line 33

def await_active_droplet(droplet)
  client.droplets.find(id: droplet.id).tap do |result|
    if result.status != 'active'
      sleep(1)
      return await_active_droplet(droplet)
    end
  end
end

#destroy_droplet(id) ⇒ Object



27
28
29
30
31
# File 'lib/seedee/digital_ocean.rb', line 27

def destroy_droplet(id)
  client.droplets.delete(id: id.to_s)
rescue StandardError
  puts "error deleting droplet with id = '#{id}'"
end

#new_droplet(name) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/seedee/digital_ocean.rb', line 12

def new_droplet(name)
  user_data = File.read(File.join(Seedee::ROOT, 'modify-hosts'))
  droplet = DropletKit::Droplet.new(
    name: name.to_s.strip,
    region: 'tor1',
    image: 'ubuntu-16-04-x64',
    size: 's-1vcpu-1gb',
    user_data: user_data,
    monitoring: true,
    ssh_keys: Array(ssh_keys)
  )

  await_active_droplet client.droplets.create(droplet)
end