morpheus-cli 5.5.2.1 → 5.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/Dockerfile +1 -1
  4. data/README.md +57 -4
  5. data/Rakefile +9 -0
  6. data/bin/morpheus +4 -4
  7. data/lib/morpheus/api/api_client.rb +8 -2
  8. data/lib/morpheus/api/archive_buckets_interface.rb +1 -1
  9. data/lib/morpheus/api/archive_files_interface.rb +3 -3
  10. data/lib/morpheus/api/clients_interface.rb +2 -2
  11. data/lib/morpheus/api/clusters_interface.rb +8 -1
  12. data/lib/morpheus/api/containers_interface.rb +29 -16
  13. data/lib/morpheus/api/custom_instance_types_interface.rb +0 -2
  14. data/lib/morpheus/api/doc_interface.rb +8 -6
  15. data/lib/morpheus/api/file_copy_request_interface.rb +1 -1
  16. data/lib/morpheus/api/health_interface.rb +1 -1
  17. data/lib/morpheus/api/image_builder_interface.rb +3 -3
  18. data/lib/morpheus/api/instances_interface.rb +25 -0
  19. data/lib/morpheus/api/logs_interface.rb +2 -4
  20. data/lib/morpheus/api/monitoring_interface.rb +6 -6
  21. data/lib/morpheus/api/packages_interface.rb +1 -1
  22. data/lib/morpheus/api/reports_interface.rb +1 -1
  23. data/lib/morpheus/api/servers_interface.rb +9 -1
  24. data/lib/morpheus/api/storage_providers_interface.rb +2 -2
  25. data/lib/morpheus/api/virtual_images_interface.rb +1 -1
  26. data/lib/morpheus/api.rb +2 -0
  27. data/lib/morpheus/benchmarking.rb +1 -1
  28. data/lib/morpheus/cli/cli_command.rb +69 -36
  29. data/lib/morpheus/cli/cli_registry.rb +19 -10
  30. data/lib/morpheus/cli/commands/access_token_command.rb +1 -1
  31. data/lib/morpheus/cli/commands/apps.rb +1 -1
  32. data/lib/morpheus/cli/commands/archives_command.rb +25 -33
  33. data/lib/morpheus/cli/commands/blueprints_command.rb +10 -21
  34. data/lib/morpheus/cli/commands/boot_scripts_command.rb +2 -2
  35. data/lib/morpheus/cli/commands/cat_command.rb +1 -1
  36. data/lib/morpheus/cli/commands/catalog_item_types_command.rb +12 -12
  37. data/lib/morpheus/cli/commands/clouds.rb +3 -3
  38. data/lib/morpheus/cli/commands/clusters.rb +154 -3
  39. data/lib/morpheus/cli/commands/containers_command.rb +398 -253
  40. data/lib/morpheus/cli/commands/deployments.rb +1 -1
  41. data/lib/morpheus/cli/commands/deploys.rb +9 -9
  42. data/lib/morpheus/cli/commands/doc.rb +15 -16
  43. data/lib/morpheus/cli/commands/execution_request_command.rb +2 -2
  44. data/lib/morpheus/cli/commands/file_copy_request_command.rb +5 -5
  45. data/lib/morpheus/cli/commands/groups.rb +2 -2
  46. data/lib/morpheus/cli/commands/health_command.rb +4 -4
  47. data/lib/morpheus/cli/commands/hosts.rb +43 -5
  48. data/lib/morpheus/cli/commands/image_builder_command.rb +1 -1
  49. data/lib/morpheus/cli/commands/instances.rb +419 -148
  50. data/lib/morpheus/cli/commands/integrations_command.rb +22 -20
  51. data/lib/morpheus/cli/commands/key_pairs.rb +2 -2
  52. data/lib/morpheus/cli/commands/library_container_scripts_command.rb +2 -2
  53. data/lib/morpheus/cli/commands/library_container_templates_command.rb +2 -2
  54. data/lib/morpheus/cli/commands/library_instance_types_command.rb +3 -3
  55. data/lib/morpheus/cli/commands/library_spec_templates_command.rb +2 -2
  56. data/lib/morpheus/cli/commands/login.rb +1 -1
  57. data/lib/morpheus/cli/commands/man_command.rb +32 -18
  58. data/lib/morpheus/cli/commands/packages_command.rb +11 -11
  59. data/lib/morpheus/cli/commands/plugins.rb +1 -1
  60. data/lib/morpheus/cli/commands/policies_command.rb +4 -4
  61. data/lib/morpheus/cli/commands/preseed_scripts_command.rb +2 -2
  62. data/lib/morpheus/cli/commands/remote.rb +1 -1
  63. data/lib/morpheus/cli/commands/reports_command.rb +3 -3
  64. data/lib/morpheus/cli/commands/roles.rb +6 -3
  65. data/lib/morpheus/cli/commands/security_groups.rb +1 -1
  66. data/lib/morpheus/cli/commands/shell.rb +40 -62
  67. data/lib/morpheus/cli/commands/snapshots.rb +3 -5
  68. data/lib/morpheus/cli/commands/source_command.rb +8 -16
  69. data/lib/morpheus/cli/commands/storage_providers_command.rb +7 -7
  70. data/lib/morpheus/cli/commands/tasks.rb +2 -2
  71. data/lib/morpheus/cli/commands/vdi_pools_command.rb +6 -6
  72. data/lib/morpheus/cli/commands/view.rb +5 -1
  73. data/lib/morpheus/cli/commands/whitelabel_settings_command.rb +4 -4
  74. data/lib/morpheus/cli/commands/whoami.rb +2 -2
  75. data/lib/morpheus/cli/credentials.rb +30 -8
  76. data/lib/morpheus/cli/dot_file.rb +8 -15
  77. data/lib/morpheus/cli/error_handler.rb +16 -0
  78. data/lib/morpheus/cli/errors.rb +8 -1
  79. data/lib/morpheus/cli/mixins/print_helper.rb +17 -13
  80. data/lib/morpheus/cli/mixins/rest_command.rb +18 -18
  81. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +12 -12
  82. data/lib/morpheus/cli/option_parser.rb +5 -1
  83. data/lib/morpheus/cli/option_types.rb +59 -12
  84. data/lib/morpheus/cli/version.rb +1 -1
  85. data/lib/morpheus/cli.rb +26 -16
  86. data/lib/morpheus/ext/rest_client.rb +3 -2
  87. data/lib/morpheus/formatters.rb +1 -1
  88. data/lib/morpheus/logging.rb +4 -4
  89. data/lib/morpheus/morpkg.rb +4 -4
  90. data/lib/morpheus/rest_client.rb +2 -2
  91. data/lib/morpheus/routes.rb +2 -2
  92. data/lib/morpheus/terminal.rb +65 -16
  93. data/lib/morpheus.rb +1 -1
  94. data/morpheus-cli.gemspec +1 -0
  95. data/test/api/containers_interface_test.rb +68 -0
  96. data/test/api/doc_interface_test.rb +35 -0
  97. data/test/api/instances_interface_test.rb +22 -0
  98. data/test/api/whoami_interface_test.rb +14 -0
  99. data/test/cli/access_token_test.rb +36 -0
  100. data/test/cli/auth_test.rb +82 -0
  101. data/test/cli/cli_test.rb +48 -0
  102. data/test/cli/containers_test.rb +92 -0
  103. data/test/cli/doc_test.rb +35 -0
  104. data/test/cli/help_test.rb +25 -0
  105. data/test/cli/instances_test.rb +36 -0
  106. data/test/cli/man_test.rb +14 -0
  107. data/test/cli/remote_test.rb +89 -0
  108. data/test/cli/roles_test.rb +34 -0
  109. data/test/cli/shell_test.rb +81 -0
  110. data/test/cli/version_test.rb +23 -0
  111. data/test/cli/view_test.rb +55 -0
  112. data/test/cli/whoami_test.rb +17 -0
  113. data/test/morpheus_test.rb +16 -0
  114. data/test/test_case.rb +338 -0
  115. data/test/test_config.rb +137 -0
  116. data/test/test_data_helper.rb +97 -0
  117. metadata +61 -3
