morpheus-cli 3.3.1.4 → 3.3.2

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus/api/api_client.rb +28 -0
  3. data/lib/morpheus/api/instance_types_interface.rb +12 -10
  4. data/lib/morpheus/api/instances_interface.rb +4 -0
  5. data/lib/morpheus/api/library_container_scripts_interface.rb +49 -0
  6. data/lib/morpheus/api/library_container_templates_interface.rb +49 -0
  7. data/lib/morpheus/api/library_container_types_interface.rb +65 -0
  8. data/lib/morpheus/api/library_container_upgrades_interface.rb +66 -0
  9. data/lib/morpheus/api/library_instance_types_interface.rb +59 -0
  10. data/lib/morpheus/api/library_layouts_interface.rb +65 -0
  11. data/lib/morpheus/api/servers_interface.rb +4 -0
  12. data/lib/morpheus/api/user_sources_interface.rb +120 -0
  13. data/lib/morpheus/api/virtual_images_interface.rb +7 -0
  14. data/lib/morpheus/cli.rb +12 -1
  15. data/lib/morpheus/cli/accounts.rb +35 -9
  16. data/lib/morpheus/cli/cli_command.rb +82 -2
  17. data/lib/morpheus/cli/curl_command.rb +1 -1
  18. data/lib/morpheus/cli/echo_command.rb +1 -1
  19. data/lib/morpheus/cli/hosts.rb +40 -14
  20. data/lib/morpheus/cli/instance_types.rb +106 -64
  21. data/lib/morpheus/cli/instances.rb +39 -15
  22. data/lib/morpheus/cli/library.rb +1 -1184
  23. data/lib/morpheus/cli/library_container_scripts_command.rb +437 -0
  24. data/lib/morpheus/cli/library_container_templates_command.rb +397 -0
  25. data/lib/morpheus/cli/library_container_types_command.rb +653 -0
  26. data/lib/morpheus/cli/library_instance_types_command.rb +491 -0
  27. data/lib/morpheus/cli/library_layouts_command.rb +650 -0
  28. data/lib/morpheus/cli/library_option_lists_command.rb +476 -0
  29. data/lib/morpheus/cli/library_option_types_command.rb +549 -0
  30. data/lib/morpheus/cli/library_upgrades_command.rb +604 -0
  31. data/lib/morpheus/cli/mixins/library_helper.rb +123 -0
  32. data/lib/morpheus/cli/mixins/print_helper.rb +21 -22
  33. data/lib/morpheus/cli/mixins/provisioning_helper.rb +56 -11
  34. data/lib/morpheus/cli/network_services_command.rb +1 -1
  35. data/lib/morpheus/cli/option_types.rb +12 -2
  36. data/lib/morpheus/cli/power_scheduling_command.rb +1 -1
  37. data/lib/morpheus/cli/shell.rb +120 -22
  38. data/lib/morpheus/cli/sleep_command.rb +45 -0
  39. data/lib/morpheus/cli/user_sources_command.rb +963 -0
  40. data/lib/morpheus/cli/users.rb +33 -2
  41. data/lib/morpheus/cli/version.rb +1 -1
  42. data/lib/morpheus/cli/version_command.rb +1 -1
  43. data/lib/morpheus/cli/virtual_images.rb +93 -39
  44. data/lib/morpheus/formatters.rb +37 -27
  45. data/lib/morpheus/terminal.rb +1 -1
  46. metadata +20 -2
@@ -10,7 +10,7 @@ require 'json'
10
10
  class Morpheus::Cli::Users
11
11
  include Morpheus::Cli::CliCommand
12
12
  include Morpheus::Cli::AccountsHelper
13
- register_subcommands :list, :get, :add, :update, :remove
13
+ register_subcommands :list, :count, :get, :add, :update, :remove
14
14
  register_subcommands :'passwd' => :change_password
15
15
  alias_subcommand :details, :get
16
16
  set_default_subcommand :list
@@ -35,7 +35,7 @@ class Morpheus::Cli::Users
35
35
  options = {}
36
36
  optparse = Morpheus::Cli::OptionParser.new do |opts|
37
37
  opts.banner = subcommand_usage()
38
- build_common_options(opts, options, [:account, :list, :json, :yaml, :csv, :fields, :json, :dry_run, :remote])
38
+ build_common_options(opts, options, [:account, :list, :query, :json, :yaml, :csv, :fields, :json, :dry_run, :remote])
39
39
  opts.footer = "List users."
