morpheus-cli 5.3.4 → 5.4.0

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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/api_client.rb +14 -1
  4. data/lib/morpheus/api/health_interface.rb +37 -3
  5. data/lib/morpheus/api/network_dhcp_relays_interface.rb +36 -0
  6. data/lib/morpheus/api/network_dhcp_servers_interface.rb +36 -0
  7. data/lib/morpheus/api/network_edge_clusters_interface.rb +26 -0
  8. data/lib/morpheus/api/network_servers_interface.rb +68 -12
  9. data/lib/morpheus/api/roles_interface.rb +7 -0
  10. data/lib/morpheus/cli/cli_command.rb +7 -8
  11. data/lib/morpheus/cli/cli_registry.rb +1 -0
  12. data/lib/morpheus/cli/{access_token_command.rb → commands/access_token_command.rb} +1 -1
  13. data/lib/morpheus/cli/{account_groups_command.rb → commands/account_groups_command.rb} +0 -8
  14. data/lib/morpheus/cli/{activity_command.rb → commands/activity_command.rb} +0 -0
  15. data/lib/morpheus/cli/commands/{standard/alias_command.rb → alias_command.rb} +0 -3
  16. data/lib/morpheus/cli/{appliance_settings_command.rb → commands/appliance_settings_command.rb} +0 -0
  17. data/lib/morpheus/cli/{approvals_command.rb → commands/approvals_command.rb} +0 -0
  18. data/lib/morpheus/cli/{apps.rb → commands/apps.rb} +0 -9
  19. data/lib/morpheus/cli/{archives_command.rb → commands/archives_command.rb} +0 -6
  20. data/lib/morpheus/cli/{backup_jobs_command.rb → commands/backup_jobs_command.rb} +0 -0
  21. data/lib/morpheus/cli/{backup_settings_command.rb → commands/backup_settings_command.rb} +0 -0
  22. data/lib/morpheus/cli/{backups_command.rb → commands/backups_command.rb} +0 -0
  23. data/lib/morpheus/cli/commands/{standard/benchmark_command.rb → benchmark_command.rb} +0 -3
  24. data/lib/morpheus/cli/{blueprints_command.rb → commands/blueprints_command.rb} +0 -0
  25. data/lib/morpheus/cli/{boot_scripts_command.rb → commands/boot_scripts_command.rb} +0 -3
  26. data/lib/morpheus/cli/{budgets_command.rb → commands/budgets_command.rb} +0 -0
  27. data/lib/morpheus/cli/commands/{standard/cat_command.rb → cat_command.rb} +0 -0
  28. data/lib/morpheus/cli/{catalog_item_types_command.rb → commands/catalog_item_types_command.rb} +0 -0
  29. data/lib/morpheus/cli/{certificates_command.rb → commands/certificates_command.rb} +0 -0
  30. data/lib/morpheus/cli/commands/change_password_command.rb +132 -0
  31. data/lib/morpheus/cli/{cloud_datastores_command.rb → commands/cloud_datastores_command.rb} +0 -4
  32. data/lib/morpheus/cli/{cloud_folders_command.rb → commands/cloud_folders_command.rb} +0 -4
  33. data/lib/morpheus/cli/{cloud_resource_pools_command.rb → commands/cloud_resource_pools_command.rb} +0 -4
  34. data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +0 -7
  35. data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +0 -6
  36. data/lib/morpheus/cli/commands/{standard/coloring_command.rb → coloring_command.rb} +0 -2
  37. data/lib/morpheus/cli/{containers_command.rb → commands/containers_command.rb} +0 -7
  38. data/lib/morpheus/cli/commands/{standard/curl_command.rb → curl_command.rb} +0 -3
  39. data/lib/morpheus/cli/{cypher_command.rb → commands/cypher_command.rb} +0 -1
  40. data/lib/morpheus/cli/{dashboard_command.rb → commands/dashboard_command.rb} +0 -2
  41. data/lib/morpheus/cli/commands/{standard/debug_command.rb → debug_command.rb} +0 -1
  42. data/lib/morpheus/cli/{deploy.rb → commands/deploy.rb} +0 -1
  43. data/lib/morpheus/cli/{deployments.rb → commands/deployments.rb} +0 -0
  44. data/lib/morpheus/cli/{deploys.rb → commands/deploys.rb} +0 -1
  45. data/lib/morpheus/cli/{doc.rb → commands/doc.rb} +1 -1
  46. data/lib/morpheus/cli/commands/{standard/echo_command.rb → echo_command.rb} +0 -2
  47. data/lib/morpheus/cli/commands/{standard/edit_profile_command.rb → edit_profile_command.rb} +15 -4
  48. data/lib/morpheus/cli/commands/{standard/edit_rc_command.rb → edit_rc_command.rb} +19 -3
  49. data/lib/morpheus/cli/{environments_command.rb → commands/environments_command.rb} +0 -5
  50. data/lib/morpheus/cli/{execute_schedules_command.rb → commands/execute_schedules_command.rb} +0 -0
  51. data/lib/morpheus/cli/{execution_request_command.rb → commands/execution_request_command.rb} +0 -2
  52. data/lib/morpheus/cli/commands/{standard/exit_command.rb → exit_command.rb} +0 -2
  53. data/lib/morpheus/cli/{file_copy_request_command.rb → commands/file_copy_request_command.rb} +0 -4
  54. data/lib/morpheus/cli/{forgot_password.rb → commands/forgot_password.rb} +0 -0
  55. data/lib/morpheus/cli/commands/{standard/get_prompt_command.rb → get_prompt_command.rb} +0 -3
  56. data/lib/morpheus/cli/{groups.rb → commands/groups.rb} +0 -7
  57. data/lib/morpheus/cli/{guidance_command.rb → commands/guidance_command.rb} +1 -1
  58. data/lib/morpheus/cli/{health_command.rb → commands/health_command.rb} +104 -19
  59. data/lib/morpheus/cli/commands/{standard/history_command.rb → history_command.rb} +0 -3
  60. data/lib/morpheus/cli/{hosts.rb → commands/hosts.rb} +0 -9
  61. data/lib/morpheus/cli/{image_builder_command.rb → commands/image_builder_command.rb} +2 -8
  62. data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
  63. data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +0 -4
  64. data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +0 -0
  65. data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +1 -1
  66. data/lib/morpheus/cli/{jobs_command.rb → commands/jobs_command.rb} +0 -0
  67. data/lib/morpheus/cli/{key_pairs.rb → commands/key_pairs.rb} +0 -6
  68. data/lib/morpheus/cli/{library_cluster_layouts_command.rb → commands/library_cluster_layouts_command.rb} +0 -4
  69. data/lib/morpheus/cli/{library_container_scripts_command.rb → commands/library_container_scripts_command.rb} +0 -0
  70. data/lib/morpheus/cli/{library_container_templates_command.rb → commands/library_container_templates_command.rb} +0 -1
  71. data/lib/morpheus/cli/{library_container_types_command.rb → commands/library_container_types_command.rb} +0 -4
  72. data/lib/morpheus/cli/{library_instance_types_command.rb → commands/library_instance_types_command.rb} +0 -4
  73. data/lib/morpheus/cli/{library_layouts_command.rb → commands/library_layouts_command.rb} +0 -4
  74. data/lib/morpheus/cli/{library_option_lists_command.rb → commands/library_option_lists_command.rb} +0 -4
  75. data/lib/morpheus/cli/{library_option_types_command.rb → commands/library_option_types_command.rb} +0 -4
  76. data/lib/morpheus/cli/{library_spec_templates_command.rb → commands/library_spec_templates_command.rb} +0 -1
  77. data/lib/morpheus/cli/{library_upgrades_command.rb → commands/library_upgrades_command.rb} +0 -4
  78. data/lib/morpheus/cli/{license.rb → commands/license.rb} +0 -3
  79. data/lib/morpheus/cli/{load_balancer_pools.rb → commands/load_balancer_pools.rb} +0 -0
  80. data/lib/morpheus/cli/{load_balancer_types.rb → commands/load_balancer_types.rb} +0 -4
  81. data/lib/morpheus/cli/{load_balancer_virtual_servers.rb → commands/load_balancer_virtual_servers.rb} +0 -0
  82. data/lib/morpheus/cli/{load_balancers.rb → commands/load_balancers.rb} +0 -1
  83. data/lib/morpheus/cli/commands/{standard/log_level_command.rb → log_level_command.rb} +0 -3
  84. data/lib/morpheus/cli/{log_settings_command.rb → commands/log_settings_command.rb} +0 -0
  85. data/lib/morpheus/cli/{login.rb → commands/login.rb} +0 -5
  86. data/lib/morpheus/cli/commands/logout.rb +63 -0
  87. data/lib/morpheus/cli/{logs_command.rb → commands/logs_command.rb} +0 -3
  88. data/lib/morpheus/cli/commands/{standard/man_command.rb → man_command.rb} +0 -2
  89. data/lib/morpheus/cli/{monitoring_alerts_command.rb → commands/monitoring_alerts_command.rb} +0 -7
  90. data/lib/morpheus/cli/{monitoring_apps_command.rb → commands/monitoring_apps_command.rb} +0 -1
  91. data/lib/morpheus/cli/{monitoring_checks_command.rb → commands/monitoring_checks_command.rb} +0 -1
  92. data/lib/morpheus/cli/{monitoring_contacts_command.rb → commands/monitoring_contacts_command.rb} +0 -7
  93. data/lib/morpheus/cli/{monitoring_groups_command.rb → commands/monitoring_groups_command.rb} +0 -1
  94. data/lib/morpheus/cli/{monitoring_incidents_command.rb → commands/monitoring_incidents_command.rb} +0 -1
  95. data/lib/morpheus/cli/commands/network_dhcp_relays_command.rb +416 -0
  96. data/lib/morpheus/cli/commands/network_dhcp_servers_command.rb +407 -0
  97. data/lib/morpheus/cli/{network_domains_command.rb → commands/network_domains_command.rb} +0 -4
  98. data/lib/morpheus/cli/commands/network_edge_clusters_command.rb +329 -0
  99. data/lib/morpheus/cli/commands/network_firewalls_command.rb +806 -0
  100. data/lib/morpheus/cli/{network_groups_command.rb → commands/network_groups_command.rb} +0 -4
  101. data/lib/morpheus/cli/{network_pool_servers_command.rb → commands/network_pool_servers_command.rb} +0 -4
  102. data/lib/morpheus/cli/{network_pools_command.rb → commands/network_pools_command.rb} +0 -4
  103. data/lib/morpheus/cli/{network_proxies_command.rb → commands/network_proxies_command.rb} +0 -4
  104. data/lib/morpheus/cli/{network_routers_command.rb → commands/network_routers_command.rb} +0 -5
  105. data/lib/morpheus/cli/{network_services_command.rb → commands/network_services_command.rb} +0 -4
  106. data/lib/morpheus/cli/{network_scopes_command.rb → commands/network_transport_zones_command.rb} +102 -92
  107. data/lib/morpheus/cli/{networks_command.rb → commands/networks_command.rb} +18 -18
  108. data/lib/morpheus/cli/{packages_command.rb → commands/packages_command.rb} +0 -2
  109. data/lib/morpheus/cli/{ping.rb → commands/ping.rb} +0 -7
  110. data/lib/morpheus/cli/{policies_command.rb → commands/policies_command.rb} +0 -7
  111. data/lib/morpheus/cli/{power_schedules_command.rb → commands/power_schedules_command.rb} +0 -0
  112. data/lib/morpheus/cli/{preseed_scripts_command.rb → commands/preseed_scripts_command.rb} +0 -3
  113. data/lib/morpheus/cli/{price_sets_command.rb → commands/price_sets_command.rb} +0 -0
  114. data/lib/morpheus/cli/{prices_command.rb → commands/prices_command.rb} +0 -0
  115. data/lib/morpheus/cli/{processes_command.rb → commands/processes_command.rb} +0 -1
  116. data/lib/morpheus/cli/{projects_command.rb → commands/projects_command.rb} +0 -0
  117. data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb} +0 -0
  118. data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb} +0 -0
  119. data/lib/morpheus/cli/{recent_activity_command.rb → commands/recent_activity_command.rb} +0 -0
  120. data/lib/morpheus/cli/{remote.rb → commands/remote.rb} +1 -7
  121. data/lib/morpheus/cli/{reports_command.rb → commands/reports_command.rb} +0 -2
  122. data/lib/morpheus/cli/commands/{standard/rm_command.rb → rm_command.rb} +0 -0
  123. data/lib/morpheus/cli/{roles.rb → commands/roles.rb} +244 -39
  124. data/lib/morpheus/cli/{search_command.rb → commands/search_command.rb} +0 -0
  125. data/lib/morpheus/cli/{security_group_rules.rb → commands/security_group_rules.rb} +0 -5
  126. data/lib/morpheus/cli/{security_groups.rb → commands/security_groups.rb} +0 -6
  127. data/lib/morpheus/cli/{service_catalog_command.rb → commands/service_catalog_command.rb} +0 -0
  128. data/lib/morpheus/cli/{service_plans_command.rb → commands/service_plans_command.rb} +0 -0
  129. data/lib/morpheus/cli/commands/{standard/set_prompt_command.rb → set_prompt_command.rb} +0 -3
  130. data/lib/morpheus/cli/{setup.rb → commands/setup.rb} +0 -0
  131. data/lib/morpheus/cli/{shell.rb → commands/shell.rb} +2 -103
  132. data/lib/morpheus/cli/commands/{standard/sleep_command.rb → sleep_command.rb} +0 -2
  133. data/lib/morpheus/cli/commands/{standard/source_command.rb → source_command.rb} +0 -2
  134. data/lib/morpheus/cli/commands/{standard/ssl_verification_command.rb → ssl_verification_command.rb} +0 -3
  135. data/lib/morpheus/cli/{storage_providers_command.rb → commands/storage_providers_command.rb} +0 -4
  136. data/lib/morpheus/cli/{subnets_command.rb → commands/subnets_command.rb} +0 -4
  137. data/lib/morpheus/cli/{tasks.rb → commands/tasks.rb} +0 -4
  138. data/lib/morpheus/cli/commands/{standard/tee_command.rb → tee_command.rb} +0 -0
  139. data/lib/morpheus/cli/{tenants_command.rb → commands/tenants_command.rb} +0 -7
  140. data/lib/morpheus/cli/commands/{standard/update_command.rb → update_command.rb} +0 -1
  141. data/lib/morpheus/cli/{usage_command.rb → commands/usage_command.rb} +0 -0
  142. data/lib/morpheus/cli/{user_groups_command.rb → commands/user_groups_command.rb} +0 -1
  143. data/lib/morpheus/cli/{user_settings_command.rb → commands/user_settings_command.rb} +0 -0
  144. data/lib/morpheus/cli/{user_sources_command.rb → commands/user_sources_command.rb} +0 -1
  145. data/lib/morpheus/cli/{users.rb → commands/users.rb} +0 -7
  146. data/lib/morpheus/cli/{vdi_allocations_command.rb → commands/vdi_allocations_command.rb} +0 -0
  147. data/lib/morpheus/cli/{vdi_apps_command.rb → commands/vdi_apps_command.rb} +0 -0
  148. data/lib/morpheus/cli/{vdi_command.rb → commands/vdi_command.rb} +0 -0
  149. data/lib/morpheus/cli/{vdi_gateways_command.rb → commands/vdi_gateways_command.rb} +0 -0
  150. data/lib/morpheus/cli/{vdi_pools_command.rb → commands/vdi_pools_command.rb} +0 -0
  151. data/lib/morpheus/cli/commands/{standard/version_command.rb → version_command.rb} +0 -0
  152. data/lib/morpheus/cli/{virtual_images.rb → commands/virtual_images.rb} +0 -4
  153. data/lib/morpheus/cli/{whitelabel_settings_command.rb → commands/whitelabel_settings_command.rb} +0 -1
  154. data/lib/morpheus/cli/{whoami.rb → commands/whoami.rb} +0 -4
  155. data/lib/morpheus/cli/{wiki_command.rb → commands/wiki_command.rb} +0 -5
  156. data/lib/morpheus/cli/{workflows.rb → commands/workflows.rb} +0 -3
  157. data/lib/morpheus/cli/mixins/logs_helper.rb +1 -1
  158. data/lib/morpheus/cli/mixins/print_helper.rb +1 -0
  159. data/lib/morpheus/cli/mixins/rest_command.rb +103 -17
  160. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +105 -18
  161. data/lib/morpheus/cli/option_types.rb +56 -19
  162. data/lib/morpheus/cli/version.rb +1 -1
  163. data/lib/morpheus/cli.rb +4 -135
  164. data/lib/morpheus/terminal.rb +5 -6
  165. metadata +150 -144
  166. data/lib/morpheus/cli/change_password_command.rb +0 -147
  167. data/lib/morpheus/cli/library.rb +0 -1
  168. data/lib/morpheus/cli/logout.rb +0 -81
