Class: Kontena::Plugin::DigitalOcean::Nodes::CreateCommand

Inherits:
Command
  • Object
show all
Includes:
Cli::Common, Cli::GridOptions, Prompts
Defined in:
lib/kontena/plugin/digital_ocean/nodes/create_command.rb

Instance Method Summary collapse

Methods included from Prompts

#ask_do_token, #ask_droplet_region, #ask_droplet_size, #ask_node

Instance Method Details

#ask_droplet_countObject



44
45
46
47
48
49
50
# File 'lib/kontena/plugin/digital_ocean/nodes/create_command.rb', line 44

def ask_droplet_count
  if self.count.nil?
    prompt.ask('How many droplets?: ', default: 1)
  else
    self.count
  end
end

#executeObject



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
# File 'lib/kontena/plugin/digital_ocean/nodes/create_command.rb', line 17

def execute
  require_api_url
  require_current_grid

  do_token = ask_do_token

  require_relative '../../../machine/digital_ocean'

  do_region = ask_droplet_region(do_token)
  do_size = ask_droplet_size(do_token, do_region)
  do_count = ask_droplet_count

  grid = fetch_grid
  provisioner = provisioner(client(require_token), do_token)
  provisioner.run!(
    master_uri: api_url,
    grid_token: grid['token'],
    grid: current_grid,
    ssh_key: ssh_key,
    name: name,
    size: do_size,
    count: do_count,
    region: do_region,
    version: version
  )
end

#fetch_gridHash

Returns:

  • (Hash)


59
60
61
# File 'lib/kontena/plugin/digital_ocean/nodes/create_command.rb', line 59

def fetch_grid
  client(require_token).get("grids/#{current_grid}")
end

#provisioner(client, token) ⇒ Object

Parameters:

  • client (Kontena::Client)
  • token (String)


54
55
56
# File 'lib/kontena/plugin/digital_ocean/nodes/create_command.rb', line 54

def provisioner(client, token)
  Kontena::Machine::DigitalOcean::NodeProvisioner.new(client, token)
end