morpheus-cli 5.3.4 → 5.4.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 (214) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/account_users_interface.rb +68 -0
  4. data/lib/morpheus/api/api_client.rb +69 -11
  5. data/lib/morpheus/api/audit_interface.rb +9 -0
  6. data/lib/morpheus/api/catalog_item_types_interface.rb +20 -0
  7. data/lib/morpheus/api/health_interface.rb +37 -3
  8. data/lib/morpheus/api/instances_interface.rb +49 -0
  9. data/lib/morpheus/api/load_balancer_monitors_interface.rb +9 -0
  10. data/lib/morpheus/api/load_balancer_pools_interface.rb +4 -4
  11. data/lib/morpheus/api/load_balancer_profiles_interface.rb +4 -5
  12. data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +13 -4
  13. data/lib/morpheus/api/load_balancers_interface.rb +5 -0
  14. data/lib/morpheus/api/network_dhcp_relays_interface.rb +36 -0
  15. data/lib/morpheus/api/network_dhcp_servers_interface.rb +36 -0
  16. data/lib/morpheus/api/network_edge_clusters_interface.rb +26 -0
  17. data/lib/morpheus/api/network_routers_interface.rb +9 -0
  18. data/lib/morpheus/api/network_servers_interface.rb +68 -12
  19. data/lib/morpheus/api/network_static_routes_interface.rb +36 -0
  20. data/lib/morpheus/api/ping_interface.rb +2 -0
  21. data/lib/morpheus/api/read_interface.rb +4 -3
  22. data/lib/morpheus/api/rest_interface.rb +3 -3
  23. data/lib/morpheus/api/roles_interface.rb +7 -0
  24. data/lib/morpheus/api/secondary_read_interface.rb +1 -1
  25. data/lib/morpheus/api/secondary_rest_interface.rb +19 -19
  26. data/lib/morpheus/api/setup_interface.rb +4 -0
  27. data/lib/morpheus/api/snapshots_interface.rb +19 -0
  28. data/lib/morpheus/api/storage_server_types_interface.rb +14 -0
  29. data/lib/morpheus/api/storage_servers_interface.rb +9 -0
  30. data/lib/morpheus/api/storage_volume_types_interface.rb +9 -0
  31. data/lib/morpheus/api/storage_volumes_interface.rb +9 -0
  32. data/lib/morpheus/api/users_interface.rb +16 -63
  33. data/lib/morpheus/cli/cli_command.rb +260 -13
  34. data/lib/morpheus/cli/cli_registry.rb +2 -1
  35. data/lib/morpheus/cli/{access_token_command.rb → commands/access_token_command.rb} +1 -1
  36. data/lib/morpheus/cli/{account_groups_command.rb → commands/account_groups_command.rb} +0 -8
  37. data/lib/morpheus/cli/{activity_command.rb → commands/activity_command.rb} +0 -0
  38. data/lib/morpheus/cli/commands/{standard/alias_command.rb → alias_command.rb} +1 -4
  39. data/lib/morpheus/cli/{appliance_settings_command.rb → commands/appliance_settings_command.rb} +0 -0
  40. data/lib/morpheus/cli/{approvals_command.rb → commands/approvals_command.rb} +0 -0
  41. data/lib/morpheus/cli/{apps.rb → commands/apps.rb} +14 -87
  42. data/lib/morpheus/cli/{archives_command.rb → commands/archives_command.rb} +0 -6
  43. data/lib/morpheus/cli/commands/audit.rb +188 -0
  44. data/lib/morpheus/cli/{backup_jobs_command.rb → commands/backup_jobs_command.rb} +0 -0
  45. data/lib/morpheus/cli/{backup_settings_command.rb → commands/backup_settings_command.rb} +0 -0
  46. data/lib/morpheus/cli/{backups_command.rb → commands/backups_command.rb} +0 -0
  47. data/lib/morpheus/cli/commands/{standard/benchmark_command.rb → benchmark_command.rb} +0 -3
  48. data/lib/morpheus/cli/{blueprints_command.rb → commands/blueprints_command.rb} +1 -1
  49. data/lib/morpheus/cli/{boot_scripts_command.rb → commands/boot_scripts_command.rb} +0 -3
  50. data/lib/morpheus/cli/{budgets_command.rb → commands/budgets_command.rb} +0 -0
  51. data/lib/morpheus/cli/commands/{standard/cat_command.rb → cat_command.rb} +0 -0
  52. data/lib/morpheus/cli/{catalog_item_types_command.rb → commands/catalog_item_types_command.rb} +88 -0
  53. data/lib/morpheus/cli/{certificates_command.rb → commands/certificates_command.rb} +0 -0
  54. data/lib/morpheus/cli/commands/change_password_command.rb +132 -0
  55. data/lib/morpheus/cli/{cloud_datastores_command.rb → commands/cloud_datastores_command.rb} +0 -4
  56. data/lib/morpheus/cli/{cloud_folders_command.rb → commands/cloud_folders_command.rb} +0 -4
  57. data/lib/morpheus/cli/{cloud_resource_pools_command.rb → commands/cloud_resource_pools_command.rb} +0 -4
  58. data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +0 -7
  59. data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +96 -64
  60. data/lib/morpheus/cli/commands/{standard/coloring_command.rb → coloring_command.rb} +0 -2
  61. data/lib/morpheus/cli/{containers_command.rb → commands/containers_command.rb} +0 -7
  62. data/lib/morpheus/cli/commands/{standard/curl_command.rb → curl_command.rb} +0 -3
  63. data/lib/morpheus/cli/{cypher_command.rb → commands/cypher_command.rb} +0 -1
  64. data/lib/morpheus/cli/{dashboard_command.rb → commands/dashboard_command.rb} +0 -2
  65. data/lib/morpheus/cli/commands/{standard/debug_command.rb → debug_command.rb} +0 -1
  66. data/lib/morpheus/cli/{deploy.rb → commands/deploy.rb} +0 -1
  67. data/lib/morpheus/cli/{deployments.rb → commands/deployments.rb} +0 -0
  68. data/lib/morpheus/cli/{deploys.rb → commands/deploys.rb} +0 -1
  69. data/lib/morpheus/cli/{doc.rb → commands/doc.rb} +1 -1
  70. data/lib/morpheus/cli/commands/{standard/echo_command.rb → echo_command.rb} +0 -2
  71. data/lib/morpheus/cli/commands/{standard/edit_profile_command.rb → edit_profile_command.rb} +15 -4
  72. data/lib/morpheus/cli/commands/{standard/edit_rc_command.rb → edit_rc_command.rb} +19 -3
  73. data/lib/morpheus/cli/{environments_command.rb → commands/environments_command.rb} +0 -5
  74. data/lib/morpheus/cli/{execute_schedules_command.rb → commands/execute_schedules_command.rb} +0 -0
  75. data/lib/morpheus/cli/{execution_request_command.rb → commands/execution_request_command.rb} +0 -2
  76. data/lib/morpheus/cli/commands/{standard/exit_command.rb → exit_command.rb} +0 -2
  77. data/lib/morpheus/cli/{file_copy_request_command.rb → commands/file_copy_request_command.rb} +0 -4
  78. data/lib/morpheus/cli/{forgot_password.rb → commands/forgot_password.rb} +0 -0
  79. data/lib/morpheus/cli/commands/{standard/get_prompt_command.rb → get_prompt_command.rb} +0 -3
  80. data/lib/morpheus/cli/{groups.rb → commands/groups.rb} +0 -7
  81. data/lib/morpheus/cli/{guidance_command.rb → commands/guidance_command.rb} +1 -1
  82. data/lib/morpheus/cli/{health_command.rb → commands/health_command.rb} +104 -19
  83. data/lib/morpheus/cli/commands/{standard/history_command.rb → history_command.rb} +0 -3
  84. data/lib/morpheus/cli/{hosts.rb → commands/hosts.rb} +27 -24
  85. data/lib/morpheus/cli/{image_builder_command.rb → commands/image_builder_command.rb} +6 -16
  86. data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
  87. data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +359 -7
  88. data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +1 -12
  89. data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +1 -1
  90. data/lib/morpheus/cli/{jobs_command.rb → commands/jobs_command.rb} +0 -0
  91. data/lib/morpheus/cli/{key_pairs.rb → commands/key_pairs.rb} +0 -6
  92. data/lib/morpheus/cli/{library_cluster_layouts_command.rb → commands/library_cluster_layouts_command.rb} +0 -4
  93. data/lib/morpheus/cli/{library_container_scripts_command.rb → commands/library_container_scripts_command.rb} +0 -0
  94. data/lib/morpheus/cli/{library_container_templates_command.rb → commands/library_container_templates_command.rb} +0 -1
  95. data/lib/morpheus/cli/{library_container_types_command.rb → commands/library_container_types_command.rb} +0 -4
  96. data/lib/morpheus/cli/{library_instance_types_command.rb → commands/library_instance_types_command.rb} +3 -4
  97. data/lib/morpheus/cli/{library_layouts_command.rb → commands/library_layouts_command.rb} +0 -4
  98. data/lib/morpheus/cli/{library_option_lists_command.rb → commands/library_option_lists_command.rb} +0 -4
  99. data/lib/morpheus/cli/{library_option_types_command.rb → commands/library_option_types_command.rb} +0 -4
  100. data/lib/morpheus/cli/{library_spec_templates_command.rb → commands/library_spec_templates_command.rb} +0 -1
  101. data/lib/morpheus/cli/{library_upgrades_command.rb → commands/library_upgrades_command.rb} +0 -4
  102. data/lib/morpheus/cli/{license.rb → commands/license.rb} +0 -3
  103. data/lib/morpheus/cli/commands/load_balancer_monitors.rb +70 -0
  104. data/lib/morpheus/cli/commands/load_balancer_pools.rb +90 -0
  105. data/lib/morpheus/cli/commands/load_balancer_profiles.rb +64 -0
  106. data/lib/morpheus/cli/{load_balancer_types.rb → commands/load_balancer_types.rb} +9 -8
  107. data/lib/morpheus/cli/{load_balancer_virtual_servers.rb → commands/load_balancer_virtual_servers.rb} +69 -58
  108. data/lib/morpheus/cli/commands/load_balancers.rb +192 -0
  109. data/lib/morpheus/cli/commands/{standard/log_level_command.rb → log_level_command.rb} +0 -3
  110. data/lib/morpheus/cli/{log_settings_command.rb → commands/log_settings_command.rb} +0 -0
  111. data/lib/morpheus/cli/{login.rb → commands/login.rb} +0 -5
  112. data/lib/morpheus/cli/commands/logout.rb +63 -0
  113. data/lib/morpheus/cli/{logs_command.rb → commands/logs_command.rb} +0 -3
  114. data/lib/morpheus/cli/commands/{standard/man_command.rb → man_command.rb} +0 -2
  115. data/lib/morpheus/cli/{monitoring_alerts_command.rb → commands/monitoring_alerts_command.rb} +0 -7
  116. data/lib/morpheus/cli/{monitoring_apps_command.rb → commands/monitoring_apps_command.rb} +0 -1
  117. data/lib/morpheus/cli/{monitoring_checks_command.rb → commands/monitoring_checks_command.rb} +0 -1
  118. data/lib/morpheus/cli/{monitoring_contacts_command.rb → commands/monitoring_contacts_command.rb} +0 -7
  119. data/lib/morpheus/cli/{monitoring_groups_command.rb → commands/monitoring_groups_command.rb} +0 -1
  120. data/lib/morpheus/cli/{monitoring_incidents_command.rb → commands/monitoring_incidents_command.rb} +0 -1
  121. data/lib/morpheus/cli/commands/network_dhcp_relays_command.rb +416 -0
  122. data/lib/morpheus/cli/commands/network_dhcp_servers_command.rb +407 -0
  123. data/lib/morpheus/cli/{network_domains_command.rb → commands/network_domains_command.rb} +0 -4
  124. data/lib/morpheus/cli/commands/network_edge_clusters_command.rb +329 -0
  125. data/lib/morpheus/cli/commands/network_firewalls_command.rb +823 -0
  126. data/lib/morpheus/cli/{network_groups_command.rb → commands/network_groups_command.rb} +0 -4
  127. data/lib/morpheus/cli/{network_pool_servers_command.rb → commands/network_pool_servers_command.rb} +0 -4
  128. data/lib/morpheus/cli/{network_pools_command.rb → commands/network_pools_command.rb} +0 -4
  129. data/lib/morpheus/cli/{network_proxies_command.rb → commands/network_proxies_command.rb} +0 -4
  130. data/lib/morpheus/cli/{network_routers_command.rb → commands/network_routers_command.rb} +96 -50
  131. data/lib/morpheus/cli/{network_services_command.rb → commands/network_services_command.rb} +0 -4
  132. data/lib/morpheus/cli/commands/network_static_routes_command.rb +451 -0
  133. data/lib/morpheus/cli/{network_scopes_command.rb → commands/network_transport_zones_command.rb} +102 -92
  134. data/lib/morpheus/cli/{networks_command.rb → commands/networks_command.rb} +20 -20
  135. data/lib/morpheus/cli/commands/open_command.rb +30 -0
  136. data/lib/morpheus/cli/commands/options.rb +98 -0
  137. data/lib/morpheus/cli/{packages_command.rb → commands/packages_command.rb} +0 -2
  138. data/lib/morpheus/cli/{ping.rb → commands/ping.rb} +3 -12
  139. data/lib/morpheus/cli/{policies_command.rb → commands/policies_command.rb} +2 -9
  140. data/lib/morpheus/cli/{power_schedules_command.rb → commands/power_schedules_command.rb} +0 -0
  141. data/lib/morpheus/cli/{preseed_scripts_command.rb → commands/preseed_scripts_command.rb} +0 -3
  142. data/lib/morpheus/cli/{price_sets_command.rb → commands/price_sets_command.rb} +0 -0
  143. data/lib/morpheus/cli/{prices_command.rb → commands/prices_command.rb} +7 -7
  144. data/lib/morpheus/cli/{processes_command.rb → commands/processes_command.rb} +0 -1
  145. data/lib/morpheus/cli/{projects_command.rb → commands/projects_command.rb} +0 -0
  146. data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb} +0 -0
  147. data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb} +1 -0
  148. data/lib/morpheus/cli/{recent_activity_command.rb → commands/recent_activity_command.rb} +0 -0
  149. data/lib/morpheus/cli/{remote.rb → commands/remote.rb} +21 -19
  150. data/lib/morpheus/cli/{reports_command.rb → commands/reports_command.rb} +0 -2
  151. data/lib/morpheus/cli/commands/{standard/rm_command.rb → rm_command.rb} +0 -0
  152. data/lib/morpheus/cli/{roles.rb → commands/roles.rb} +245 -40
  153. data/lib/morpheus/cli/{search_command.rb → commands/search_command.rb} +0 -0
  154. data/lib/morpheus/cli/{security_group_rules.rb → commands/security_group_rules.rb} +0 -5
  155. data/lib/morpheus/cli/{security_groups.rb → commands/security_groups.rb} +2 -8
  156. data/lib/morpheus/cli/{service_catalog_command.rb → commands/service_catalog_command.rb} +0 -0
  157. data/lib/morpheus/cli/{service_plans_command.rb → commands/service_plans_command.rb} +1 -1
  158. data/lib/morpheus/cli/commands/{standard/set_prompt_command.rb → set_prompt_command.rb} +0 -3
  159. data/lib/morpheus/cli/{setup.rb → commands/setup.rb} +1 -1
  160. data/lib/morpheus/cli/{shell.rb → commands/shell.rb} +4 -105
  161. data/lib/morpheus/cli/commands/{standard/sleep_command.rb → sleep_command.rb} +0 -2
  162. data/lib/morpheus/cli/commands/snapshots.rb +139 -0
  163. data/lib/morpheus/cli/commands/{standard/source_command.rb → source_command.rb} +0 -2
  164. data/lib/morpheus/cli/commands/{standard/ssl_verification_command.rb → ssl_verification_command.rb} +0 -3
  165. data/lib/morpheus/cli/{storage_providers_command.rb → commands/storage_providers_command.rb} +0 -4
  166. data/lib/morpheus/cli/commands/storage_server_types.rb +50 -0
  167. data/lib/morpheus/cli/commands/storage_servers.rb +122 -0
  168. data/lib/morpheus/cli/commands/storage_volume_types.rb +50 -0
  169. data/lib/morpheus/cli/commands/storage_volumes.rb +103 -0
  170. data/lib/morpheus/cli/{subnets_command.rb → commands/subnets_command.rb} +0 -4
  171. data/lib/morpheus/cli/{tasks.rb → commands/tasks.rb} +5 -9
  172. data/lib/morpheus/cli/commands/{standard/tee_command.rb → tee_command.rb} +0 -0
  173. data/lib/morpheus/cli/{tenants_command.rb → commands/tenants_command.rb} +1 -8
  174. data/lib/morpheus/cli/commands/{standard/update_command.rb → update_command.rb} +0 -1
  175. data/lib/morpheus/cli/{usage_command.rb → commands/usage_command.rb} +0 -0
  176. data/lib/morpheus/cli/{user_groups_command.rb → commands/user_groups_command.rb} +1 -2
  177. data/lib/morpheus/cli/{user_settings_command.rb → commands/user_settings_command.rb} +3 -2
  178. data/lib/morpheus/cli/{user_sources_command.rb → commands/user_sources_command.rb} +1 -2
  179. data/lib/morpheus/cli/{users.rb → commands/users.rb} +28 -35
  180. data/lib/morpheus/cli/{vdi_allocations_command.rb → commands/vdi_allocations_command.rb} +0 -0
  181. data/lib/morpheus/cli/{vdi_apps_command.rb → commands/vdi_apps_command.rb} +0 -0
  182. data/lib/morpheus/cli/{vdi_command.rb → commands/vdi_command.rb} +0 -0
  183. data/lib/morpheus/cli/{vdi_gateways_command.rb → commands/vdi_gateways_command.rb} +0 -0
  184. data/lib/morpheus/cli/{vdi_pools_command.rb → commands/vdi_pools_command.rb} +0 -0
  185. data/lib/morpheus/cli/commands/{standard/version_command.rb → version_command.rb} +0 -0
  186. data/lib/morpheus/cli/commands/view.rb +102 -0
  187. data/lib/morpheus/cli/{virtual_images.rb → commands/virtual_images.rb} +4 -5
  188. data/lib/morpheus/cli/{whitelabel_settings_command.rb → commands/whitelabel_settings_command.rb} +0 -1
  189. data/lib/morpheus/cli/{whoami.rb → commands/whoami.rb} +0 -4
  190. data/lib/morpheus/cli/{wiki_command.rb → commands/wiki_command.rb} +0 -5
  191. data/lib/morpheus/cli/{workflows.rb → commands/workflows.rb} +0 -3
  192. data/lib/morpheus/cli/mixins/accounts_helper.rb +5 -5
  193. data/lib/morpheus/cli/mixins/load_balancers_helper.rb +24 -4
  194. data/lib/morpheus/cli/mixins/logs_helper.rb +1 -1
  195. data/lib/morpheus/cli/mixins/print_helper.rb +51 -18
  196. data/lib/morpheus/cli/mixins/processes_helper.rb +1 -2
  197. data/lib/morpheus/cli/mixins/provisioning_helper.rb +96 -6
  198. data/lib/morpheus/cli/mixins/rest_command.rb +222 -62
  199. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +249 -70
  200. data/lib/morpheus/cli/mixins/storage_servers_helper.rb +156 -0
  201. data/lib/morpheus/cli/mixins/storage_volumes_helper.rb +119 -0
  202. data/lib/morpheus/cli/option_types.rb +150 -46
  203. data/lib/morpheus/cli/version.rb +1 -1
  204. data/lib/morpheus/cli.rb +5 -135
  205. data/lib/morpheus/ext/string.rb +29 -6
  206. data/lib/morpheus/routes.rb +238 -0
  207. data/lib/morpheus/terminal.rb +5 -6
  208. data/lib/morpheus/util.rb +6 -1
  209. metadata +174 -144
  210. data/lib/morpheus/cli/change_password_command.rb +0 -147
  211. data/lib/morpheus/cli/library.rb +0 -1
  212. data/lib/morpheus/cli/load_balancer_pools.rb +0 -111
  213. data/lib/morpheus/cli/load_balancers.rb +0 -90
  214. data/lib/morpheus/cli/logout.rb +0 -81