@@ -661,7 +661,7 @@ EOT
661
661
  Dir.chdir(base_working_dir)
662
662
  fmap = nil
663
663
  full_file_pattern = File.expand_path(file_pattern)
664
- if File.exists?(full_file_pattern)
664
+ if File.exist?(full_file_pattern)
665
665
  if File.directory?(full_file_pattern)
666
666
  fmap = {'path' => full_file_pattern, 'pattern' => '**/*'}
667
667
  else
@@ -121,7 +121,7 @@ EOT
121
121
  config_map = parse_result[:data]
122
122
  if config_map.nil?
123
123
  # todo: bubble up JSON.parse error message
124
- raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:err]}"
124
+ raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:error]}"
125
125
  else
126
126
  params['config'] = config_map
127
127
  options[:options]['config'] = params['config'] # or file_content
@@ -131,7 +131,7 @@ EOT
131
131
  options[:config_file] = val.to_s
132
132
  file_content = nil
133
133
  full_filename = File.expand_path(options[:config_file])
134
- if File.exists?(full_filename)
134
+ if File.exist?(full_filename)
135
135
  file_content = File.read(full_filename)
136
136
  else
137
137
  print_red_alert "File not found: #{full_filename}"
@@ -141,7 +141,7 @@ EOT
141
141
  config_map = parse_result[:data]