40
40
  end
41
41
  optparse.parse!(args)
@@ -91,6 +91,37 @@ class Morpheus::Cli::Users
91
91
  end
92
92
  end
93
93
 
94
+ def count(args)
95
+ options = {}
96
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
97
+ opts.banner = subcommand_usage("[options]")
98
+ build_common_options(opts, options, [:account, :query, :remote, :dry_run])
99
+ opts.footer = "Get the number of users."
100
+ end
101
+ optparse.parse!(args)
102
+ connect(options)
103
+ begin
104
+ account = find_account_from_options(options)
105
+ account_id = account ? account['id'] : nil
106
+ params = {}
107
+ params.merge!(parse_list_options(options))
108
+ if options[:dry_run]
109
+ print_dry_run @users_interface.dry.list(account_id, params)
110
+ return
111
+ end
112
+ json_response = @users_interface.list(account_id, params)
113
+ # print number only
114
+ if json_response['meta'] && json_response['meta']['total']
115
+ print cyan, json_response['meta']['total'], reset, "\n"
116
+ else
117
+ print yellow, "unknown", reset, "\n"
118
+ end
119
+ rescue RestClient::Exception => e
120
+ print_rest_exception(e, options)
121
+ exit 1
122
+ end
123
+ end
124
+
94
125
  def get(args)
95
126
  options = {}
96
127
  optparse = Morpheus::Cli::OptionParser.new do |opts|
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "3.3.1.4"
4
+ VERSION = "3.3.2"
5
5
  end
6
6
  end
@@ -37,7 +37,7 @@ class Morpheus::Cli::VersionCommand
37
37
  puts(banner)
38
38
  puts(" Client Version: #{client_version}")
39
39
  puts("****************************************")
40
- print reset,"\n"
40
+ print reset
41
41
  end
42
42
  end
43
43
  end
@@ -123,7 +123,7 @@ class Morpheus::Cli::VirtualImages
123
123
  return
124
124
  end
125
125
  image = find_virtual_image_by_name_or_id(image_name)
126
- exit 1 if image.nil?
126
+ return 1 if image.nil?
127
127
  # refetch
128
128
  json_response = @virtual_images_interface.get(image['id'])
129
129
  image = json_response['virtualImage']
@@ -179,7 +179,7 @@ class Morpheus::Cli::VirtualImages
179
179
  begin
180
180
 
181
181
  image = find_virtual_image_by_name_or_id(image_name)
182
- exit 1 if image.nil?
182
+ return 1 if image.nil?
183
183
 
184
184
  params = options[:options] || {}
185
185
 
@@ -253,12 +253,16 @@ class Morpheus::Cli::VirtualImages
253
253
 
254
254
  def add(args)
255
255
  image_type_name = nil
256
+ file_url = nil
256
257
  options = {}
257
258
  optparse = OptionParser.new do|opts|
258
259
  opts.banner = subcommand_usage("[name] -t TYPE")
259
260
  opts.on( '-t', '--type TYPE', "Virtual Image Type" ) do |val|
260
261
  image_type_name = val
261
262
  end
263
+ opts.on( '-U', '--url URL', "Image File URL. This can be used instead of uploading local files." ) do |val|
264
+ file_url = val
265
+ end
262
266
  build_common_options(opts, options, [:options, :json, :dry_run, :remote])
263
267
  end
264
268
  optparse.parse!(args)
@@ -291,8 +295,15 @@ class Morpheus::Cli::VirtualImages
291
295
  end
292
296
 
293
297
  begin
294
- my_option_types = add_virtual_image_option_types(image_type)
295
- params = Morpheus::Cli::OptionTypes.prompt(add_virtual_image_option_types(image_type), options[:options], @api_client, options[:params])
298
+ my_option_types = add_virtual_image_option_types(image_type, !file_url)
299
+ # if options[:no_prompt]
300
+ # my_option_types.each do |it|
301
+ # if it['fieldContext'] == 'virtualImageFiles'
302
+ # opt['required'] = false
303
+ # end
304
+ # end
305
+ # end
306
+ params = Morpheus::Cli::OptionTypes.prompt(my_option_types, options[:options], @api_client, options[:params])
296
307
  virtual_image_payload = {}.merge(params)
297
308
  virtual_image_files = virtual_image_payload.delete('virtualImageFiles')
298
309
  virtual_image_payload['imageType'] = image_type['code']