@@ -33,14 +33,21 @@ module Morpheus
33
33
  end
34
34
  end
35
35
 
36
+ # supresses prompting unless --prompt has been passed
36
37
  def self.no_prompt(option_types, options={}, api_client=nil,api_params={})
37
- prompt(option_types, options, api_client, api_params, true)
38
+ if options[:always_prompt]
39
+ prompt(option_types, options, api_client, api_params)
40
+ else
41
+ prompt(option_types, options, api_client, api_params, true)
42
+ end
38
43
  end
39
44
 
40
45
  def self.prompt(option_types, options={}, api_client=nil, api_params={}, no_prompt=false, paging_enabled=false)
41
46
  paging_enabled = false if Morpheus::Cli.windows?
47
+ no_prompt = no_prompt || options[:no_prompt]
42
48
  results = {}
43
49
  options = options || {}
50
+
44
51
  # inject cli only stuff into option_types (should clone() here)
45
52
  option_types.each do |option_type|
46
53
  if options[:help_field_prefix]
@@ -54,11 +61,7 @@ module Morpheus
54
61
  # puts "Options Prompt #{options}"
55
62
  # Sort options by default, group, advanced
56
63
  cur_field_group = 'default'
57
- (
58
- option_types.reject {|it| (it['fieldGroup'] || 'default') != 'default'}.sort {|a,b| a['displayOrder'].to_i <=> b['displayOrder'].to_i} +
59
- option_types.reject {|it| ['default', 'advanced'].include?(it['fieldGroup'] || 'default')}.sort{|a,b| a['displayOrder'] <=> b['displayOrder']}.group_by{|it| it['fieldGroup']}.values.collect { |it| it.sort{|a,b| a['displayOrder'].to_i <=> b['displayOrder'].to_i}}.flatten +
60
- option_types.reject {|it| it['fieldGroup'] != 'advanced'}.sort {|a,b| a['displayOrder'].to_i <=> b['displayOrder'].to_i}
61
- ).each do |option_type|
64
+ self.sorted_option_types(option_types).each do |option_type|
62
65
  context_map = results
