morpheus-cli 3.6.12 → 3.6.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/morpheus/api/clouds_interface.rb +2 -2
  3. data/lib/morpheus/cli/account_groups_command.rb +84 -106
  4. data/lib/morpheus/cli/apps.rb +12 -11
  5. data/lib/morpheus/cli/archives_command.rb +2 -9
  6. data/lib/morpheus/cli/blueprints_command.rb +0 -8
  7. data/lib/morpheus/cli/boot_scripts_command.rb +3 -6
  8. data/lib/morpheus/cli/cli_command.rb +6 -2
  9. data/lib/morpheus/cli/cloud_datastores_command.rb +2 -5
  10. data/lib/morpheus/cli/clouds.rb +9 -10
  11. data/lib/morpheus/cli/commands/standard/history_command.rb +7 -3
  12. data/lib/morpheus/cli/containers_command.rb +0 -1
  13. data/lib/morpheus/cli/cypher_command.rb +0 -2
  14. data/lib/morpheus/cli/deployments.rb +6 -5
  15. data/lib/morpheus/cli/deploys.rb +0 -2
  16. data/lib/morpheus/cli/groups.rb +7 -10
  17. data/lib/morpheus/cli/hosts.rb +7 -4
  18. data/lib/morpheus/cli/image_builder_command.rb +1 -7
  19. data/lib/morpheus/cli/instances.rb +26 -40
  20. data/lib/morpheus/cli/key_pairs.rb +2 -2
  21. data/lib/morpheus/cli/library_option_lists_command.rb +13 -19
  22. data/lib/morpheus/cli/library_option_types_command.rb +2 -2
  23. data/lib/morpheus/cli/license.rb +0 -1
  24. data/lib/morpheus/cli/load_balancers.rb +1 -2
  25. data/lib/morpheus/cli/mixins/accounts_helper.rb +4 -12
  26. data/lib/morpheus/cli/mixins/print_helper.rb +53 -2
  27. data/lib/morpheus/cli/mixins/processes_helper.rb +0 -1
  28. data/lib/morpheus/cli/mixins/whoami_helper.rb +0 -1
  29. data/lib/morpheus/cli/monitoring_contacts_command.rb +0 -1
  30. data/lib/morpheus/cli/network_domains_command.rb +1 -4
  31. data/lib/morpheus/cli/network_groups_command.rb +2 -5
  32. data/lib/morpheus/cli/network_pool_servers_command.rb +2 -5
  33. data/lib/morpheus/cli/network_pools_command.rb +2 -5
  34. data/lib/morpheus/cli/network_proxies_command.rb +2 -5
  35. data/lib/morpheus/cli/network_services_command.rb +2 -5
  36. data/lib/morpheus/cli/networks_command.rb +2 -5
  37. data/lib/morpheus/cli/old_cypher_command.rb +0 -2
  38. data/lib/morpheus/cli/policies_command.rb +1 -4
  39. data/lib/morpheus/cli/preseed_scripts_command.rb +2 -5
  40. data/lib/morpheus/cli/remote.rb +3 -4
  41. data/lib/morpheus/cli/roles.rb +5 -5
  42. data/lib/morpheus/cli/security_group_rules.rb +0 -1
  43. data/lib/morpheus/cli/security_groups.rb +0 -1
  44. data/lib/morpheus/cli/shell.rb +89 -38
  45. data/lib/morpheus/cli/storage_providers_command.rb +2 -5
  46. data/lib/morpheus/cli/tasks.rb +2 -3
  47. data/lib/morpheus/cli/users.rb +1 -1
  48. data/lib/morpheus/cli/version.rb +1 -1
  49. data/lib/morpheus/cli/virtual_images.rb +4 -7
  50. data/lib/morpheus/cli/whoami.rb +1 -1
  51. data/lib/morpheus/cli/workflows.rb +0 -2
  52. data/lib/morpheus/formatters.rb +17 -0
  53. data/lib/morpheus/logging.rb +17 -7
  54. data/morpheus-cli.gemspec +0 -1
  55. metadata +2 -16