@@ -1,15 +1,11 @@
1
- require 'rest_client'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/infrastructure_helper'
6
2
 
7
- class Morpheus::Cli::NetworkScopesCommand
3
+ class Morpheus::Cli::NetworkTransportZonesCommand
8
4
  include Morpheus::Cli::CliCommand
9
5
  include Morpheus::Cli::ProvisioningHelper
10
6
  include Morpheus::Cli::WhoamiHelper
11
7
 
12
- set_command_name :'network-scopes'
8
+ set_command_name :'network-transport-zones'
13
9
  register_subcommands :list, :get, :add, :update, :remove
14
10
 
15
11
  def connect(opts)
@@ -27,44 +23,45 @@ class Morpheus::Cli::NetworkScopesCommand
27
23
  options = {}
28
24
  optparse = Morpheus::Cli::OptionParser.new do |opts|
29
25
  opts.banner = subcommand_usage("[server]")
30
- build_common_options(opts, options, [:json, :yaml, :csv, :fields, :dry_run, :remote])
31
- opts.footer = "List network scopes." + "\n" +
32
- "[server] is required. This is the name or id of a network server."
26
+ build_common_options(opts, options, [:list, :query, :json, :yaml, :csv, :fields, :dry_run, :remote])
27
+ opts.footer = "List network transport zones." + "\n" +
28
+ "[server] is optional. This is the name or id of a network server."
33
29
  end
