class Hyrb::Tasks::Provision::Rackspace

Public Instance Methods

run(env) click to toggle source
# File lib/hyrb/tasks/provision.rb, line 59
def run(env)
  flavor_id = option_list(env.rackspace_cache, :flavors, 2) do |f, i|
    "#{i+1}: #{f.name} / id: #{f.id}"
  end.id

  image_id = option_list(env.rackspace_cache, :images, 1) do |f, i|
    "#{i+1}: #{f.name} / id: #{f.id}"
  end.id

  say "Creating Rackspace Server"
  server = env.rackspace_client.servers.create({
    name: env.environment.server_name,
    flavor_id: flavor_id,
    image_id: image_id,
  })

  env.environment.provider = 'rackspace'
  env.environment.server_id = server.id

  sleep(6) until server.reload.ready?
  env.environment.host = server.public_ip_address

  env.environment.save!

  say "Created Rackspace Server!", :green
  say "IP Address: #{server.public_ip_address} / ID: #{server.id}", :green
  say "\n\tssh root@#{server.public_ip_address}\n"
  beep
end