63
66
  value = nil
64
67
  value_found = false
@@ -66,7 +69,9 @@ module Morpheus
66
69
 
67
70
  if cur_field_group != field_group
68
71
  cur_field_group = field_group
69
- print "\n#{cur_field_group.upcase} OPTIONS\n#{"=" * ("#{cur_field_group} OPTIONS".length)}\n\n"
72
+ if !no_prompt
73
+ print "\n#{cur_field_group.upcase} OPTIONS\n#{"=" * ("#{cur_field_group} OPTIONS".length)}\n\n"
74
+ end
70
75
  end
71
76
 
72
77
  # How about this instead?
@@ -190,7 +195,6 @@ module Morpheus
190
195
  end
191
196
  # no_prompt means skip prompting and instead
192
197
  # use default value or error if a required option is not present
193
- no_prompt = no_prompt || options[:no_prompt]
194
198
  if no_prompt
195
199
  if !value_found
196
200
  if option_type['defaultValue'] != nil && !['select', 'multiSelect','typeahead','multiTypeahead'].include?(option_type['type'])
@@ -266,8 +270,11 @@ module Morpheus
266
270
  end
267
271
  end
268
272
  elsif option_type['type'] == 'hidden'
269
- value = option_type['defaultValue']
270
- input = value
273
+ if option_type['optionSource'].nil?
274
+ value = option_type['defaultValue']
275
+ else
276
+ value = load_source_options(option_type['optionSource'], option_type['optionSourceType'], api_client, api_params || {})
277
+ end
271
278
  elsif option_type['type'] == 'file'
