Sha256: 8543ccbd52e2bbba127a5e220dff2637d8f4c4adf73f447b201470289821c8b2

Contents?: true

Size: 1.35 KB

Versions: 1

Compression:

Stored size: 1.35 KB

Contents

#!/usr/bin/env ruby
$:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
require "poolparty"
require "poolparty/lite"

o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
  opts.on('-n cloudname', '--name name', 'Start cloud by this name')    { |c| optioner.cloudname c }
  opts.on('-i num', '--num i', 'Instance number')    { |i| optioner.inst_num i.to_i }
end

vote_for = o.unflagged_args.shift || "none"

schema = ::PoolParty.load_cloud_from_json(o.unflagged_args.shift)  #TODO: smarter option parser
remote_base = PoolParty::Remote.module_eval( schema.options.remoter_base.camelcase )

o.loaded_clouds.each do |cld|
  cld.update_from_schema(schema)
  case vote_for
  when "expand"
    puts "Launching new instance"
    `rm /etc/poolparty/neighborhood.json`
    cld.send :launch_instance!, schema.options.merge(:cloud_name => cld.name) do |node|
      dputs "Started node at #{node[:ip]}"
      ::PoolParty::Provision::BootStrapper.new( node[:ip], :cloud => cld )
      ::PoolParty::Provision::DrConfigure.new( node[:ip], :cloud => cld )
    end  
  
  when "contract"
    `rm /etc/poolparty/neighborhood.json`
    last_instance_id = %x[server-list-active instance_id].split("\t").last
    remote_base.terminate_instance! schema.options.merge(:instance_id => last_instance_id)    
  else
    puts "Unknown action: #{vote_for}"
    remote_base.describe_instances
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
auser-poolparty-1.2.7 bin/server-cloud-elections