34
30
 
35
31
  optparse.parse!(args)
36
32
  connect(options)
37
33
 
38
- if args.count < 1
39
- puts optparse
34
+ if args.count > 1
35
+ print_error Morpheus::Terminal.angry_prompt
36
+ puts_error "wrong number of arguments, expected 0-1 and got (#{args.count}) #{args.inspect}\n#{optparse}"
40
37
  return 1
41
38
  end
42
39
 
43
- server = find_network_server(args[0])
44
- if server.nil?
45
- return 1
46
- end
40
+ server_id = args.count > 0 ? args[0] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'networkServer', 'type' => 'select', 'fieldLabel' => 'Network Server', 'selectOptions' => search_network_servers.collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Network Server.'}],options[:options],@api_client,{})['networkServer']
41
+ server = find_network_server(server_id)
42
+ return 1 if server.nil?
47
43
 
48
44
  _list(server, options)
49
45
  end
50
46
 
51
47
  def _list(server, options)
48
+ params = parse_list_options(options)
52
49
  @network_servers_interface.setopts(options)
53
50
 
54
51
  if options[:dry_run]
55
- print_dry_run @network_servers_interface.dry.list_scopes(server['id'])
52
+ print_dry_run @network_servers_interface.dry.list_scopes(server['id'], params)
56
53
  return