142
142
  if config_map.nil?
143
143
  # todo: bubble up JSON.parse error message
144
- raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:err]}"
144
+ raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:error]}"
145
145
  #raise_command_error "Failed to parse config as valid YAML or JSON."
146
146
  else
147
147
  params['config'] = config_map
@@ -215,7 +215,7 @@ EOT
215
215
  config_map = parse_result[:data]
216
216
  if config_map.nil?
217
217
  # todo: bubble up JSON.parse error message
218
- raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:err]}"
218
+ raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:error]}"
219
219
  else
220
220
  params['config'] = config_map
221
221
  options[:options]['config'] = params['config'] # or file_content
@@ -225,7 +225,7 @@ EOT
225
225
  options[:config_file] = val.to_s
226
226
  file_content = nil
227
227
  full_filename = File.expand_path(options[:config_file])
228
- if File.exists?(full_filename)
228
+ if File.exist?(full_filename)
229
229
  file_content = File.read(full_filename)
230
230
  else
231
231
  print_red_alert "File not found: #{full_filename}"
@@ -235,7 +235,7 @@ EOT
235
235
  config_map = parse_result[:data]
236
236
  if config_map.nil?
237
237
  # todo: bubble up JSON.parse error message
238
- raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:err]}"
238
+ raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:error]}"
239
239
  #raise_command_error "Failed to parse config as valid YAML or JSON."
240
240
  else
241
241
  params['config'] = config_map
@@ -329,7 +329,7 @@ EOT
329
329
  config_map = parse_result[:data]
330
330
  if config_map.nil?
331
331
  # todo: bubble up JSON.parse error message
332
- raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:err]}"
332
+ raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:error]}"
333
333
  else
334
334
  params['config'] = config_map
335
335
  options[:options]['config'] = params['config'] # or file_content
@@ -339,7 +339,7 @@ EOT
339
339
  options[:config_file] = val.to_s
340
340
  file_content = nil
341
341
  full_filename = File.expand_path(options[:config_file])
342
- if File.exists?(full_filename)
342
+ if File.exist?(full_filename)
343
343
  file_content = File.read(full_filename)
344
344
  else
345
345
  print_red_alert "File not found: #{full_filename}"
@@ -349,7 +349,7 @@ EOT
349
349
  config_map = parse_result[:data]
350
350
  if config_map.nil?
351
351
  # todo: bubble up JSON.parse error message
352
- raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:err]}"
352
+ raise_command_error "Failed to parse config as YAML or JSON. Error: #{parse_result[:error]}"
353
353
  #raise_command_error "Failed to parse config as valid YAML or JSON."
354
354
  else
355
355
  params['config'] = config_map
@@ -6,10 +6,9 @@ class Morpheus::Cli::Doc
6
6
  include Morpheus::Cli::CliCommand
7
7
 
8
8
  set_command_name :'doc'