272
279
  value = file_prompt(option_type)
273
280
  elsif option_type['type'] == 'file-content'
@@ -510,7 +517,9 @@ module Morpheus
510
517
  # this works like select_prompt, but refreshes options with ?query=value between inputs
511
518
  # paging_enabled is ignored right now
512
519
  def self.typeahead_prompt(option_type,api_client, api_params={}, no_prompt=false, use_value=nil, paging_enabled=false)
513
- select_options = []
520
+ paging_enabled = false if Morpheus::Cli.windows?
521
+ paging = nil
522
+ select_options = nil
514
523
  field_key = [option_type['fieldContext'], option_type['fieldName']].select {|it| it && it != '' }.join('.')
515
524
  help_field_key = option_type[:help_field_prefix] ? "#{option_type[:help_field_prefix]}.#{field_key}" : field_key
516
525
  input = ""
@@ -544,7 +553,8 @@ module Morpheus
544
553
  matches
545
554
  }
546
555
  # prompt for typeahead input value
547
- input = Readline.readline("#{option_type['fieldLabel']}#{option_type['fieldAddOn'] ? ('(' + option_type['fieldAddOn'] + ') ') : '' }#{!option_type['required'] ? ' (optional)' : ''}#{!default_value.to_s.empty? ? ' ['+default_value.to_s+']' : ''} ['?' for options]: ", false).to_s
556
+ has_more_pages = paging && ((paging[:cur_page] + 1) * paging[:page_size]) < paging[:total]
557
+ input = Readline.readline("#{option_type['fieldLabel']}#{option_type['fieldAddOn'] ? ('(' + option_type['fieldAddOn'] + ') ') : '' }#{!option_type['required'] ? ' (optional)' : ''}#{!default_value.to_s.empty? ? ' ['+default_value.to_s+']' : ''} ['?' for#{has_more_pages ? ' more ' : ' '}options]: ", false).to_s
548
558
  input = input.chomp.strip