57
54
  end
58
55
 
59
56
  if server['type']['hasScopes']
60
- json_response = @network_servers_interface.list_scopes(server['id'])
57
+ json_response = @network_servers_interface.list_scopes(server['id'], params)
61
58
  render_response(json_response, options, 'networkScopes') do
62
- print_h1 "Network Scopes For: #{server['name']}"
59
+ print_h1 "Network transport zones For: #{server['name']}"
63
60
  print cyan
64
61
  print_scopes(server, json_response['networkScopes'])
65
62
  end
66
63
  else
67
- print_red_alert "Scopes not supported for #{server['type']['name']}"
64
+ print_red_alert "Transport zones not supported for #{server['type']['name']}"
68
65
  end
69
66
  print reset
70
67
  end
@@ -72,37 +69,40 @@ class Morpheus::Cli::NetworkScopesCommand
72
69
  def get(args)
73
70
  options = {}
74
71
  optparse = Morpheus::Cli::OptionParser.new do |opts|
75
- opts.banner = subcommand_usage("[server] [scope]")
72
+ opts.banner = subcommand_usage("[server] [transport zone]")
76
73
  build_common_options(opts, options, [:json, :yaml, :csv, :fields, :dry_run, :remote])
77
- opts.footer = "Display details on a network scope." + "\n" +
78
- "[server] is required. This is the name or id of a network server.\n" +
79
- "[scope] is required. This is the id of a network scope.\n"
74
+ opts.footer = "Display details on a network transport zone." + "\n" +
75
+ "[server] is optional. This is the name or id of a network server.\n" +
76
+ "[transport zone] is optional. This is the id of a network transport zone.\n"
80
77
  end
81
78
 
82
79
  optparse.parse!(args)
83
80
  connect(options)
84
81
 
85
- if args.count < 2
86
- puts optparse
82
+ if args.count > 2
83
+ print_error Morpheus::Terminal.angry_prompt
84
+ puts_error "wrong number of arguments, expected 0-2 and got (#{args.count}) #{args.inspect}\n#{optparse}"
87
85
  return 1
88
86
  end
89
87
 
90
- server = find_network_server(args[0])
91
- if server.nil?
92
- return 1
93
- end
88
+ server_id = args.count > 0 ? args[0] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'networkServer', 'type' => 'select', 'fieldLabel' => 'Network Server', 'selectOptions' => search_network_servers.collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Network Server.'}],options[:options],@api_client,{})['networkServer']
89
+ server = find_network_server(server_id)
90
+ return 1 if server.nil?
91
+
92
+ scope_id = args.count > 1 ? args[1] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'rule', 'type' => 'select', 'fieldLabel' => 'Transport Zone', 'selectOptions' => search_scopes(server['id']).collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Transport Zone.'}],options[:options],@api_client,{})['rule']
94
93
 
95
- _get(server, args[1], options)
94
+ _get(server, scope_id, options)
96
95
  end
97
96
 
98
97
  def _get(server, scope_id, options)
98
+ params = parse_list_options(options)
99
99
  @network_servers_interface.setopts(options)
100
100
 
101
101
  if options[:dry_run]
