Sha256: 41835b8f885ffc42fd4cc72227882c5848c9630ae0ece721dabe5db7a5c30912

Contents?: true

Size: 1.61 KB

Versions: 7

Compression:

Stored size: 1.61 KB

Contents

class Stack < CloudstackCli::Base
	include CloudstackCli::Helper

	desc "create STACKFILE", "create a stack of servers"
  def create(stackfile)
  	stack = parse_stackfile(stackfile)
    say "Create stack #{stack["name"]}..."
    threads = []
    stack["servers"].each do |server|
      server["name"].split(', ').each_with_index do |name, i|
        threads << Thread.new(i) {
          bootstrap_server(
            name,
            server["zone"] || stack["zone"],
            server["template"],
            server["offering"],
            server["networks"] ? server["networks"].split(', ') : nil,
            server["port_rules"] ? server["port_rules"].split(', ') : nil,
            stack["project"]
          )
        }
      end
    end
    threads.each {|t| t.join }
  end

  desc "destroy STACKFILE", "destroy a stack of servers"
  option :force,
    description: "destroy without asking",
    type: :boolean,
    default: false,
    aliases: '-f'
  def destroy(stackfile)
    stack = parse_stackfile(stackfile)
    servers = []
    server = stack["servers"].collect do |server|
      server["name"].split(', ').each {|name| servers << name}
    end
    say "Destroy stack #{stack["name"]}...", :yellow
    invoke "server:destroy", servers, project: stack["project"], force: options[:force]
  end

  no_commands do
    def parse_stackfile(stackfile)
      begin
        return JSON.parse File.read(stackfile)
      rescue SystemCallError
        $stderr.puts "Can't find the stack file #{stackfile}."
      rescue JSON::ParserError => e
        $stderr.puts "Error parsing json file.\n#{e.message}."
        exit
      end
    end
  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cloudstack-cli-0.2.1 lib/cloudstack-cli/commands/stack.rb
cloudstack-cli-0.2.0 lib/cloudstack-cli/commands/stack.rb
cloudstack-cli-0.1.7 lib/cloudstack-cli/commands/stack.rb
cloudstack-cli-0.1.6 lib/cloudstack-cli/commands/stack.rb
cloudstack-cli-0.1.5 lib/cloudstack-cli/commands/stack.rb
cloudstack-cli-0.1.4 lib/cloudstack-cli/commands/stack.rb
cloudstack-cli-0.1.3 lib/cloudstack-cli/commands/stack.rb