Class: Kontena::Cli::Services::CreateCommand

Inherits:
Kontena::Command show all
Includes:
Common, GridOptions, ServicesHelper
Defined in:
lib/kontena/cli/services/create_command.rb

Instance Attribute Summary

Attributes inherited from Kontena::Command

#arguments, #exit_code, #result

Instance Method Summary collapse

Methods included from ServicesHelper

#create_service, #delete_service, #deploy_service, #get_service, #health_status, #health_status_icon, #int_to_filesize, #parse_build_args, #parse_container_name, #parse_deploy_opts, #parse_health_check, #parse_image, #parse_links, #parse_log_opts, #parse_memory, #parse_ports, #parse_relative_time, #parse_secrets, #parse_service_id, #render_service_deploy_instances, #restart_service, #scale_service, #show_service, #show_service_containers, #show_service_instances, #start_service, #stop_service, #update_service, #wait_for_deploy_to_finish

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 included from GridOptions

included

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



52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/kontena/cli/services/create_command.rb', line 52

def execute
  require_api_url
  token = require_token
  data = {
    name: name,
    image: image,
    stateful: stateful?
  }
  data.merge!(parse_service_data_from_options)
  spinner "Creating #{pastel.cyan(name)} service " do
    create_service(token, current_grid, data)
  end
end

#parse_service_data_from_optionsHash

parse given options to hash



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/kontena/cli/services/create_command.rb', line 69

def parse_service_data_from_options
  data = {}
  data[:ports] = parse_ports(ports_list) unless ports_list.empty?
  data[:links] = parse_links(link_list) unless link_list.empty?
  data[:volumes] = volume_list unless volume_list.empty?
  data[:volumes_from] = volumes_from_list unless volumes_from_list.empty?
  data[:memory] = parse_memory(memory) if memory
  data[:memory_swap] = parse_memory(memory_swap) if memory_swap
  data[:shm_size] = parse_memory(shm_size) if shm_size
  data[:cpus] = cpus if cpus
  data[:cpu_shares] = cpu_shares if cpu_shares
  data[:affinity] = affinity_list unless affinity_list.empty?
  data[:env] = env_list unless env_list.empty?
  data[:secrets] = parse_secrets(secret_list)
  data[:container_count] = instances if instances
  data[:cmd] = Shellwords.split(cmd) if cmd
  data[:user] = user if user
  data[:image] = parse_image(image) if image
  data[:privileged] = privileged?
  data[:cap_add] = cap_add_list unless cap_add_list.empty?
  data[:cap_drop] = cap_drop_list unless cap_drop_list.empty?
  data[:net] = net if net
  data[:log_driver] = log_driver if log_driver
  data[:log_opts] = parse_log_opts(log_opt_list)
  data[:strategy] = deploy_strategy if deploy_strategy
  deploy_opts = parse_deploy_opts
  data[:deploy_opts] = deploy_opts unless deploy_opts.empty?
  health_check = parse_health_check
  data[:health_check] = health_check unless health_check.empty?
  data[:pid] = pid if pid
  data[:stop_signal] = stop_signal if stop_signal
  data[:stop_grace_period] = stop_timeout if stop_timeout
  data[:read_only] = read_only?
  data
end