102
102
  if scope_id.to_s =~ /\A\d{1,}\Z/
103
- print_dry_run @network_servers_interface.dry.get_scope(server['id'], scope_id.to_i)
103
+ print_dry_run @network_servers_interface.dry.get_scope(server['id'], scope_id.to_i, params)
104
104
  else
105
- print_dry_run @network_servers_interface.dry.list_scopes(server['id'], {name: scope_id})
105
+ print_dry_run @network_servers_interface.dry.list_scopes(server['id'], {name: scope_id}, params)
106
106
  end
107
107
  return
108
108
  end
@@ -113,7 +113,7 @@ class Morpheus::Cli::NetworkScopesCommand
113
113
  return 1 if scope.nil?
114
114
 
115
115
  render_response({networkScope: scope}, options, 'networkScope') do
116
- print_h1 "Network Scope Details"
116
+ print_h1 "Network Transport Zone Details"
117
117
  print cyan
118
118
 
119
119
  description_cols = {
@@ -128,13 +128,13 @@ class Morpheus::Cli::NetworkScopesCommand
128
128
  description_cols["Tenants"] = lambda {|it| it['tenants'].collect {|tenant| tenant['name']}.join(', ')}
129
129
  end
130
130
 
131
- server['type']['scopeOptionTypes'].sort_by {|it| it['displayOrder']}.each do |option_type|
131
+ server['type']['scopeOptionTypes'].reject {|it| it['type'] == 'hidden'}.sort_by {|it| it['displayOrder']}.each do |option_type|
132
132
  description_cols[option_type['fieldLabel']] = lambda {|it| Morpheus::Cli::OptionTypes.get_option_value(it, option_type, true)}
133
133
  end
134
134
  print_description_list(description_cols, scope)
135
135
  end
136
136
  else
137
- print_red_alert "Scopes not supported for #{server['type']['name']}"
137
+ print_red_alert "Transport zones not supported for #{server['type']['name']}"
138
138
  end
139
139
  println reset
140
140
  end
@@ -144,32 +144,32 @@ class Morpheus::Cli::NetworkScopesCommand
144
144
  params = {}
145
145
  optparse = Morpheus::Cli::OptionParser.new do|opts|
146
146
  opts.banner = subcommand_usage("[server]")
147
- opts.on( '--name NAME', "Name" ) do |val|
148
- options[:name] = val.to_s
147
+ opts.on('-n', '--name VALUE', String, "Name" ) do |val|
148
+ options[:options]['name'] = val.to_s
149
149
  end
150
- opts.on("--description [TEXT]", String, "Description") do |val|
151
- options[:description] = val.to_s
150
+ opts.on('-D', '--description VALUE', String, "Description") do |val|
151
+ options[:options]['description'] = val.to_s
152
152
  end
153
153
  add_perms_options(opts, options, ['plans', 'groups'])
154
154
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote])
155
- opts.footer = "Create a network scope." + "\n" +
156
- "[server] is required. This is the name or id of a network server.\n";
155
+ opts.footer = "Create a network transport zone." + "\n" +
156
+ "[server] is optional. This is the name or id of a network server.\n";
157
157
  end
158
158
  optparse.parse!(args)
159
159
  connect(options)
160
- if args.count < 1
160
+
161
+ if args.count > 1
161
162
  print_error Morpheus::Terminal.angry_prompt
162
- puts_error "wrong number of arguments, expected 1 and got (#{args.count}) #{args.inspect}\n#{optparse}"
163
+ puts_error "wrong number of arguments, expected 0-1 and got (#{args.count}) #{args.inspect}\n#{optparse}"
163
164
  return 1
164
165
  end
165
166
 
166
- server = find_network_server(args[0])
167
- if server.nil?
168
- return 1
169
- end
167
+ server_id = args.count > 0 ? args[0] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'networkServer', 'type' => 'select', 'fieldLabel' => 'Network Server', 'selectOptions' => search_network_servers.collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Network Server.'}],options[:options],@api_client,{})['networkServer']
168
+ server = find_network_server(server_id)
169
+ return 1 if server.nil?
170
170
 
171
171
  if !server['type']['hasScopes']
172
- print_red_alert "Scopes not supported for #{server['type']['name']}"
172
+ print_red_alert "Transport zones not supported for #{server['type']['name']}"
173
173
  return 1
174
174
  end
175
175
 
@@ -199,7 +199,7 @@ class Morpheus::Cli::NetworkScopesCommand
199
199
 
200
200
  json_response = @network_servers_interface.create_scope(server['id'], payload)
201
201
  render_response(json_response, options, 'networkScope') do
202
- print_green_success "\nAdded Network Scope #{json_response['id']}\n"
202
+ print_green_success "\nAdded Network Transport Zone #{json_response['id']}\n"
203
203
  _get(server, json_response['id'], options)
204
204
  end
205
205
  end
@@ -208,36 +208,36 @@ class Morpheus::Cli::NetworkScopesCommand
208
208
  options = {:options=>{}}
209
209
  params = {}
210
210
  optparse = Morpheus::Cli::OptionParser.new do|opts|
211
- opts.banner = subcommand_usage("[server] [scope]")
212
- opts.on( '--name NAME', "Name" ) do |val|
213
- params['name'] = val.to_s
211
+ opts.banner = subcommand_usage("[server] [transport zone]")
212
+ opts.on('-n', '--name VALUE', String, "Name" ) do |val|
213
+ options[:options]['name'] = val.to_s
214
214
  end
215
- opts.on("--description [TEXT]", String, "Description") do |val|
216
- params['description'] = val.to_s
215
+ opts.on('-D', '--description VALUE', String, "Description") do |val|
216
+ options[:options]['description'] = val.to_s
217
217
  end
218
218
  add_perms_options(opts, options, ['plans', 'groups'])
219
219
  build_common_options(opts, options, [:options, :payload, :json, :dry_run, :remote])
220
- opts.footer = "Update a network scope.\n" +
221
- "[server] is required. This is the name or id of an existing network server.\n" +
222
- "[scope] is required. This is the name or id of an existing network scope."
220
+ opts.footer = "Update a network transport zone.\n" +
221
+ "[server] is optional. This is the name or id of an existing network server.\n" +
222
+ "[transport zone] is optional. This is the name or id of an existing network transport zone."
223
223
  end
224
224
  optparse.parse!(args)
225
- if args.count != 2
226
- raise_command_error "wrong number of arguments, expected 2 and got (#{args.count}) #{args}\n#{optparse}"
225
+ if args.count > 2
226
+ raise_command_error "wrong number of arguments, expected 0-2 and got (#{args.count}) #{args}\n#{optparse}"
227
227
  end