9
- #set_command_name :'access'
10
9
  register_subcommands :list
11
- register_subcommands :get => :swagger
12
- register_subcommands :download => :download_swagger
10
+ register_subcommands :get => :openapi
11
+ register_subcommands :download => :download_openapi
13
12
 
14
13
  # hidden until doc complete (or close to it)
15
14
  set_command_hidden
@@ -68,12 +67,12 @@ EOT
68
67
  return exit_code, err
69
68
  end
70
69
 
71
- def swagger(args)
70
+ def openapi(args)
72
71
  exit_code, err = 0, nil
73
72
  params, options = {}, {}
74
73
  optparse = Morpheus::Cli::OptionParser.new do |opts|
75
74
  opts.banner = subcommand_usage()
76
- opts.on(nil, "--refresh", "Refresh the document. By default the swagger.yml and swagger.json are cached by the server.") do
75
+ opts.on(nil, "--refresh", "Refresh the document. By default the openapi.yml and openapi.json are cached by the server.") do
77
76
  params['refresh'] = true
78
77
  end
79
78
  opts.on('-g', '--generate', "Alias for --refresh") do
@@ -81,7 +80,7 @@ EOT
81
80
  end
82
81
  build_standard_get_options(opts, options, [], [:csv])
83
82
  opts.footer = <<-EOT
84
- Print the Morpheus API Swagger Documentation (openapi).
83
+ Print the Morpheus API OpenAPI Documentation (swagger).
85
84
  The default format is JSON. Supports json or yaml.
86
85
  EOT
87
86
  end
@@ -97,13 +96,13 @@ EOT
97
96
  @doc_interface.setopts(options)
98
97
  if options[:dry_run]
99
98
  params['format'] = openapi_format
100
- print_dry_run @doc_interface.dry.swagger(params)
99
+ print_dry_run @doc_interface.dry.openapi(params)
101
100
  return 0, nil
102
101
  end
103
- json_response = @doc_interface.swagger(params)
102
+ json_response = @doc_interface.openapi(params)
104
103
  # default format is to print header and json
105
104
  render_response(json_response, options) do
106
- title = "Morpheus API swagger.#{openapi_format}"
105
+ title = "Morpheus API openapi.#{openapi_format}"
107
106
  print_h1 title, options
108
107
  print cyan
109
108
  print as_json(json_response, options)
@@ -112,7 +111,7 @@ EOT
112
111
  return exit_code, err
113
112
  end
114
113
 
115
- def download_swagger(args)
114
+ def download_openapi(args)
116
115
  exit_code, err = 0, nil
117
116
  params, options = {}, {}
118
117
  optparse = Morpheus::Cli::OptionParser.new do |opts|
@@ -122,7 +121,7 @@ EOT
122
121
  options[:yaml] = true
123
122
  options[:format] = :yaml
124
123
  end
125
- opts.on(nil, "--refresh", "Refresh the document. By default the swagger.yml and swagger.json are cached by the server.") do
124
+ opts.on(nil, "--refresh", "Refresh the document. By default the openapi.yml and openapi.json are cached by the server.") do
126
125
  params['refresh'] = true
127
126
  end
128
127
  opts.on('-g', '--generate', "Alias for --refresh") do
@@ -136,7 +135,7 @@ EOT
136
135
  end
137
136
  build_common_options(opts, options, [:dry_run, :quiet, :remote])
138
137
  opts.footer = <<-EOT
139
- Download the Morpheus API Swagger Documentation (openapi).
138
+ Download the Morpheus API OpenAPI Documentation (swagger).
140
139
  [local-file] is required. This is the full local filepath for the downloaded file.
141
140
  The default format is JSON. Supports json or yaml.
142
141
  EOT
@@ -159,17 +158,17 @@ EOT
159
158
  # execute the api request
160
159
  @doc_interface.setopts(options)
161
160
  if options[:dry_run]
162
- print_dry_run @doc_interface.dry.download_swagger(outfile, params)
161
+ print_dry_run @doc_interface.dry.download_openapi(outfile, params)
163
162
  return 0, nil
164
163
  end