@@ -304,7 +315,9 @@ class Morpheus::Cli::VirtualImages
304
315
 
305
316
  if options[:dry_run]
306
317
  print_dry_run @virtual_images_interface.dry.create(payload)
307
- if !virtual_image_files.empty?
318
+ if file_url
319
+ print_dry_run @virtual_images_interface.dry.upload_by_url(":id", file_url)
320
+ elsif virtual_image_files && !virtual_image_files.empty?
308
321
  virtual_image_files.each do |key, filename|
309
322
  print_dry_run @virtual_images_interface.dry.upload(":id", "(Contents of file #{filename})")
310
323
  end
@@ -322,7 +335,15 @@ class Morpheus::Cli::VirtualImages
322
335
  end
323
336
 
324
337
  # now upload the file, do this in the background maybe?
325
- if !virtual_image_files.empty?
338
+ if file_url
339
+ unless options[:quiet]
340
+ print cyan, "Uploading file by url #{file_url} ...", reset, "\n"
341
+ end
342
+ upload_json_response = @virtual_images_interface.upload_by_url(virtual_image['id'], file_url)
343
+ if options[:json]
344
+ print JSON.pretty_generate(upload_json_response)
345
+ end
346
+ elsif virtual_image_files && !virtual_image_files.empty?
326
347
  virtual_image_files.each do |key, filename|
327
348
  unless options[:quiet]
328
349
  print cyan, "Uploading file (#{key}) #{filename} ...", reset, "\n"
@@ -349,41 +370,67 @@ class Morpheus::Cli::VirtualImages
349
370
 
350
371
  def add_file(args)
351
372
  image_type_name = nil
373
+ file_url = nil
352
374
  options = {}
353
375
  optparse = OptionParser.new do|opts|
354
376
  opts.banner = subcommand_usage("[name] [filepath]")
355
- build_common_options(opts, options, [:json, :dry_run, :remote])
377
+ opts.on( '-U', '--url URL', "Image File URL. This can be used instead of [filepath]" ) do |val|
378
+ file_url = val
379
+ end
380
+ build_common_options(opts, options, [:json, :dry_run, :quiet, :remote])
356
381
  end
357
382
  optparse.parse!(args)
358
- if args.count < 2
359
- puts optparse
360
- exit 1
361
- end
362
383
  image_name = args[0]
363
- filename = args[1]
364
-
365
- connect(options)
366
-
367
- begin
368
- image = find_virtual_image_by_name_or_id(image_name)
369
- image_file = File.new(filename, 'rb')
370
-
371
- if options[:dry_run]
372
- print_dry_run @virtual_images_interface.dry.upload(image['id'], image_file)
373
- return
384
+ filename = nil
385
+ if file_url
386
+ if args.count < 1
387
+ puts optparse
388
+ exit 1
374
389
  end
375
-
376
- unless options[:quiet]
377
- print cyan, "Uploading file #{filename} ...", reset, "\n"
390
+ else
391
+ if args.count < 2
392
+ puts optparse
393
+ exit 1
378
394
  end
395
+ filename = args[1]
396
+ end
379
397
 
380
- json_response = @virtual_images_interface.upload(image['id'], image_file)
398
+ connect(options)
381
399
 
382
- if options[:json]
383
- print JSON.pretty_generate(json_response)
384
- elsif !options[:quiet]
385
- print "\n", cyan, "Virtual Image #{image['name']} successfully updated.", reset, "\n\n"
386
- get([image['id']])
400
+ begin
401
+ image = find_virtual_image_by_name_or_id(image_name)
402
+ return 1 if image.nil?
403
+ if file_url
404
+ if options[:dry_run]
405
+ print_dry_run @virtual_images_interface.dry.upload_by_url(image['id'], file_url)
406
+ return
407
+ end
408
+ unless options[:quiet]
409
+ print cyan, "Uploading file by url #{file_url} ...", reset, "\n"
410
+ end
411
+ json_response = @virtual_images_interface.upload_by_url(image['id'], file_url)
412
+ if options[:json]
413
+ print JSON.pretty_generate(json_response)
414
+ elsif !options[:quiet]
415
+ print "\n", cyan, "Virtual Image #{image['name']} successfully updated.", reset, "\n\n"
416
+ get([image['id']])
417
+ end
418
+ else
419
+ image_file = File.new(filename, 'rb')
420
+ if options[:dry_run]
421
+ print_dry_run @virtual_images_interface.dry.upload(image['id'], image_file)
422
+ return
423
+ end
424
+ unless options[:quiet]
425
+ print cyan, "Uploading file #{filename} ...", reset, "\n"
426
+ end
427
+ json_response = @virtual_images_interface.upload(image['id'], image_file)
428
+ if options[:json]
429
+ print JSON.pretty_generate(json_response)
430
+ elsif !options[:quiet]
431
+ print "\n", cyan, "Virtual Image #{image['name']} successfully updated.", reset, "\n\n"
432
+ get([image['id']])
433
+ end
387
434
  end