@@ -385,14 +385,14 @@ class Morpheus::Cli::KeyPairs
385
385
  dateCreated: format_local_dt(key_pair['dateCreated'])
386
386
  }
387
387
  end
388
- print table_color
389
- tp rows, [
388
+ columns = [
390
389
  :id,
391
390
  :name,
392
391
  {:fingerprint => {:width => 47} },
393
392
  # {:md5 => {:width => 32} },
394
393
  {:dateCreated => {:display_name => "Date Created"} }
395
394
  ]
395
+ print as_pretty_table(rows, columns, opts)
396
396
  print reset
397
397
  end
398
398
 
@@ -55,7 +55,7 @@ class Morpheus::Cli::LibraryOptionListsCommand
55
55
  option_type_lists = json_response['optionTypeLists']
56
56
  subtitles = []
57
57
  subtitles += parse_list_subtitles(options)
58
- print_h1 "Morpheus Option Lists", subtitles
58
+ print_h1 "Morpheus Option Lists", subtitles, options
59
59
  if option_type_lists.empty?
60
60
  print cyan,"No option lists found.",reset,"\n"
61
61
  else
@@ -68,17 +68,16 @@ class Morpheus::Cli::LibraryOptionListsCommand
68
68
  size: option_type_list['listItems'] ? option_type_list['listItems'].size : ''
69
69
  }
70
70
  end
71
- print cyan
72
- tp rows, [
73
- :id,
74
- :name,
75
- :description,
76
- :type,
77
- :size
78
- ]
79
- print reset
80
- print_results_pagination(json_response)
81
71
  end
72
+ columns = [
73
+ :id,
74
+ :name,
75
+ :description,
76
+ :type,
77
+ :size
78
+ ]
79
+ print cyan
80
+ print as_pretty_table(rows, columns, options)
82
81
  print reset,"\n"
83
82
  rescue RestClient::Exception => e
84
83
  print_rest_exception(e, options)
@@ -118,7 +117,7 @@ class Morpheus::Cli::LibraryOptionListsCommand
118
117
  return
119
118
  end
120
119
 
121
- print_h1 "Option List Details"
120
+ print_h1 "Option List Details", options
122
121
  print cyan
123
122
  if option_type_list['type'] == 'manual'
124
123
  print_description_list({
@@ -151,7 +150,7 @@ class Morpheus::Cli::LibraryOptionListsCommand
151
150
  if source_headers && !source_headers.empty?
152
151
  print cyan
153
152
  print_h2 "Source Headers"
154
- print as_pretty_table(source_headers, [:name, :value, :masked])
153
+ print as_pretty_table(source_headers, [:name, :value, :masked], options)
155
154
  end
156
155
  if !option_type_list['initialDataset'].empty?
157
156
  print_h2 "Initial Dataset"
@@ -164,12 +163,7 @@ class Morpheus::Cli::LibraryOptionListsCommand
164
163
  end
165
164
  print_h2 "List Items"
166
165
  if option_type_list['listItems']
167
- # puts "\tNAME\tVALUE"
168
- # option_type_list['listItems'].each do |list_item|
169
- # puts "\t#{list_item['name']}\t#{list_item['value']}"
170
- # end
171
- print cyan
172
- tp option_type_list['listItems'], ['name', 'value']
166
+ print as_pretty_table(option_type_list['listItems'], ['name', 'value'], options)
173
167
  else
174
168
  puts "No data"
175
169
  end
@@ -71,7 +71,7 @@ class Morpheus::Cli::LibraryOptionTypesCommand
71
71
  }
72
72
  end
73
73
  print cyan
74
- tp rows, [
74
+ print as_pretty_table(rows, [
75
75
  :id,
76
76
  :name,
77
77
  :type,
@@ -79,7 +79,7 @@ class Morpheus::Cli::LibraryOptionTypesCommand
79
79
  {:fieldName => {:display_name => "Field Name"} },
80
80
  :default,
81
81
  :required
82
- ]
82
+ ], options)
83
83
  print reset
84
84
  print_results_pagination(json_response)
85
85
  end
@@ -1,7 +1,6 @@
1
1
  require 'io/console'
2
2
  require 'rest_client'
3
3
  require 'optparse'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
 
7
6
  class Morpheus::Cli::License
@@ -2,7 +2,6 @@
2
2
  require 'io/console'
3
3
  require 'rest_client'
4
4
  require 'optparse'
5
- require 'table_print'
6
5
  require 'morpheus/cli/cli_command'
7
6
 
8
7
  class Morpheus::Cli::LoadBalancers
@@ -250,7 +249,7 @@ class Morpheus::Cli::LoadBalancers
250
249
  lb_table_data = lb_types.collect do |lb_type|
251
250
  {name: lb_type['name'], id: lb_type['id'], code: lb_type['code']}
252
251
  end
253
- tp lb_table_data, :id, :name, :code
252
+ print as_pretty_table(lb_table_data, [:id, :name, :code], options)
254
253
  end
255
254
 
256
255
  print reset,"\n"
@@ -1,4 +1,3 @@
1
- require 'table_print'
2
1
  require 'morpheus/cli/mixins/print_helper'
3
2
 
4
3
  # Mixin for Morpheus::Cli command classes
@@ -198,16 +197,16 @@ module Morpheus::Cli::AccountsHelper
198
197
  dateCreated: format_local_dt(account['dateCreated'])
199
198
  }
