class Kontena::Cli::Stacks::RemoveCommand

Public Instance Methods

confirm_remove(stack, name) click to toggle source

@param stack [Hash] @param name [String]

# File lib/kontena/cli/stacks/remove_command.rb, line 38
def confirm_remove(stack, name)
  if stack['parent']
    puts "#{pastel.yellow('Warning:')} The stack #{pastel.cyan(stack['parent']['name'])} depends on stack #{name}"
  end
  if !keep_dependencies? && stack['children'] && !stack['children'].empty?
    puts "#{pastel.yellow('Warning:')} The stack #{pastel.cyan(name)} has dependencies that will be removed:"
    stack['children'].each do |child|
      puts "- #{pastel.yellow(child['name'])}"
    end
  end
  confirm_command(name)
end
execute() click to toggle source
# File lib/kontena/cli/stacks/remove_command.rb, line 18
def execute
  names.each do |name|
    stack = fetch_stack(name)
    confirm_remove(stack, name) unless forced?
    unless keep_dependencies?
      stack.fetch('children', Hash.new).each do |child_stack|
        caret"Removing dependency #{pastel.cyan(child_stack['name'])}"
        Kontena.run!(['stack', 'remove', '--force', child_stack['name']])
      end
    end

    spinner "Removing stack #{pastel.cyan(name)} " do
      remove_stack(name)
      wait_stack_removal(name)
    end
  end
end
fetch_stack(name) click to toggle source

@param name [String] @return [Hash]

# File lib/kontena/cli/stacks/remove_command.rb, line 53
def fetch_stack(name)
  client.get("stacks/#{current_grid}/#{name}")
end
remove_stack(name) click to toggle source

@param name [String] @return [Hash]

# File lib/kontena/cli/stacks/remove_command.rb, line 59
def remove_stack(name)
  client.delete("stacks/#{current_grid}/#{name}")
end
wait_stack_removal(name) click to toggle source

@param name [String]

# File lib/kontena/cli/stacks/remove_command.rb, line 64
def wait_stack_removal(name)
  removed = false
  until removed == true
    begin
      client.get("stacks/#{current_grid}/#{name}")
      sleep 1
    rescue Kontena::Errors::StandardError => exc
      if exc.status == 404
        removed = true
      else
        raise exc
      end
    end
  end
end