388
435
 
389
436
  rescue RestClient::Exception => e
@@ -408,7 +455,7 @@ class Morpheus::Cli::VirtualImages
408
455
  connect(options)
409
456
  begin
410
457
  image = find_virtual_image_by_name_or_id(image_name)
411
- exit 1 if image.nil?
458
+ return 1 if image.nil?
412
459
  unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the virtual image filename #{filename}?")
413
460
  exit
414
461
  end
@@ -443,7 +490,7 @@ class Morpheus::Cli::VirtualImages
443
490
  connect(options)
444
491
  begin
445
492
  image = find_virtual_image_by_name_or_id(image_name)
446
- exit 1 if image.nil?
493
+ return 1 if image.nil?
447
494
  unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the virtual image #{image['name']}?")
448
495
  exit
449
496
  end
@@ -480,6 +527,7 @@ class Morpheus::Cli::VirtualImages
480
527
  rescue RestClient::Exception => e
481
528
  if e.response && e.response.code == 404
482
529
  print_red_alert "Virtual Image not found by id #{id}"
530
+ return nil
483
531
  else
484
532
  raise e
485
533
  end
@@ -490,7 +538,7 @@ class Morpheus::Cli::VirtualImages
490
538
  json_results = @virtual_images_interface.get({name: name.to_s})
491
539
  if json_results['virtualImages'].empty?
492
540
  print_red_alert "Virtual Image not found by name #{name}"
493
- exit 1
541
+ return nil
494
542
  end
495
543
  virtual_image = json_results['virtualImages'][0]
496
544
  return virtual_image
@@ -507,7 +555,7 @@ class Morpheus::Cli::VirtualImages
507
555
  return get_available_virtual_image_types().find { |z| z['name'].downcase == name.downcase || z['code'].downcase == name.downcase}
508
556
  end
509
557
 
510
- def add_virtual_image_option_types(image_type)
558
+ def add_virtual_image_option_types(image_type, include_file_selection=true)
511
559
  image_type_code = image_type['code']
512
560
  # todo: make api provide virtualImageType and its optionTypes.