228
228
  connect(options)
229
229
 
230
- server = find_network_server(args[0])
231
- if server.nil?
232
- return 1
233
- end
230
+ server_id = args.count > 0 ? args[0] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'networkServer', 'type' => 'select', 'fieldLabel' => 'Network Server', 'selectOptions' => search_network_servers.collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Network Server.'}],options[:options],@api_client,{})['networkServer']
231
+ server = find_network_server(server_id)
232
+ return 1 if server.nil?
234
233
 
235
234
  if !server['type']['hasScopes']
236
- print_red_alert "Scopes not supported for #{server['type']['name']}"
235
+ print_red_alert "Transport zones not supported for #{server['type']['name']}"
237
236
  return 1
238
237
  end
239
238
 
240
- scope = find_scope(server['id'], args[1])
239
+ scope_id = args.count > 1 ? args[1] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'scope', 'type' => 'select', 'fieldLabel' => 'Transport Zone', 'selectOptions' => search_scopes(server['id']).collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Transport Zone.'}],options[:options],@api_client,{})['scope']
240
+ scope = find_scope(server['id'], scope_id)
241
241
  return 1 if scope.nil?
242
242
 
243
243
  payload = parse_payload(options) || {'networkScope' => params}
@@ -254,10 +254,14 @@ class Morpheus::Cli::NetworkScopesCommand
254
254
  option_types = server['type']['scopeOptionTypes'].sort_by {|it| it['displayOrder']}
255
255
  print_green_success "Nothing to update"
256
256
  println cyan
257
- print Morpheus::Cli::OptionTypes.display_option_types_help(
258
- option_types,
259
- {:include_context => true, :context_map => {'scope' => ''}, :color => cyan, :title => "Available Scope Options"}
260
- )
257
+ edit_option_types = option_types.reject {|it| !it['editable'] || !it['showOnEdit']}
258
+
259
+ if edit_option_types.count > 0
260
+ print Morpheus::Cli::OptionTypes.display_option_types_help(
261
+ option_types,
262
+ {:include_context => true, :context_map => {'scope' => ''}, :color => cyan, :title => "Available Transport Zone Options"}
263
+ )
264
+ end
261
265
  exit 1
262
266
  end
263
267
 
@@ -272,7 +276,7 @@ class Morpheus::Cli::NetworkScopesCommand
272
276
 
273
277
  json_response = @network_servers_interface.update_scope(server['id'], scope['id'], payload)
274
278
  render_response(json_response, options, 'networkScope') do
275
- print_green_success "\nUpdated Network Scope #{scope['id']}\n"
279
+ print_green_success "\nUpdated Network Transport Zone #{scope['id']}\n"
276
280
  _get(server, scope['id'], options)
277
281
  end
278
282
  end
@@ -280,32 +284,32 @@ class Morpheus::Cli::NetworkScopesCommand
280
284
  def remove(args)
281
285
  options = {}
282
286
  optparse = Morpheus::Cli::OptionParser.new do |opts|
283
- opts.banner = subcommand_usage("[server] [scope]")
287
+ opts.banner = subcommand_usage("[server] [transport zone]")
284
288
  build_common_options(opts, options, [:auto_confirm, :json, :dry_run, :quiet, :remote])
285
- opts.footer = "Delete a network scope.\n" +
286
- "[server] is required. This is the name or id of an existing network server.\n" +
287
- "[scope] is required. This is the name or id of an existing network scope."
289
+ opts.footer = "Delete a network transport zone.\n" +
290
+ "[server] is optional. This is the name or id of an existing network server.\n" +
291
+ "[transport zone] is optional. This is the name or id of an existing network transport zone."
288
292
  end
289
293
  optparse.parse!(args)
290
- if args.count != 2
291
- raise_command_error "wrong number of arguments, expected 2 and got (#{args.count}) #{args}\n#{optparse}"
294
+ if args.count > 2
295
+ raise_command_error "wrong number of arguments, expected 0-2 and got (#{args.count}) #{args}\n#{optparse}"
292
296
  end
293
297
  connect(options)
294
298
 
295
- server = find_network_server(args[0])
296
- if server.nil?
297
- return 1
298
- end
299
+ server_id = args.count > 0 ? args[0] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'networkServer', 'type' => 'select', 'fieldLabel' => 'Network Server', 'selectOptions' => search_network_servers.collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Network Server.'}],options[:options],@api_client,{})['networkServer']
300
+ server = find_network_server(server_id)
301
+ return 1 if server.nil?
299
302
 
300
303
  if !server['type']['hasScopes']
301
- print_red_alert "Scopes not supported for #{server['type']['name']}"
304
+ print_red_alert "Transport zones not supported for #{server['type']['name']}"
302
305
  return 1
303
306
  end
304
307
 
305
- scope = find_scope(server['id'], args[1])
308
+ scope_id = args.count > 1 ? args[1] : Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'scope', 'type' => 'select', 'fieldLabel' => 'Transport Zone', 'selectOptions' => search_scopes(server['id']).collect {|it| {'name' => it['name'], 'value' => it['id']}}, 'required' => true, 'description' => 'Select Transport Zone.'}],options[:options],@api_client,{})['scope']
309
+ scope = find_scope(server['id'], scope_id)
306
310
  return 1 if scope.nil?
307
311
 
308
- unless options[:yes] || ::Morpheus::Cli::OptionTypes::confirm("Are you sure you would like to remove the network scope '#{scope['name']}' from server '#{server['name']}'?", options)
312
+ unless options[:yes] || ::Morpheus::Cli::OptionTypes::confirm("Are you sure you would like to remove the network transport zone '#{scope['name']}' from server '#{server['name']}'?", options)
309
313
  return 9, "aborted command"
310
314
  end
311
315
 
@@ -317,7 +321,7 @@ class Morpheus::Cli::NetworkScopesCommand
317
321
  end
318
322
  json_response = @network_servers_interface.destroy_scope(server['id'], scope['id'])
319
323
  render_response(json_response, options, 'networkScope') do
320
- print_green_success "\nDeleted Network Scope #{scope['name']}\n"
324
+ print_green_success "\nDeleted Network Transport Zone #{scope['name']}\n"
321
325
  _list(server, options)
322
326
  end
323
327
  end
@@ -351,7 +355,7 @@ class Morpheus::Cli::NetworkScopesCommand
351
355
  end
352
356
  puts as_pretty_table(rows, cols)
353
357
  else
354
- println "No Scopes\n"
358
+ println "No transport zones\n"
355
359
  end
356
360
  end
357
361
 
@@ -380,8 +384,7 @@ class Morpheus::Cli::NetworkScopesCommand
380
384
  end