549
559
  end
550
560
 
@@ -571,8 +581,22 @@ module Morpheus
571
581
  # looking for help with this input
572
582
  if input == '?'
573
583
  help_prompt(option_type)
574
- select_options = load_options(option_type, api_client, api_params)
575
- display_select_options(option_type, select_options) unless select_options.empty?
584
+ select_options = select_options || load_options(option_type, api_client, api_params)
585
+
586
+ if !select_options.empty?
587
+ if paging_enabled
588
+ if paging.nil?
589
+ option_count = select_options ? select_options.count : 0
590
+ page_size = Readline.get_screen_size[0] - 6
591
+ if page_size < option_count
592
+ paging = {:cur_page => 0, :page_size => page_size, :total => option_count}
593
+ end
594
+ else
595
+ paging[:cur_page] = (paging[:cur_page] + 1) * paging[:page_size] < paging[:total] ? paging[:cur_page] + 1 : 0
596
+ end
597
+ end
598
+ display_select_options(option_type, select_options, paging)
599
+ end
576
600
  next
577
601
  end
578
602
 
@@ -960,21 +984,29 @@ module Morpheus
960
984
  return out
961
985
  end
962
986
 
987
+ def self.sorted_option_types(option_types)
988
+ option_types.reject {|it| (it['fieldGroup'] || 'default') != 'default'}.sort {|a,b| a['displayOrder'].to_i <=> b['displayOrder'].to_i} +
989
+ option_types.reject {|it| ['default', 'advanced'].include?(it['fieldGroup'] || 'default')}.sort{|a,b| a['displayOrder'] <=> b['displayOrder']}.group_by{|it| it['fieldGroup']}.values.collect { |it| it.sort{|a,b| a['displayOrder'].to_i <=> b['displayOrder'].to_i}}.flatten +
990
+ option_types.reject {|it| it['fieldGroup'] != 'advanced'}.sort {|a,b| a['displayOrder'].to_i <=> b['displayOrder'].to_i}
991
+ end
992
+
963
993
  def self.display_select_options(opt, select_options = [], paging = nil)