513
561
  tmp_option_types = [
@@ -527,16 +575,22 @@ class Morpheus::Cli::VirtualImages
527
575
 
528
576
  if image_type_code == 'ami'
529
577
  tmp_option_types << {'fieldName' => 'externalId', 'fieldLabel' => 'AMI id', 'type' => 'text', 'required' => false, 'displayOrder' => 10}
530
- tmp_option_types << {'fieldName' => 'imageFile', 'fieldLabel' => 'Image File', 'type' => 'file', 'required' => true, 'displayOrder' => 10}
578
+ if include_file_selection
579
+ tmp_option_types << {'fieldName' => 'imageFile', 'fieldLabel' => 'Image File', 'type' => 'file', 'required' => false, 'displayOrder' => 10}
580
+ end
531
581
  elsif image_type_code == 'vmware' || image_type_code == 'vmdk'
532
- tmp_option_types << {'fieldContext' => 'virtualImageFiles', 'fieldName' => 'imageFile', 'fieldLabel' => 'OVF File', 'type' => 'file', 'required' => true, 'displayOrder' => 10}
533
- tmp_option_types << {'fieldContext' => 'virtualImageFiles', 'fieldName' => 'imageDescriptorFile', 'fieldLabel' => 'VMDK File', 'type' => 'file', 'required' => false, 'displayOrder' => 10}
582
+ if include_file_selection
583
+ tmp_option_types << {'fieldContext' => 'virtualImageFiles', 'fieldName' => 'imageFile', 'fieldLabel' => 'OVF File', 'type' => 'file', 'required' => false, 'displayOrder' => 10}
584
+ tmp_option_types << {'fieldContext' => 'virtualImageFiles', 'fieldName' => 'imageDescriptorFile', 'fieldLabel' => 'VMDK File', 'type' => 'file', 'required' => false, 'displayOrder' => 10}
585
+ end
534
586
  elsif image_type_code == 'pxe'
535
587
  tmp_option_types << {'fieldName' => 'config.menu', 'fieldLabel' => 'Menu', 'type' => 'text', 'required' => false, 'displayOrder' => 10}
536
588
  tmp_option_types << {'fieldName' => 'imagePath', 'fieldLabel' => 'Image Path', 'type' => 'text', 'required' => true, 'displayOrder' => 10}
537
589
  tmp_option_types.reject! {|opt| ['isCloudInit', 'installAgent', 'sshUsername', 'sshPassword'].include?(opt['fieldName'])}
538
590
  else
539
- tmp_option_types << {'fieldContext' => 'virtualImageFiles', 'fieldName' => 'imageFile', 'fieldLabel' => 'Image File', 'type' => 'file', 'required' => true, 'description' => 'Choose an image file to upload', 'displayOrder' => 10}
591
+ if include_file_selection
592
+ tmp_option_types << {'fieldContext' => 'virtualImageFiles', 'fieldName' => 'imageFile', 'fieldLabel' => 'Image File', 'type' => 'file', 'required' => false, 'description' => 'Choose an image file to upload', 'displayOrder' => 10}
593
+ end
540
594
  end
541
595
 
542
596
  return tmp_option_types
@@ -198,39 +198,49 @@ def filter_data(data, include_fields=nil, exclude_fields=nil)
198
198
  if field.empty?
199
199
  next
200
200
  end
201
+
202
+ # supports "field as Label"
203
+ field_key = field.strip
204
+ field_label = field_key
205
+
206
+ if field.index(/\s+as\s+/)
207
+ field_key, field_label = field.split(/\s+as\s+/)
208
+ if !field_label
209
+ field_label = field_key
210
+ end
211
+ end
212
+
201
213
  if field.include?(".")
202
- # could do this instead...
203
- # namespaces = field.split(".")
204
- # cur_data = data
205
- # namespaces.each
206
- # if index != namespaces.length - 1
207
- # cur_data[ns] ||= {}
208
- # else
209
- # cur_data[ns] = get_object_value(new_data, field)
210
- # end
211
- # end
212
- namespaces = field.split(".")
213
- cur_data = data
214
- cur_filtered_data = my_data
215
- namespaces.each_with_index do |ns, index|
216
- if index != namespaces.length - 1
217
- if cur_data
218
- cur_data = cur_data[ns] || cur_data[ns.to_sym]
219
- else
220
- cur_data = nil
221
- end
222
- cur_filtered_data[ns] ||= {}
223
- cur_filtered_data = cur_filtered_data[ns]
224
- else
225
- if cur_data.respond_to?("[]")
226
- cur_filtered_data[ns] = cur_data[ns] || cur_data[ns.to_sym]
214
+ #if field.index(/\s+as\s+/)
215
+ if field_label != field_key
216
+ # collapse to a value
217
+ my_data[field_label] = get_object_value(data, field_key)
218
+ else
219
+ # keep the full object structure
220
+ namespaces = field.split(".")
221
+ cur_data = data
222
+ cur_filtered_data = my_data
223
+ namespaces.each_with_index do |ns, index|
224
+ if index != namespaces.length - 1
225
+ if cur_data
226
+ cur_data = cur_data[ns] || cur_data[ns.to_sym]
227
+ else
228
+ cur_data = nil
229
+ end
230
+ cur_filtered_data[ns] ||= {}
231
+ cur_filtered_data = cur_filtered_data[ns]
227
232
  else
228
- cur_filtered_data[ns] = nil
233
+ if cur_data.respond_to?("[]")
234
+ cur_filtered_data[ns] = cur_data[ns] || cur_data[ns.to_sym]
235
+ else
236
+ cur_filtered_data[ns] = nil
237
+ end
229
238
  end
230
239
  end
231
240
  end
232
241
  else
233
- my_data[field] = data[field] || data[field.to_sym]
242
+ #my_data[field] = data[field] || data[field.to_sym]
243
+ my_data[field_label] = data[field_key] || data[field_key.to_sym]
234
244
  end
235
245
  end
236
246
  return my_data
@@ -208,7 +208,7 @@ module Morpheus
208
208
  @coloring = false
209
209
  Term::ANSIColor::coloring = false
210
210
  end
211
- opts.on('-V','--debug', "Print extra output for debugging. ") do |json|
211
+ opts.on('-V','--debug', "Print extra output for debugging.") do |json|
212
212
  @terminal_log_level = Morpheus::Logging::Logger::DEBUG
213
213
  Morpheus::Logging.set_log_level(Morpheus::Logging::Logger::DEBUG)
214
214
  ::RestClient.log = Morpheus::Logging.debug? ? Morpheus::Logging::DarkPrinter.instance : nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.1.4
4
+ version: 3.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-04-06 00:00:00.000000000 Z
14
+ date: 2018-05-23 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -165,6 +165,12 @@ files:
165
165
  - lib/morpheus/api/instance_types_interface.rb
166
166
  - lib/morpheus/api/instances_interface.rb
167
167
  - lib/morpheus/api/key_pairs_interface.rb
168
+ - lib/morpheus/api/library_container_scripts_interface.rb
169
+ - lib/morpheus/api/library_container_templates_interface.rb
170
+ - lib/morpheus/api/library_container_types_interface.rb
171
+ - lib/morpheus/api/library_container_upgrades_interface.rb
172
+ - lib/morpheus/api/library_instance_types_interface.rb
173
+ - lib/morpheus/api/library_layouts_interface.rb
168
174
  - lib/morpheus/api/license_interface.rb
169
175
  - lib/morpheus/api/load_balancers_interface.rb
170
176
  - lib/morpheus/api/logs_interface.rb
@@ -196,6 +202,7 @@ files:
196
202
  - lib/morpheus/api/task_sets_interface.rb
197
203
  - lib/morpheus/api/tasks_interface.rb
198
204
  - lib/morpheus/api/user_groups_interface.rb
205
+ - lib/morpheus/api/user_sources_interface.rb
199
206
  - lib/morpheus/api/users_interface.rb
200
207
  - lib/morpheus/api/virtual_images_interface.rb
201
208
  - lib/morpheus/api/whoami_interface.rb
@@ -227,6 +234,14 @@ files:
227
234
  - lib/morpheus/cli/instances.rb
228
235
  - lib/morpheus/cli/key_pairs.rb
229
236
  - lib/morpheus/cli/library.rb
237
+ - lib/morpheus/cli/library_container_scripts_command.rb
238
+ - lib/morpheus/cli/library_container_templates_command.rb
239
+ - lib/morpheus/cli/library_container_types_command.rb
240
+ - lib/morpheus/cli/library_instance_types_command.rb
241
+ - lib/morpheus/cli/library_layouts_command.rb
242
+ - lib/morpheus/cli/library_option_lists_command.rb
243
+ - lib/morpheus/cli/library_option_types_command.rb
244
+ - lib/morpheus/cli/library_upgrades_command.rb
230
245
  - lib/morpheus/cli/license.rb
231
246
  - lib/morpheus/cli/load_balancers.rb
232
247
  - lib/morpheus/cli/log_level_command.rb
@@ -235,6 +250,7 @@ files:
235
250
  - lib/morpheus/cli/man_command.rb
236
251
  - lib/morpheus/cli/mixins/accounts_helper.rb
237
252
  - lib/morpheus/cli/mixins/infrastructure_helper.rb
253
+ - lib/morpheus/cli/mixins/library_helper.rb
238
254
  - lib/morpheus/cli/mixins/monitoring_helper.rb
239
255
  - lib/morpheus/cli/mixins/print_helper.rb
240
256
  - lib/morpheus/cli/mixins/provisioning_helper.rb
@@ -263,11 +279,13 @@ files:
263
279
  - lib/morpheus/cli/security_groups.rb
264
280
  - lib/morpheus/cli/set_prompt_command.rb
265
281
  - lib/morpheus/cli/shell.rb
282
+ - lib/morpheus/cli/sleep_command.rb
266
283
  - lib/morpheus/cli/source_command.rb
267
284
  - lib/morpheus/cli/ssl_verification_command.rb
268
285
  - lib/morpheus/cli/storage_providers_command.rb
269
286
  - lib/morpheus/cli/tasks.rb
270
287
  - lib/morpheus/cli/user_groups_command.rb
288
+ - lib/morpheus/cli/user_sources_command.rb
271
289
  - lib/morpheus/cli/users.rb
272
290
  - lib/morpheus/cli/version.rb
273
291
  - lib/morpheus/cli/version_command.rb