381
385
 
382
386
  def find_network_server_by_name(name)
383
- json_response = @network_servers_interface.list({phrase: name.to_s})
384
- servers = json_response['networkServers']
387
+ servers = search_network_servers(name)
385
388
  if servers.empty?
386
389
  print_red_alert "Network Server not found by name #{name}"
387
390
  return nil
@@ -397,6 +400,10 @@ class Morpheus::Cli::NetworkScopesCommand
397
400
  end
398
401
  end
399
402
 
403
+ def search_network_servers(phrase = nil)
404
+ @network_servers_interface.list(phrase ? {phrase: phrase.to_s} : {})['networkServers']
405
+ end
406
+
400
407
  def find_scope(server_id, val)
401
408
  if val.to_s =~ /\A\d{1,}\Z/
402
409
  return find_scope_by_id(server_id, val)
@@ -413,7 +420,7 @@ class Morpheus::Cli::NetworkScopesCommand
413
420
  return json_response['networkScope']
414
421
  rescue RestClient::Exception => e
415
422
  if e.response && e.response.code == 404
416
- print_red_alert "Network Scope not found by id #{id}"
423
+ print_red_alert "Network transport zone not found by id #{scope_id}"
417
424
  return nil
418
425
  else
419
426
  raise e
@@ -422,13 +429,12 @@ class Morpheus::Cli::NetworkScopesCommand
422
429
  end
423
430
 
424
431
  def find_scope_by_name(server_id, name)
425
- json_response = @network_servers_interface.list_scope(server_id, {phrase: name.to_s})
426
- scopes = json_response['networkScopes']
432
+ scopes = search_scopes(server_id, name)
427
433
  if scopes.empty?
428
- print_red_alert "Network Scope not found by name #{name}"
434
+ print_red_alert "Network transport zone not found by name #{name}"
429
435
  return nil
430
436
  elsif scopes.size > 1
431
- print_red_alert "#{scopes.size} network scopes found by name #{name}"
437
+ print_red_alert "#{scopes.size} network transport zones found by name #{name}"
432
438
  rows = scopes.collect do |it|
433
439
  {id: it['id'], name: it['name']}
434
440
  end
@@ -439,4 +445,8 @@ class Morpheus::Cli::NetworkScopesCommand
439
445
  end
440
446
  end
441
447
 
448
+ def search_scopes(server_id, phrase = nil)
449
+ @network_servers_interface.list_scopes(server_id, phrase ? {phrase: phrase.to_s} : {})['networkScopes']
450
+ end
451
+
442
452
  end
@@ -1,8 +1,4 @@
1
- require 'rest_client'
2
- require 'optparse'
3
- require 'filesize'
4
1
  require 'morpheus/cli/cli_command'
5
- require 'morpheus/cli/mixins/infrastructure_helper'
6
2
 
7
3
  class Morpheus::Cli::NetworksCommand
8
4
  include Morpheus::Cli::CliCommand
@@ -193,7 +189,7 @@ class Morpheus::Cli::NetworksCommand
193
189
  print cyan
194
190
  description_cols = {
195
191
  "ID" => 'id',
196
- "Name" => 'name',
192
+ "Name" => lambda {|it| it['displayName'] ? it['displayName'] : it['name'] },
197
193
  "Description" => 'description',
198
194
  "Type" => lambda {|it| it['type'] ? it['type']['name'] : '' },
199
195
  "Group" => lambda {|it| it['group'] ? it['group']['name'] : 'Shared' },
@@ -246,7 +242,7 @@ class Morpheus::Cli::NetworksCommand
246
242
  subnet_rows = subnets.collect { |subnet|
247
243
  {
248
244
  id: subnet['id'],
249
- name: " #{subnet['name']}",
245
+ name: " #{subnet['displayName'] || subnet['name']}",
250
246
  # type: subnet['type'] ? subnet['type']['name'] : '',
251
247
  type: "Subnet",
252
248
  cloud: network['zone'] ? network['zone']['name'] : '',
@@ -510,7 +506,7 @@ class Morpheus::Cli::NetworksCommand
510
506
  print_red_alert "Network Type not found by id '#{network_type_id}'"
511
507
  return 1
512
508
  end
513
-
509
+
514
510
  if network_type['hasNetworkServer']
515
511
  api_params = {networkType: {id: network_type['id']}}
516
512
 
@@ -628,7 +624,7 @@ class Morpheus::Cli::NetworksCommand
628
624
  end
629
625
 
630
626
  # Active
631
- if options['active'].nil?
627
+ if options['active'].nil? && payload['network']['active'].nil?
632
628
  v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'active', 'fieldLabel' => 'Active', 'type' => 'checkbox', 'required' => false, 'description' => '', 'defaultValue' => true}], options)
633
629
  payload['network']['active'] = v_prompt['active']
634
630
  else
@@ -636,7 +632,7 @@ class Morpheus::Cli::NetworksCommand
636
632
  end
637
633
 
638
634
  # DHCP Server
639
- if network_type['dhcpServerEditable']
635
+ if network_type['dhcpServerEditable'] && payload['network']['dhcpServer'].nil?
640
636
  if options['dhcpServer'] != nil
641
637
  payload['network']['dhcpServer'] = options['dhcpServer']
642
638
  else
@@ -646,17 +642,19 @@ class Morpheus::Cli::NetworksCommand
646
642
  end
647
643
 
648
644
  # Allow IP Override
649
- if options['allowStaticOverride'] != nil
650
- payload['network']['allowStaticOverride'] = options['allowStaticOverride']
651
- else
652
- v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'allowStaticOverride', 'fieldLabel' => 'Allow IP Override', 'type' => 'checkbox', 'required' => false, 'description' => ''}], options)
653
- payload['network']['allowStaticOverride'] = v_prompt['allowStaticOverride']
645
+ if network_type['staticOverrideEditable'] && payload['network']['allowStaticOverride'].nil?
646
+ if options['allowStaticOverride'] != nil
647
+ payload['network']['allowStaticOverride'] = options['allowStaticOverride']
648
+ else
649
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'allowStaticOverride', 'fieldLabel' => 'Allow IP Override', 'type' => 'checkbox', 'required' => false, 'description' => ''}], options)
650
+ payload['network']['allowStaticOverride'] = v_prompt['allowStaticOverride']
651
+ end
654
652
  end
655
653
 
656
654
  ## IPAM Options
657
655
 
658
656
  # Network Pool
659
- if network_type['canAssignPool']
657
+ if network_type['canAssignPool'] && payload['network']['pool'].nil?
660
658
  if options['pool']
661
659
  payload['network']['pool'] = options['pool'].to_i
662
660
  else
