Class: SimpleDeploy::CLI::Execute

Inherits:
Object
  • Object
show all
Includes:
Shared
Defined in:
lib/simple_deploy/cli/execute.rb

Instance Method Summary collapse

Methods included from Shared

#command_name, #parse_attributes, #rescue_stackster_exceptions_and_exit, #valid_options?

Instance Method Details

#command_summaryObject



66
67
68
# File 'lib/simple_deploy/cli/execute.rb', line 66

def command_summary
  'Execute command on given stack(s)'
end

#executeObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/simple_deploy/cli/execute.rb', line 9

def execute
  @opts = Trollop::options do
    version SimpleDeploy::VERSION
    banner <<-EOS

Execute command on given stack(s).

simple_deploy execute -n STACK_NAME -n STACK_NAME -e ENVIRONMENT -c "COMMAND"

Using Internal IP for SSH:

Simple deploy defaults to using the public IP when ssh'ng to stacks. This option instructs it
to use the private IP, which is needed when ssh'ng from one stack to another.

simple_deploy deploy -n STACK_NAME -n STACK_NAME -e ENVIRONMENT -i

EOS
    opt :help, "Display Help"
    opt :attributes, "= seperated attribute and it's value", :type  => :string,
                                                             :multi => true
    opt :command, "Command to execute.", :type => :string
    opt :environment, "Set the target environment", :type => :string
    opt :internal, "Use internal IP for ssh commands"
    opt :log_level, "Log level:  debug, info, warn, error", :type    => :string,
                                                            :default => 'info'
    opt :name, "Stack name(s) of stack to deploy", :type => :string,
                                                   :multi => true
    opt :sudo, "Execute command with sudo"
  end

  valid_options? :provided => @opts,
                 :required => [:environment, :name]

  @opts[:name].each do |name|
    notifier = Notifier.new :stack_name  => name,
                            :environment => @opts[:environment],
                            :logger      => logger

    stack = Stack.new :environment => @opts[:environment],
                      :name        => name,
                      :logger      => logger,
                      :internal    => @opts[:internal]

    begin
      stack.execute :command => @opts[:command],
                    :sudo    => @opts[:sudo]
    rescue SimpleDeploy::Exceptions::NoInstances
      logger.error "Stack has no running instances."
      exit 1
    end
  end
end

#loggerObject



62
63
64
# File 'lib/simple_deploy/cli/execute.rb', line 62

def logger
  @logger ||= SimpleDeployLogger.new :log_level => @opts[:log_level]
end