200
199
  end
201
- print table_color
202
- tp rows, [
200
+ print table_color if table_color
201
+ print as_pretty_table(rows, [
203
202
  :id,
204
203
  :name,
205
204
  :description,
206
205
  :role,
207
206
  {:dateCreated => {:display_name => "Date Created"} },
208
207
  :status
209
- ]
210
- print reset
208
+ ], options.merge({color:table_color}))
209
+ print reset if table_color
211
210
  end
212
211
 
213
212
  def format_role_type(role)
@@ -231,13 +230,6 @@ module Morpheus::Cli::AccountsHelper
231
230
 
232
231
  def print_roles_table(roles, options={})
233
232
  table_color = options.key?(:color) ? options[:color] : cyan
234
- # tp roles, [
235
- # 'id',
236
- # 'name',
237
- # 'description',
238
- # 'scope',
239
- # {'dateCreated' => {:display_name => "Date Created", :display_method => lambda{|it| format_local_dt(it['dateCreated']) } } }
240
- # ]
241
233
  rows = roles.collect do |role|
242
234
  {
243
235
  id: role['id'],
@@ -349,7 +349,7 @@ module Morpheus::Cli::PrintHelper
349
349
  label = n_label || label
350
350
  end
351
351
  out_str = ""
352
- string_key_values = {start_index: offset + 1, end_index: offset + size, total: total, size: size, offset: offset, label: label}
352
+ string_key_values = {start_index: format_number(offset + 1), end_index: format_number(offset + size), total: format_number(total), size: format_number(size), offset: format_number(offset), label: label}
353
353
  if size > 0
354
354
  if message
355
355
  out_str << message % string_key_values
@@ -623,6 +623,57 @@ module Morpheus::Cli::PrintHelper
623
623
  end
624
624
  end
625
625
 
626
+ # responsive tables
627
+ # pops columns off end until they all fit on the terminal
628
+ # could use some options[:preferred_columns] logic here to throw away in some specified order
629
+ # --all fields disables this
630
+ trimmed_columns = []
631
+ if options[:responsive_table] != false && options[:include_fields].nil? && options[:all_fields] != true
632
+
633
+ begin
634
+ term_width = current_terminal_width()
635
+ table_width = columns.inject(0) {|acc, column_def| acc + (column_def.width || 0) }
636
+ table_width += ((columns.size-0) * (3)) # col border width
637
+ if term_width && table_width
638
+ # leave 1 column always...
639
+ while table_width > term_width && columns.size > 1
640
+ column_index = columns.size - 1
641
+ removed_column = columns.pop
642
+ trimmed_columns << removed_column
643
+ if removed_column.width
644
+ table_width -= removed_column.width
645
+ table_width -= 3 # col border width
646
+ end
647
+
648
+ # clear from data_matrix
649
+ # wel, nvm it just gets regenerated
650
+
651
+ end
652
+ end
653
+ rescue => ex
654
+ Morpheus::Logging::DarkPrinter.puts "Encountered error while applying responsive table sizing: (#{ex.class}) #{ex}"
655
+ end
656
+
657
+ if trimmed_columns.size > 0
658
+ # data_matrix = generate_table_data(data, columns, options)
659
+ header_row = []
660
+ columns.each do |column_def|
661
+ header_row << column_def.label
662
+ end
663
+ rows = []
664
+ data.each do |row_data|
665
+ row = []
666
+ columns.each do |column_def|
667
+ # r << column_def.display_method.respond_to?(:call) ? column_def.display_method.call(row_data) : get_object_value(row_data, column_def.display_method)
668
+ value = column_def.display_method.call(row_data)
669
+ row << value
670
+ end
671
+ rows << row
672
+ end
673
+ data_matrix = [header_row] + rows
674
+ end
675
+ end
676
+
626
677
  # format header row
627
678
  header_cells = []
628
679
  columns.each_with_index do |column_def, column_index|
@@ -809,7 +860,7 @@ module Morpheus::Cli::PrintHelper
809
860
  if v[:min_width]
810
861
  column_def.min_width = v[:min_width]
811
862
  end
812
- # tp uses width to behave like max_width
863
+ # tp uses width to behave like max_width, but tp() is gone, remove this?
813
864
  if v[:width]
814
865
  column_def.width = v[:width]
815
866
  column_def.max_width = v[:width]
@@ -1,4 +1,3 @@
1
- require 'table_print'
2
1
  require 'morpheus/cli/mixins/print_helper'
3
2
 
4
3
  # Mixin for Morpheus::Cli command classes
@@ -1,4 +1,3 @@
1
- require 'table_print'
2
1
  require 'morpheus/cli/mixins/print_helper'
3
2
 
4
3
  # Mixin for Morpheus::Cli command classes
@@ -4,7 +4,6 @@ require 'io/console'
4
4
  require 'rest_client'
5
5
  require 'optparse'
6
6
  require 'filesize'
7
- require 'table_print'
8
7
  require 'morpheus/cli/cli_command'
9
8
  require 'morpheus/cli/mixins/provisioning_helper'
10
9
 
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -553,9 +552,7 @@ class Morpheus::Cli::NetworkDomainsCommand
553
552
  rows = network_domains.collect do |network_domain|
554
553
  {id: it['id'], name: it['name']}
555
554
  end
556
- print red
557
- tp rows, [:id, :name]
558
- print reset,"\n"
555
+ puts as_pretty_table(rows, [:id, :name], {color:red})
559
556
  return nil
560
557
  else
561
558
  return network_domains[0]
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -580,12 +579,10 @@ class Morpheus::Cli::NetworkGroupsCommand
580
579
  elsif network_groups.size > 1
581
580
  print_red_alert "#{network_groups.size} network groups found by name #{name}"
582
581
  # print_networks_table(networks, {color: red})
583
- rows = network_groups.collect do |network_group|
582
+ rows = network_groups.collect do |it|
584
583
  {id: it['id'], name: it['name']}
585
584
  end
586
- print red
587
- tp rows, [:id, :name]
588
- print reset,"\n"
585
+ puts as_pretty_table(rows, [:id, :name], {color:red})
589
586
  return nil
590
587
  else
591
588
  return network_groups[0]
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -408,12 +407,10 @@ class Morpheus::Cli::NetworkPoolServersCommand
408
407
  elsif network_pool_servers.size > 1
409
408
  print_red_alert "#{network_pool_servers.size} network pool servers found by name #{name}"
410
409
  # print_networks_table(networks, {color: red})
411
- rows = network_pool_servers.collect do |network_pool_server|
410
+ rows = network_pool_servers.collect do |it|
412
411
  {id: it['id'], name: it['name']}
413
412
  end
414
- print red
415
- tp rows, [:id, :name]
416
- print reset,"\n"
413
+ puts as_pretty_table(rows, [:id, :name], {color:red})
417
414
  return nil
418
415
  else
419
416
  return network_pool_servers[0]
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -473,12 +472,10 @@ class Morpheus::Cli::NetworkPoolsCommand
473
472
  elsif network_pools.size > 1
474
473
  print_red_alert "#{network_pools.size} network pools found by name #{name}"
475
474
  # print_networks_table(networks, {color: red})
476
- rows = network_pools.collect do |network_pool|
475
+ rows = network_pools.collect do |it|
477
476
  {id: it['id'], name: it['name']}
478
477
  end
479
- print red
480
- tp rows, [:id, :name]
481
- print reset,"\n"
478
+ puts as_pretty_table(rows, [:id, :name], {color:red})
482
479
  return nil
483
480
  else
484
481
  return network_pools[0]
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -570,12 +569,10 @@ class Morpheus::Cli::NetworkProxiesCommand
570
569
  elsif network_proxies.size > 1
571
570
  print_red_alert "#{network_proxies.size} network proxies found by name #{name}"
572
571
  # print_networks_table(networks, {color: red})
573
- rows = network_proxies.collect do |network_proxy|
572
+ rows = network_proxies.collect do |it|
574
573
  {id: it['id'], name: it['name']}
575
574
  end
576
- print red
577
- tp rows, [:id, :name]
578
- print reset,"\n"
575
+ puts as_pretty_table(rows, [:id, :name], {color:red})
579
576
  return nil
580
577
  else
581
578
  return network_proxies[0]
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -127,12 +126,10 @@ class Morpheus::Cli::NetworkServicesCommand
127
126
  elsif network_services.size > 1
128
127
  print_red_alert "#{network_services.size} network services found by name #{name}"
129
128
  # print_networks_table(networks, {color: red})
130
- rows = network_services.collect do |network_service|
129
+ rows = network_services.collect do |it|
131
130
  {id: it['id'], name: it['name']}
132
131
  end
133
- print red
134
- tp rows, [:id, :name]
135
- print reset,"\n"
132
+ puts as_pretty_table(rows, [:id, :name], {color:red})
136
133
  return nil
137
134
  else
138
135
  return network_services[0]
@@ -1,7 +1,6 @@
1
1
  require 'rest_client'
2
2
  require 'optparse'
3
3
  require 'filesize'
4
- require 'table_print'
5
4
  require 'morpheus/cli/cli_command'
6
5
  require 'morpheus/cli/mixins/infrastructure_helper'
7
6
 
@@ -834,12 +833,10 @@ class Morpheus::Cli::NetworksCommand
834
833
  elsif networks.size > 1
835
834
  print_red_alert "#{networks.size} networks found by name #{name}"
836
835
  # print_networks_table(networks, {color: red})
837
- rows = networks.collect do |network|
836
+ rows = networks.collect do |it|
838
837
  {id: it['id'], name: it['name']}
839
838
  end
840
- print red
841
- tp rows, [:id, :name]
842
- print reset,"\n"
839
+ puts as_pretty_table(rows, [:id, :name], {color:red})
843
840
  return nil
844
841
  else
845
842
  network = networks[0]
@@ -1,6 +1,4 @@
1
1
  require 'json'
2
- require 'yaml'
3
- require 'table_print'
4
2
  require 'morpheus/cli/cli_command'
5
3
 
6
4
  class Morpheus::Cli::OldCypherCommand
@@ -3,7 +3,6 @@ require 'yaml'
3
3
  require 'rest_client'
4
4
  require 'optparse'
5
5
  require 'filesize'
6
- require 'table_print'
7
6
  require 'morpheus/cli/cli_command'
8
7
  require 'morpheus/cli/mixins/infrastructure_helper'
9
8
  require 'morpheus/cli/mixins/accounts_helper'
@@ -908,9 +907,7 @@ class Morpheus::Cli::PoliciesCommand
908
907
  rows = policies.collect do |policy|
909
908
  {id: policy['id'], name: policy['name']}
910
909
  end
911
- print red
912
- tp rows, [:id, :name]
913
- print reset,"\n"
910
+ puts as_pretty_table(rows, [:id, :name], {color:red})
914
911
  return nil
915
912
  else
916
913
  policy = policies[0]