Sha256: e41de3eed6f5a4fcadd158bc370615b9916739a004cfaa4319f325640d058a4e

Contents?: true

Size: 1.51 KB

Versions: 1

Compression:

Stored size: 1.51 KB

Contents

class Stack < CloudstackCli::Base

	desc "create STACKFILE", "create a stack of servers"
  def create(stackfile)
  	stack = parse_stackfile(stackfile)
    say "Crate stack #{stack["name"]}..."
    puts
    stack["servers"].each do |server|
      server["name"].split(', ').each do |name|
        CloudstackCli::Helper.new(options[:config]).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
  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

1 entries across 1 versions & 1 rubygems

Version Path
cloudstack-cli-0.1.2 lib/cloudstack-cli/commands/stack.rb