165
- print cyan + "Downloading swagger.#{openapi_format} to #{outfile} ... " if !options[:quiet]
166
- http_response = @doc_interface.download_swagger(outfile, params)
164
+ print cyan + "Downloading openapi.#{openapi_format} to #{outfile} ... " if !options[:quiet]
165
+ http_response = @doc_interface.download_openapi(outfile, params)
167
166
  if http_response.code.to_i == 200
168
167
  print green + "SUCCESS" + reset + "\n" if !options[:quiet]
169
168
  return 0, nil
170
169
  else
171
170
  print red + "ERROR" + reset + " HTTP #{http_response.code}" + "\n" if !options[:quiet]
172
- if File.exists?(outfile) && File.file?(outfile)
171
+ if File.exist?(outfile) && File.file?(outfile)
173
172
  Morpheus::Logging::DarkPrinter.puts "Deleting bad file download: #{outfile}" if Morpheus::Logging.debug?
174
173
  File.delete(outfile)
175
174
  end
@@ -161,7 +161,7 @@ class Morpheus::Cli::ExecutionRequestCommand
161
161
  end
162
162
  opts.on('--file FILE', "File containing the script. This can be used instead of --script" ) do |filename|
163
163
  full_filename = File.expand_path(filename)
164
- if File.exists?(full_filename)
164
+ if File.exist?(full_filename)
165
165
  script_content = File.read(full_filename)
166
166
  else
167
167
  print_red_alert "File not found: #{full_filename}"
@@ -249,7 +249,7 @@ class Morpheus::Cli::ExecutionRequestCommand
249
249
  end
250
250
  opts.on('--file FILE', "File containing the script. This can be used instead of --script" ) do |filename|
251
251
  full_filename = File.expand_path(filename)
252
- if File.exists?(full_filename)
252
+ if File.exist?(full_filename)
253
253
  script_content = File.read(full_filename)
254
254
  else
255
255
  print_red_alert "File not found: #{full_filename}"
@@ -190,7 +190,7 @@ class Morpheus::Cli::FileCopyRequestCommand
190
190
  filename = v_prompt['file']
191
191
  end
192
192
  full_filename = File.expand_path(filename)
193
- if !File.exists?(full_filename)
193
+ if !File.exist?(full_filename)
194
194
  print_red_alert "File not found: #{full_filename}"
195
195
  return 1
196
196
  end
@@ -266,12 +266,12 @@ class Morpheus::Cli::FileCopyRequestCommand
266
266
  filename = args[1]
267
267
  end
268
268
  outfile = File.expand_path(filename)
269
- if Dir.exists?(outfile)
269
+ if Dir.exist?(outfile)
270
270
  print_red_alert "[file] is invalid. It is the name of an existing directory: #{outfile}"
271
271
  return 1
272
272
  end
273
273
  destination_dir = File.dirname(outfile)
274
- if !Dir.exists?(destination_dir)
274
+ if !Dir.exist?(destination_dir)
275
275
  if do_mkdir
276
276
  print cyan,"Creating local directory #{destination_dir}",reset,"\n"
277
277
  FileUtils.mkdir_p(destination_dir)
@@ -280,7 +280,7 @@ class Morpheus::Cli::FileCopyRequestCommand
280
280
  return 1
281
281
  end
282
282
  end
283
- if File.exists?(outfile)
283
+ if File.exist?(outfile)
284
284
  if do_overwrite
285
285
  # uhh need to be careful wih the passed filepath here..
286
286
  # don't delete, just overwrite.
@@ -320,7 +320,7 @@ class Morpheus::Cli::FileCopyRequestCommand
320
320
  print red + "ERROR" + reset + " HTTP #{http_response.code}" + "\n"
321
321
  end
322
322
  # F it, just remove a bad result
323
- if File.exists?(outfile) && File.file?(outfile)
323
+ if File.exist?(outfile) && File.file?(outfile)
324
324
  Morpheus::Logging::DarkPrinter.puts "Deleting bad file download: #{outfile}" if Morpheus::Logging.debug?
325
325
  File.delete(outfile)
326
326
  end
@@ -559,7 +559,7 @@ EOT
559
559
  build_option_type_options(opts, options, update_wiki_page_option_types)
