Class: Kontena::Cli::Nodes::RemoveCommand

Inherits:
Kontena::Command show all
Includes:
Common, GridOptions
Defined in:
lib/kontena/cli/nodes/remove_command.rb

Instance Attribute Summary

Attributes inherited from Kontena::Command

#arguments, #exit_code, #result

Instance Method Summary collapse

Methods included from GridOptions

included

Methods included from Common

#access_token=, #add_master, #any_key_to_continue, #any_key_to_continue_with_timeout, #api_url, #api_url=, #caret, #clear_current_grid, #client, #cloud_auth?, #cloud_client, #config, #confirm, #confirm_command, #current_grid, #current_master_index, #debug?, #display_account_login_info, #display_login_info, display_logo, #display_master_login_info, #error, exit_with_error, #kontena_account, #logger, #pastel, #print, #prompt, #puts, #require_api_url, #require_token, #reset_client, #reset_cloud_client, #running_quiet?, #running_silent?, #running_verbose?, #spin_if, #spinner, #sprint, #sputs, #stdin_input, #use_refresh_token, #vfakespinner, #vputs, #vspinner, #warning

Methods inherited from Kontena::Command

banner, callback_matcher, #help_requested?, inherited, #instance, load_subcommand, requires_current_account_token, requires_current_account_token?, requires_current_grid, requires_current_grid?, requires_current_master, requires_current_master?, requires_current_master_token, requires_current_master_token?, #run, #run_callbacks, #verify_current_account_token, #verify_current_grid, #verify_current_master, #verify_current_master_token

Instance Method Details

#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
# File 'lib/kontena/cli/nodes/remove_command.rb', line 9

def execute
  require_api_url
  require_current_grid
  token = require_token

  nodes.each do |node_name|
    node = client(token).get("nodes/#{current_grid}/#{node_name}")
    provider = Array(node["labels"]).find{ |l| l.start_with?('provider=')}.to_s.split('=').last
    if node['connected'] && provider
      plugin = provider == 'kontena' ? 'cloud' : provider
      exit_with_error "Node #{node['name']} is still connected. You should terminate the node instead: kontena #{plugin} node terminate #{node['name']}"
    elsif node['connected']
      exit_with_error "Node #{node['name']} is still connected. You must terminate the node before removing it"
    else
      warning "Removing a node from the grid does not terminate the host machine from any cloud provider, so your cloud provider may continue to bill you for the machine until you terminate it"
    end

    confirm_command(node_name) unless forced?

    spinner "Removing #{pastel.cyan(node_name)} node from #{pastel.cyan(current_grid)} grid " do
      client(token).delete("nodes/#{node['id']}")
    end
  end
end