@@ -669,11 +667,13 @@ class Morpheus::Cli::NetworksCommand
669
667
  ## Advanced Options
670
668
 
671
669
  # Network Domain
672
- if options['domain']
673
- payload['network']['networkDomain'] = {'id' => options['domain'].to_i}
674
- else
675
- v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'domain', 'fieldLabel' => 'Network Domain', 'type' => 'select', 'optionSource' => 'networkDomains', 'required' => false, 'description' => ''}], options, @api_client)
676
- payload['network']['networkDomain'] = {'id' => v_prompt['domain'].to_i} unless v_prompt['domain'].to_s.empty?
670
+ if network_type['networkDomainEditable'] && payload['network']['networkDomain'].nil?
671
+ if options['domain']
672
+ payload['network']['networkDomain'] = {'id' => options['domain'].to_i}
673
+ else
674
+ v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'domain', 'fieldLabel' => 'Network Domain', 'type' => 'select', 'optionSource' => 'networkDomains', 'required' => false, 'description' => ''}], options, @api_client)
675
+ payload['network']['networkDomain'] = {'id' => v_prompt['domain'].to_i} unless v_prompt['domain'].to_s.empty?
676
+ end
677
677
  end
678
678
 
679
679
  # Search Domains
@@ -0,0 +1,30 @@
1
+ require 'morpheus/cli/cli_command'
2
+
3
+ # This is for opening a file
4
+ class Morpheus::Cli::OpenCommand
5
+ include Morpheus::Cli::CliCommand
6
+ set_command_name :open
7
+ set_command_hidden
8
+
9
+ def handle(args)
10
+ append_newline = true
11
+ options = {}
12
+ optparse = Morpheus::Cli::OptionParser.new do|opts|
13
+ opts.banner = "Usage: morpheus #{command_name} [file ...]"
14
+ build_common_options(opts, options, [:dry_run])
15
+ opts.footer = "Open file(s)." + "\n" +
16
+ "[file] is required. This is the name of a file. Supports many [file] arguments."
17
+ end
18
+ optparse.parse!(args)
19
+ verify_args!(args:args, optparse:optparse, min: 1)
20
+ open_args = args.join(" ")
21
+ if options[:dry_run]
22
+ print "\n"
23
+ print "#{cyan}#{bold}#{dark}SYSTEM COMMAND#{reset}\n"
24
+ puts Morpheus::Util.open_url_command(open_args)
25
+ return 0, nil
26
+ end
27
+ return Morpheus::Util.open_url(open_args)
28
+ end
29
+
30
+ end
@@ -0,0 +1,98 @@
1
+ require 'morpheus/cli/cli_command'
2
+
3
+ class Morpheus::Cli::Options
4
+ include Morpheus::Cli::CliCommand
5
+
6
+ set_command_description "List options by source name or option type"
7
+ set_command_name :'options'
8
+
9
+ # options is not published yet
10
+ set_command_hidden
11
+
12
+ def connect(opts)
13
+ @api_client = establish_remote_appliance_connection(opts)
14
+ @options_interface = @api_client.options
15
+ end
16
+
17
+ def handle(args)
18
+ list(args)
19
+ end
20
+
21
+ def list(args)
22
+ options = {}
23
+ params = {}
24
+ optparse = Morpheus::Cli::OptionParser.new do |opts|
25
+ opts.banner = "Usage: morpheus #{command_name} [source] [option-type]"
26
+ # build_standard_list_options(opts, options)
27
+ build_standard_get_options(opts, options)
28
+ opts.footer = <<-EOT
29
+ View options by source name or list options for a specific library option type.
30
+ [source] is required. This is the name of the options source to load eg. "currencies"
31
+ [option-type] is required when [source] is 'list'. This is the name or id of an option type to view.
32
+
33
+ Examples:
34
+ options currencies
35
+ options dnsRecordType
36
+ options list "widgets"
37
+ EOT
38
+ end
39
+ optparse.parse!(args)
40
+ source_name = args[0]
41
+ option_type_id = args.size > 1 ? args[1..-1].join(" ") : nil
42
+ if source_name == "list"
43
+ verify_args!(args:args, optparse:optparse, min: 2)
44
+ else
45
+ verify_args!(args:args, optparse:optparse, count: 1)
46
+ end
47
+ connect(options)
48
+ params.merge!(parse_list_options(options))
49
+ if source_name == "list"
50
+ if option_type_id.to_s =~ /\A\d{1,}\Z/
51
+ params["optionTypeId"] = option_type_id
52
+ else
53
+ option_type = find_by_name_or_id(:option_type, option_type_id)
54
+ if option_type.nil?
55
+ return 1, "Option Type not found by name '#{option_type_id}'"
56
+ end
57
+ params["optionTypeId"] = option_type["id"]
58
+ end
59
+ end
60
+ # could find_by_name_or_id for params['servers'] and params['containers']
61
+ @options_interface.setopts(options)
62
+ if options[:dry_run]
63
+ print_dry_run @options_interface.dry.options_for_source(source_name, params)
64
+ return
65
+ end
66
+ json_response = nil
67
+ begin
68
+ json_response = @options_interface.options_for_source(source_name, params)
69
+ rescue RestClient::Exception => e
70
+ if e.response && e.response.code == 404
71
+ raise_command_error("Options source not found by name '#{source_name}'", args, optparse)
72
+ elsif e.response && e.response.code == 500
73
+ # API is actually returning 500, so just expect it
74
+ if e.response.body.to_s.include?("groovy.lang.MissingMethodException")
75
+ raise_command_error("Options source not found by name '#{source_name}'", args, optparse)
76
+ else
77
+ raise e
78
+ end
79
+ else
80
+ raise e
81
+ end
82
+ end
83
+ render_response(json_response, options, "data") do
84
+ records = json_response["data"]
85
+ # print_h1 "Morpheus Options: #{source}", parse_list_subtitles(options), options
86
+ print_h1 "Morpheus Options", ["Source: #{source_name}"] + parse_list_subtitles(options), options
87
+ if records.nil? || records.empty?
88
+ print cyan,"No options found.",reset,"\n"
89
+ else
90
+ print as_pretty_table(records, [:name, :value], options)
91
+ print_results_pagination(json_response)
92
+ end
93
+ print reset,"\n"
94
+ end
95
+ return 0, nil
96
+ end
97
+
98
+ end
@@ -1,6 +1,4 @@
1
- require 'fileutils'
2
1
  require 'morpheus/cli/cli_command'
3
- require 'morpheus/cli/mixins/library_helper'
4
2
  require 'morpheus/morpkg'
5
3
 
6
4
  class Morpheus::Cli::PackagesCommand