560
560
  opts.on('--file FILE', "File containing the wiki content. This can be used instead of --content") do |filename|
561
561
  full_filename = File.expand_path(filename)
562
- if File.exists?(full_filename)
562
+ if File.exist?(full_filename)
563
563
  params['content'] = File.read(full_filename)
564
564
  else
565
565
  print_red_alert "File not found: #{full_filename}"
@@ -732,7 +732,7 @@ public
732
732
 
733
733
  def save_groups(groups_map)
734
734
  fn = groups_file_path
735
- if !Dir.exists?(File.dirname(fn))
735
+ if !Dir.exist?(File.dirname(fn))
736
736
  FileUtils.mkdir_p(File.dirname(fn))
737
737
  end
738
738
  File.open(fn, 'w') {|f| f.write groups_map.to_yaml } #Store
@@ -610,11 +610,11 @@ class Morpheus::Cli::HealthCommand
610
610
  outfile = args[0]
611
611
  outfile = File.expand_path(outfile)
612
612
 
613
- if Dir.exists?(outfile)
613
+ if Dir.exist?(outfile)
614
614
  raise_command_error("[file] is invalid. It is the name of an existing directory: #{outfile}", args, optparse)
615
615
  end
616
616
  destination_dir = File.dirname(outfile)
617
- if !Dir.exists?(destination_dir)
617
+ if !Dir.exist?(destination_dir)
618
618
  if do_mkdir
619
619
  print cyan,"Creating local directory #{destination_dir}",reset,"\n"
620
620
  FileUtils.mkdir_p(destination_dir)
@@ -622,7 +622,7 @@ class Morpheus::Cli::HealthCommand
622
622
  raise_command_error("[file] is invalid. Directory not found: #{destination_dir}", args, optparse)
623
623
  end
624
624
  end
625
- if File.exists?(outfile)
625
+ if File.exist?(outfile)
626
626
  if do_overwrite
627
627
  # uhh need to be careful wih the passed filepath here..
628
628
  # don't delete, just overwrite.
@@ -654,7 +654,7 @@ class Morpheus::Cli::HealthCommand
654
654
  print red + "ERROR" + reset + " HTTP #{http_response.code}" + "\n"
655
655
  end
656
656
  # F it, just remove a bad result
657
- if File.exists?(outfile) && File.file?(outfile)
657
+ if File.exist?(outfile) && File.file?(outfile)
658
658
  Morpheus::Logging::DarkPrinter.puts "Deleting bad file download: #{outfile}" if Morpheus::Logging.debug?
659
659
  File.delete(outfile)
660
660
  end
@@ -7,7 +7,7 @@ class Morpheus::Cli::Hosts
7
7
  include Morpheus::Cli::LogsHelper
8
8
  set_command_name :hosts
9
9
  set_command_description "View and manage hosts (servers)."
10
- register_subcommands :list, :count, :get, :view, :stats, :add, :update, :remove, :logs, :start, :stop, :resize,
10
+ register_subcommands :list, :count, :get, :view, :stats, :add, :update, :remove, :logs, :start, :stop, :resize, :restart,
11
11
  :run_workflow, :make_managed, :upgrade_agent, :snapshots, :software, :software_sync, :update_network_label,
12
12
  {:'types' => :list_types},
13
13
  {:exec => :execution_request},
@@ -1243,6 +1243,44 @@ class Morpheus::Cli::Hosts
1243
1243
  end
1244
1244
  end
1245
1245
 
