class DokkaaCfg::DigitalOcean

Constants

DROPLET_NAME_PREFIX

Public Class Methods

new(access_token=nil) click to toggle source
Calls superclass method
# File lib/dokkaacfg/digitalocean.rb, line 10
def initialize(access_token=nil)
  super()
  access_token ||= ENV["DIGITALOCEAN_ACCESS_TOKEN"]
  @client = Barge::Client.new(access_token: access_token)
end

Public Instance Methods

down(args, options={}) click to toggle source
# File lib/dokkaacfg/digitalocean.rb, line 46
def down(args, options={})
  droplets = @client.droplet.all["droplets"]
  r = droplet_regexp
  droplets.each do |d|
    if r.match(d.name)
      p @client.droplet.destroy(d.id)
    end
  end
end
scale(args, options=nil) click to toggle source
# File lib/dokkaacfg/digitalocean.rb, line 43
def scale(args, options=nil)
end
up(args, options_={}) click to toggle source
# File lib/dokkaacfg/digitalocean.rb, line 16
def up(args, options_={})
  options = options_.clone
  options[:scale]  ||= 1
  options[:region] ||= 'sfo1'
  options[:slug]   ||= '512mb'
  ssh_keys = keys.map do |k|
    if k.name == options[:ssh_key]
      k.id
    end
  end.compact
  user_data = UserData.make_user_data

  (1..options[:scale]).each do |n|
    name = "#{DROPLET_NAME_PREFIX}#{n}"
    puts "launching #{name}"
    p @client.droplet.create(
      name: name,
      region: options[:region],
      size: options[:slug],
      image: "coreos-alpha",
      ssh_keys: ssh_keys,
      private_networking: true,
      user_data: user_data
    )
  end
end

Private Instance Methods

dokkaa_droplets() click to toggle source
# File lib/dokkaacfg/digitalocean.rb, line 61
def dokkaa_droplets
  droplets = @client.droplet.all["droplets"]
  r = droplet_regexp
  droplets.filter{|d| d.name =~ r}
end
droplet_regexp() click to toggle source
# File lib/dokkaacfg/digitalocean.rb, line 57
def droplet_regexp
  Regexp.new("^#{DROPLET_NAME_PREFIX}")
end
keys() click to toggle source
# File lib/dokkaacfg/digitalocean.rb, line 67
def keys
  @keys ||= @client.key.all["ssh_keys"]
end