#!/usr/bin/env ruby $:.unshift(File.join(File.dirname(__FILE__), "..", "lib")) require "poolparty" require "poolpartycl" o = PoolParty::Optioner.new(ARGV) do |opts, optioner| opts.on('-f [remote|local]', '--from [remote|local]', 'Remote or local (default: local)') { |o| optioner.location o } opts.on('-r', '--remote', 'Remote listing') { optioner.location "remote" } opts.on('-l', '--local', 'Local listing') { optioner.location "local" } opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c } end o.loaded_clouds.each do |cloud| with_cloud(cloud) do vputs header("Maintaining cloud #{name}") log.warn "Maintaining cloud" log.warn rules_values if !minimum_number_of_instances_are_running? vputs "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}" vputs "Launching new instance" launch_minimum_number_of_instances elsif maximum_number_of_instances_are_running? vputs "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}" vputs "Shutting down non-master instance" contract_cloud_if_necessary( testing ? true : false ) end vputs "Cloud is maintained" end end