class Kontena::Cli::Services::ExecCommand
Public Instance Methods
execute()
click to toggle source
# File lib/kontena/cli/services/exec_command.rb, line 39 def execute exit_with_error "the input device is not a TTY" if tty? && !STDIN.tty? exit_with_error "--interactive cannot be used with --all" if all? && interactive? service_containers = client.get("services/#{parse_service_id(name)}/containers")['containers'] service_containers.sort_by! { |container| container['instance_number'] } running_containers = service_containers.select{|container| container['status'] == 'running' } exit_with_error "Service #{name} does not have any running containers" if running_containers.empty? if all? ret = true service_containers.each do |container| if container['status'] == 'running' if !execute_container(container) ret = false end else warning "Service #{name} container #{container['name']} is #{container['status']}, skipping" end end return ret elsif instance if !(container = service_containers.find{|c| c['instance_number'] == instance}) exit_with_error "Service #{name} does not have container instance #{instance}" elsif container['status'] != 'running' exit_with_error "Service #{name} container #{container['name']} is not running, it is #{container['status']}" else execute_container(container) end else execute_container(running_containers.first) end end
execute_container(container)
click to toggle source
@param [Hash] container @raise [SystemExit] if exec exits with non-zero status, and not –skip @return [true] exit exit status zero @return [false] exit exit status non-zero and –skip
# File lib/kontena/cli/services/exec_command.rb, line 88 def execute_container(container) maybe_spinner "Executing command on #{container['name']}" do exit_status = container_exec(container['id'], self.cmd_list, interactive: interactive?, shell: shell?, tty: tty?, ) raise ExecExit.new(exit_status) unless exit_status.zero? end rescue ExecExit => exc if skip? return false else exit exc.exit_status end else return true end
maybe_spinner(msg) { || ... }
click to toggle source
Run block with spinner by default if –all, or when using –verbose. Do not use spinner if –silent.
# File lib/kontena/cli/services/exec_command.rb, line 76 def maybe_spinner(msg, &block) if (all? || verbose?) && !silent? spinner(msg, &block) else yield end end