964
- puts format_select_options_help(opt, select_options, paging)
994
+ puts self.format_select_options_help(opt, select_options, paging)
965
995
  end
966
996
 
967
997
  def self.format_option_types_help(option_types, opts={})
998
+ option_types = self.sorted_option_types(option_types).reject {|it| it['hidden']}
999
+
968
1000
  if option_types.empty?
969
1001
  "#{opts[:color]}#{opts[:title] || "Available Options:"}\nNone\n\n"
970
1002
  else
971
1003
  if opts[:include_context]
972
- option_lines = option_types.sort {|it| it['displayOrder']}.collect {|it|
1004
+ option_lines = option_types.collect {|it|
973
1005
  field_context = (opts[:context_map] || {})[it['fieldContext']] || it['fieldContext']
974
1006
  " -O #{field_context && field_context != '' ? "#{field_context}." : ''}#{it['fieldName']}=\"value\""
975
1007
  }
976
1008
  else
977
- option_lines = option_types.sort {|it| it['displayOrder']}.collect {|it| " -O #{it['fieldName']}=\"value\"" }
1009
+ option_lines = option_types.collect {|it| " -O #{it['fieldName']}=\"value\"" }
978
1010
  end
979
1011
  "#{opts[:color]}#{opts[:title] || "Available Options:"}\n#{option_lines.join("\n")}\n\n"
980
1012
  end
@@ -1000,11 +1032,16 @@ module Morpheus
1000
1032
 
1001
1033
  if tokens.length > 1
1002
1034
  tokens.slice(0, tokens.length - 1).each do |token|
1003
- context = context[name = token]
1035
+ context = context[token]
1004
1036
  end
1037
+ name = tokens.last
1005
1038
  end
1006
1039
 
1007
- rtn = context[name]
1040
+ if context.kind_of?(Array)
1041
+ rtn = context.collect {|it| it['name'] || it[name]}.join ', '
1042
+ else
1043
+ rtn = context[name]
1044
+ end
1008
1045
 
1009
1046
  if format
1010
1047
  rtn = (rtn ? 'On' : 'Off') if option_type['type'] == 'checkbox'
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "5.3.4"
4
+ VERSION = "5.4.0"
5
5
  end
6
6
  end
data/lib/morpheus/cli.rb CHANGED
@@ -11,12 +11,12 @@ Dir[File.dirname(__FILE__) + "/ext/*.rb"].each {|file| require file }
11
11
  module Morpheus
12
12
  module Cli
13
13
 
14
- # get the home directory, where morpheus-cli stores things
15
14
  # The default is $MORPHEUS_CLI_HOME or $HOME/.morpheus
16
15
  unless defined?(@@home_directory)
17
16
  @@home_directory = ENV['MORPHEUS_CLI_HOME'] || File.join(Dir.home, ".morpheus")
18
17
  end
19
18
 
19
+ # get the home directory, where morpheus-cli stores things
20
20
  def self.home_directory
21
21
  @@home_directory
22
22
  end
@@ -52,10 +52,7 @@ module Morpheus
52
52
  # load mixins
53
53
  Dir[File.dirname(__FILE__) + "/cli/mixins/**/*.rb"].each {|file| load file }
54
54
 
55
- # load commands
56
- # Dir[File.dirname(__FILE__) + "/cli/*.rb"].each {|file| load file }
57
-
58
- # utilites
55
+ # load utilites
59
56
  require 'morpheus/cli/cli_registry.rb'
60
57
  require 'morpheus/cli/expression_parser.rb'
61
58
  require 'morpheus/cli/dot_file.rb'
@@ -65,136 +62,8 @@ module Morpheus
65
62
  load 'morpheus/cli/option_types.rb'
66
63
  load 'morpheus/cli/credentials.rb'
67
64
 
68
- # all standard commands
69
- Dir[File.dirname(__FILE__) + "/cli/commands/standard/**/*.rb"].each {|file| load file }
70
-
71
- # all the known commands
72
- load 'morpheus/cli/remote.rb'
73
- load 'morpheus/cli/doc.rb'
74
- load 'morpheus/cli/ping.rb'
75
- load 'morpheus/cli/setup.rb'
76
- load 'morpheus/cli/login.rb'
77
- load 'morpheus/cli/logout.rb'
78
- load 'morpheus/cli/forgot_password.rb'
79
- load 'morpheus/cli/whoami.rb'
80
- load 'morpheus/cli/access_token_command.rb'
81
- load 'morpheus/cli/user_settings_command.rb'
82
- load 'morpheus/cli/search_command.rb'
83
- load 'morpheus/cli/dashboard_command.rb'
84
- load 'morpheus/cli/recent_activity_command.rb' # deprecated, removing soon
85
- load 'morpheus/cli/activity_command.rb'
86
- load 'morpheus/cli/appliance_settings_command.rb'
87
- load 'morpheus/cli/power_schedules_command.rb'
88
- load 'morpheus/cli/execute_schedules_command.rb'
89
- load 'morpheus/cli/groups.rb'
90
- load 'morpheus/cli/clouds.rb'
91
- load 'morpheus/cli/cloud_datastores_command.rb'
92
- load 'morpheus/cli/cloud_resource_pools_command.rb'
93
- load 'morpheus/cli/cloud_folders_command.rb'
94
- load 'morpheus/cli/hosts.rb'
95
- load 'morpheus/cli/load_balancers.rb'
96
- load 'morpheus/cli/load_balancer_virtual_servers.rb'
97
- # load 'morpheus/cli/load_balancer_monitors.rb'
98
- # load 'morpheus/cli/load_balancer_nodes.rb'
99
- # load 'morpheus/cli/load_balancer_policies.rb'
100
- load 'morpheus/cli/load_balancer_pools.rb'
101
- # load 'morpheus/cli/load_balancer_profiles.rb'
102
- # load 'morpheus/cli/load_balancer_scripts.rb'
103
- load 'morpheus/cli/load_balancer_types.rb'
104
- load 'morpheus/cli/shell.rb'
105
- load 'morpheus/cli/tasks.rb'
106
- load 'morpheus/cli/workflows.rb'
107
- load 'morpheus/cli/deployments.rb'
108
- load 'morpheus/cli/deploy.rb'
109
- load 'morpheus/cli/deploys.rb'
110
- load 'morpheus/cli/instances.rb'
111
- load 'morpheus/cli/containers_command.rb'
112
- load 'morpheus/cli/apps.rb'
113
- load 'morpheus/cli/blueprints_command.rb'
114
- load 'morpheus/cli/license.rb'
115
- load 'morpheus/cli/instance_types.rb'
116
- load 'morpheus/cli/jobs_command.rb'
117
- load 'morpheus/cli/integrations_command.rb'
118
- load 'morpheus/cli/security_groups.rb'
119
- load 'morpheus/cli/security_group_rules.rb'
120
- load 'morpheus/cli/clusters.rb'
121
- load 'morpheus/cli/tenants_command.rb'
122
- load 'morpheus/cli/account_groups_command.rb'
123
- load 'morpheus/cli/users.rb'
124
- load 'morpheus/cli/change_password_command.rb'
125
- load 'morpheus/cli/user_groups_command.rb'
126
- load 'morpheus/cli/user_sources_command.rb'
127
- load 'morpheus/cli/roles.rb'
128
- load 'morpheus/cli/key_pairs.rb'
129
- load 'morpheus/cli/virtual_images.rb'
130
- # load 'morpheus/cli/library.rb' # gone until we collapse these again
131
- load 'morpheus/cli/library_instance_types_command.rb'
132
- load 'morpheus/cli/library_cluster_layouts_command.rb'
133
- load 'morpheus/cli/library_layouts_command.rb'
134
- load 'morpheus/cli/library_upgrades_command.rb'
135
- load 'morpheus/cli/library_container_types_command.rb'
136
- load 'morpheus/cli/library_container_scripts_command.rb'
137
- load 'morpheus/cli/library_container_templates_command.rb'
138
- load 'morpheus/cli/library_option_types_command.rb'
139
- load 'morpheus/cli/library_option_lists_command.rb'
140
- load 'morpheus/cli/library_spec_templates_command.rb'
141
- load 'morpheus/cli/monitoring_incidents_command.rb'
142
- load 'morpheus/cli/monitoring_checks_command.rb'
143
- load 'morpheus/cli/monitoring_contacts_command.rb'
144
- load 'morpheus/cli/monitoring_alerts_command.rb'
145
- load 'morpheus/cli/monitoring_groups_command.rb'
146
- load 'morpheus/cli/monitoring_apps_command.rb'
147
- load 'morpheus/cli/logs_command.rb'
148
- load 'morpheus/cli/policies_command.rb'
149
- load 'morpheus/cli/networks_command.rb'
150
- load 'morpheus/cli/subnets_command.rb'
151
- load 'morpheus/cli/network_groups_command.rb'
152
- load 'morpheus/cli/network_pools_command.rb'
153
- load 'morpheus/cli/network_services_command.rb'
154
- load 'morpheus/cli/network_pool_servers_command.rb'
155
- load 'morpheus/cli/network_domains_command.rb'
156
- load 'morpheus/cli/network_proxies_command.rb'
157
- load 'morpheus/cli/network_routers_command.rb'
158
- load 'morpheus/cli/cypher_command.rb'
159
- load 'morpheus/cli/image_builder_command.rb'
160
- load 'morpheus/cli/preseed_scripts_command.rb'
161
- load 'morpheus/cli/boot_scripts_command.rb'
162
- load 'morpheus/cli/archives_command.rb'
163
- load 'morpheus/cli/storage_providers_command.rb'
164
- load 'morpheus/cli/execution_request_command.rb'
165
- load 'morpheus/cli/file_copy_request_command.rb'
166
- load 'morpheus/cli/processes_command.rb'
167
- load 'morpheus/cli/packages_command.rb'
168
- load 'morpheus/cli/reports_command.rb'
169
- load 'morpheus/cli/environments_command.rb'
170
- load 'morpheus/cli/backup_settings_command.rb'
171
- load 'morpheus/cli/log_settings_command.rb'
172
- load 'morpheus/cli/whitelabel_settings_command.rb'
173
- load 'morpheus/cli/wiki_command.rb'
174
- load 'morpheus/cli/approvals_command.rb'
175
- load 'morpheus/cli/service_plans_command.rb'
176
- load 'morpheus/cli/price_sets_command.rb'
177
- load 'morpheus/cli/prices_command.rb'
178
- load 'morpheus/cli/provisioning_settings_command.rb'
179
- load 'morpheus/cli/provisioning_licenses_command.rb'
180
- load 'morpheus/cli/budgets_command.rb'
181
- load 'morpheus/cli/health_command.rb'
182
- load 'morpheus/cli/invoices_command.rb'
183
- load 'morpheus/cli/guidance_command.rb'
184
- load 'morpheus/cli/projects_command.rb'
185
- load 'morpheus/cli/backups_command.rb'
186
- load 'morpheus/cli/backup_jobs_command.rb'
187
- load 'morpheus/cli/catalog_item_types_command.rb' # self-service
188
- load 'morpheus/cli/service_catalog_command.rb' # catalog (Service Catalog persona)
189
- load 'morpheus/cli/usage_command.rb'
190
- load 'morpheus/cli/vdi_pools_command.rb'
191
- load 'morpheus/cli/vdi_allocations_command.rb'
192
- load 'morpheus/cli/vdi_apps_command.rb'
193
- load 'morpheus/cli/vdi_gateways_command.rb'
194
- load 'morpheus/cli/vdi_command.rb' # (VDI persona)
195
- load 'morpheus/cli/certificates_command.rb' # (VDI persona)
196
- #load 'morpheus/cli/network_scopes_command.rb'
197
- # add new commands here...
65
+ # load all commands
66
+ Dir[File.dirname(__FILE__) + "/cli/commands/**/*.rb"].each {|file| load file }
198
67
 
199
68
  end
200
69
 
@@ -1,15 +1,13 @@
1
- #!/usr/bin/env ruby
2
- require 'term/ansicolor'
3
- require 'optparse'
4
1
  require 'morpheus/cli'
2
+ require 'morpheus/benchmarking'
3
+ require 'morpheus/logging'
5
4
  require 'morpheus/rest_client'
6
5
  require 'morpheus/cli/cli_registry'
7
6
  require 'morpheus/cli/dot_file'
8
7
  require 'morpheus/cli/error_handler'
9
8
  require 'morpheus/cli/expression_parser'
10
- require 'morpheus/logging'
11
- require 'morpheus/benchmarking'
12
- require 'morpheus/cli'
9
+ require 'morpheus/cli/option_parser'
10
+ require 'term/ansicolor'
13
11
 
14
12
  module Morpheus
15
13
 
@@ -478,6 +476,7 @@ module Morpheus
478
476
 
479
477
  # shell is a Singleton command class
480
478
  if args[0] == "shell"
479
+ require 'morpheus/cli/commands/shell'
481
480
  result = Morpheus::Cli::Shell.instance.handle(args[1..-1])
482
481
  else
483
482
  #result = Morpheus::Cli::CliRegistry.exec_expression(formatted_cmd)