1246
+ def restart(args)
1247
+ options = {}
1248
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
1249
+ opts.banner = subcommand_usage("[name]")
1250
+ build_common_options(opts, options, [:auto_confirm, :quiet, :json, :dry_run, :remote])
1251
+ opts.footer = "Restart a host.\n" +
1252
+ "[name] is required. This is the name or id of a host."
1253
+ end
1254
+ optparse.parse!(args)
1255
+ if args.count < 1
1256
+ puts optparse
1257
+ exit 1
1258
+ end
1259
+ connect(options)
1260
+ begin
1261
+ server = find_host_by_name_or_id(args[0])
1262
+ unless options[:yes] || ::Morpheus::Cli::OptionTypes::confirm("Are you sure you would like to restart the server '#{server['name']}'?", options)
1263
+ exit 1
1264
+ end
1265
+ @servers_interface.setopts(options)
1266
+ if options[:dry_run]
1267
+ print_dry_run @servers_interface.dry.restart(server['id'])
1268
+ return
1269
+ end
1270
+ json_response = @servers_interface.restart(server['id'])
1271
+ if options[:json]
1272
+ print JSON.pretty_generate(json_response)
1273
+ print "\n"
1274
+ elsif !options[:quiet]
1275
+ print_green_success "Restarting #{server["name"]}"
1276
+ end
1277
+ rescue RestClient::Exception => e
1278
+ print_rest_exception(e, options)
1279
+ exit 1
1280
+ end
1281
+ end
1282
+
1283
+
1246
1284
  def resize(args)
1247
1285
  options = {}
1248
1286
  optparse = Morpheus::Cli::OptionParser.new do |opts|
@@ -1280,7 +1318,7 @@ class Morpheus::Cli::Hosts
1280
1318
  end
1281
1319
 
1282
1320
  # prompt for service plan
1283
- service_plans_json = @servers_interface.service_plans({zoneId: cloud_id, serverTypeId: server_type_id})
1321
+ service_plans_json = @servers_interface.service_plans({zoneId: cloud_id, serverTypeId: server_type_id, serverId: server['id']})
1284
1322
  service_plans = service_plans_json["plans"]
1285
1323
  service_plans_dropdown = service_plans.collect {|sp| {'name' => sp["name"], 'value' => sp["id"]} } # already sorted
1286
1324
  service_plans_dropdown.each do |plan|
@@ -1288,7 +1326,7 @@ class Morpheus::Cli::Hosts
1288
1326
  plan['name'] = "#{plan['name']} (current)"
1289
1327
  end
1290
1328
  end
1291
- plan_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'plan', 'type' => 'select', 'fieldLabel' => 'Plan', 'selectOptions' => service_plans_dropdown, 'required' => true, 'description' => 'Choose the appropriately sized plan for this server'}],options[:options])
1329
+ plan_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'plan', 'type' => 'select', 'fieldLabel' => 'Plan', 'selectOptions' => service_plans_dropdown, 'required' => true, 'defaultValue' => plan_id, 'description' => 'Choose the appropriately sized plan for this server'}],options[:options])
1292
1330
  service_plan = service_plans.find {|sp| sp["id"] == plan_prompt['plan'].to_i }
1293
1331
  payload[:server][:plan] = {id: service_plan["id"]}
1294
1332
 
@@ -1550,7 +1588,7 @@ class Morpheus::Cli::Hosts
1550
1588
  end
1551
1589
  opts.on('--file FILE', "File containing the script. This can be used instead of --script" ) do |filename|
1552
1590
  full_filename = File.expand_path(filename)
1553
- if File.exists?(full_filename)
1591
+ if File.exist?(full_filename)
1554
1592
  script_content = File.read(full_filename)
1555
1593
  else
1556
1594
  print_red_alert "File not found: #{full_filename}"
@@ -1883,7 +1921,7 @@ class Morpheus::Cli::Hosts
1883
1921
  build_option_type_options(opts, options, update_wiki_page_option_types)
1884
1922
  opts.on('--file FILE', "File containing the wiki content. This can be used instead of --content") do |filename|
1885
1923
  full_filename = File.expand_path(filename)
1886
- if File.exists?(full_filename)
1924
+ if File.exist?(full_filename)
1887
1925
  params['content'] = File.read(full_filename)
1888
1926
  else
1889
1927
  print_red_alert "File not found: #{full_filename}"
@@ -972,7 +972,7 @@ class Morpheus::Cli::ImageBuilderCommand
972
972
  payload['config'] = options['config']
973
973
  elsif options['configFile']
974
974
  config_file = File.expand_path(options['configFile'])
975
- if !File.exists?(config_file) || !File.file?(config_file)
975
+ if !File.exist?(config_file) || !File.file?(config_file)
976
976
  print_red_alert "File not found: #{config_file}"
977
977
  return false
978
978
  end