def run
require 'fog'
require 'highline'
require 'net/ssh/multi'
require 'readline'
slicehost = Fog::Slicehost.new(
:slicehost_password => Chef::Config[:knife][:slicehost_password]
)
flavors = slicehost.flavors.inject({}) { |h,f| h[f.id] = f.name; h }
images = slicehost.images.inject({}) { |h,i| h[i.id] = i.name; h }
response = slicehost.create_slice(config[:flavor],
config[:image],
config[:server_name])
$stdout.sync = true
puts "#{h.color("Name", :cyan)}: #{response.body['name']}"
puts "#{h.color("Flavor", :cyan)}: #{flavors[response.body['flavor-id']]}"
puts "#{h.color("Image", :cyan)}: #{images[response.body['image-id']]}"
puts "#{h.color("Public Address", :cyan)}: #{response.body['addresses'][1]}"
puts "#{h.color("Private Address", :cyan)}: #{response.body['addresses'][0]}"
puts "#{h.color("Password", :cyan)}: #{response.body['root-password']}"
print "\n#{h.color("Requesting status of #{response.body['name']}", :magenta)}"
saved_password = response.body['root-password']
loop do
sleep 15
host = slicehost.get_slice(response.body['id'])
if host.body['status'] == 'active'
break
end
end
puts "\nServer ready!!"
end