morpheus-cli 5.5.0 → 5.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/api_client.rb +4 -0
  4. data/lib/morpheus/api/clusters_interface.rb +12 -0
  5. data/lib/morpheus/api/network_pool_servers_interface.rb +7 -0
  6. data/lib/morpheus/api/scale_thresholds_interface.rb +9 -0
  7. data/lib/morpheus/cli/cli_command.rb +39 -20
  8. data/lib/morpheus/cli/commands/apps.rb +1 -1
  9. data/lib/morpheus/cli/commands/cloud_resource_pools_command.rb +33 -2
  10. data/lib/morpheus/cli/commands/clouds.rb +12 -6
  11. data/lib/morpheus/cli/commands/clusters.rb +66 -5
  12. data/lib/morpheus/cli/commands/hosts.rb +5 -1
  13. data/lib/morpheus/cli/commands/instances.rb +1 -1
  14. data/lib/morpheus/cli/commands/integrations_command.rb +1 -1
  15. data/lib/morpheus/cli/commands/invoices_command.rb +8 -1
  16. data/lib/morpheus/cli/commands/jobs_command.rb +45 -225
  17. data/lib/morpheus/cli/commands/library_container_types_command.rb +52 -3
  18. data/lib/morpheus/cli/commands/library_option_types_command.rb +56 -62
  19. data/lib/morpheus/cli/commands/load_balancers.rb +11 -19
  20. data/lib/morpheus/cli/commands/network_pool_servers_command.rb +5 -2
  21. data/lib/morpheus/cli/commands/roles.rb +475 -70
  22. data/lib/morpheus/cli/commands/scale_thresholds.rb +103 -0
  23. data/lib/morpheus/cli/commands/tasks.rb +19 -12
  24. data/lib/morpheus/cli/commands/user_sources_command.rb +107 -39
  25. data/lib/morpheus/cli/commands/users.rb +10 -10
  26. data/lib/morpheus/cli/commands/view.rb +1 -0
  27. data/lib/morpheus/cli/commands/workflows.rb +21 -14
  28. data/lib/morpheus/cli/error_handler.rb +13 -4
  29. data/lib/morpheus/cli/mixins/accounts_helper.rb +1 -1
  30. data/lib/morpheus/cli/mixins/execution_request_helper.rb +1 -1
  31. data/lib/morpheus/cli/mixins/infrastructure_helper.rb +3 -3
  32. data/lib/morpheus/cli/mixins/jobs_helper.rb +173 -0
  33. data/lib/morpheus/cli/mixins/print_helper.rb +120 -38
  34. data/lib/morpheus/cli/mixins/provisioning_helper.rb +1 -3
  35. data/lib/morpheus/cli/mixins/rest_command.rb +41 -14
  36. data/lib/morpheus/cli/option_types.rb +68 -37
  37. data/lib/morpheus/cli/version.rb +1 -1
  38. data/lib/morpheus/logging.rb +6 -8
  39. metadata +6 -4
@@ -4,6 +4,7 @@ class Morpheus::Cli::LoadBalancers
4
4
  include Morpheus::Cli::CliCommand
5
5
  include Morpheus::Cli::RestCommand
6
6
  include Morpheus::Cli::LoadBalancersHelper
7
+ include Morpheus::Cli::ProvisioningHelper
7
8
 
8
9
  set_command_description "View and manage load balancers."
9
10
  set_command_name :'load-balancers'
@@ -17,10 +18,12 @@ class Morpheus::Cli::LoadBalancers
17
18
  register_interfaces :load_balancers, :load_balancer_types
18
19
  set_rest_has_type true
19
20
  # set_rest_type :load_balancer_types
21
+ set_rest_perms_config({enabled:true, excludes:['plans', 'visibility']})
20
22
 
21
23
  def render_response_for_get(json_response, options)
22
24
  render_response(json_response, options, rest_object_key) do
23
25
  record = json_response[rest_object_key]
26
+ options[:exclude_username] = record['username'].nil?
24
27
  print_h1 rest_label, [], options
25
28
  print cyan
26
29
  print_description_list(rest_column_definitions(options), record, options)
@@ -94,19 +97,7 @@ EOT
94
97
 
95
98
  # filtering for NSX-T only
96
99
  def rest_list_types()
97
- rest_type_interface.list({max:10000, creatable:true})[rest_type_list_key].reject {|it| it['code'] == 'nsx-t'}
98
- end
99
-
100
- def load_balancer_type_list_to_options(type_list)
101
- type_list.reject {|it| it['code'] != 'nsx-t'}.collect {|it| {'name' => it['name'], 'value' => it['code']} }
102
- end
103
-
104
- def add_load_balancer_footer_addn
105
- "#{bold}Available for NSX-T load balancers only#{reset}"
106
- end
107
-
108
- def update_load_balancer_footer_addn
109
- "#{bold}Available for NSX-T load balancers only#{reset}"
100
+ rest_type_interface.list({max:10000, creatable:true})[rest_type_list_key] # .reject {|it| it['code'] == 'nsx-t'}
110
101
  end
111
102
 
112
103
  def load_balancer_list_column_definitions(options)
@@ -120,7 +111,7 @@ EOT
120
111
  end
121
112
 
122
113
  def load_balancer_column_definitions(options)
123
- {
114
+ columns = {
124
115
  "ID" => 'id',
125
116
  "Name" => 'name',
126
117
  "Description" => 'description',
@@ -130,13 +121,14 @@ EOT
130
121
  "IP" => 'ip',
131
122
  "Host" => 'host',
132
123
  "Port" => 'port',
133
- "Username" => 'username',
134
- # "SSL Enabled" => lambda {|it| format_boolean it['sslEnabled'] },
135
- # "SSL Cert" => lambda {|it| it['sslCert'] ? it['sslCert']['name'] : '' },
136
- # "SSL" => lambda {|it| it['sslEnabled'] ? "Yes (#{it['sslCert'] ? it['sslCert']['name'] : 'none'})" : "No" },
124
+ "Price" => lambda {|it| it['price'].nil? ? 'No pricing configured' : "#{format_money(it['price']['price'], it['price']['currency'])} / #{it['price']['unit'].capitalize}"},
125
+ "Provider ID" => 'externalId'
126
+ }
127
+ columns.merge!({"Username" => 'username'}) if !options[:exclude_username]
128
+ columns.merge({
137
129
  "Created" => lambda {|it| format_local_dt(it['dateCreated']) },
138
130
  "Updated" => lambda {|it| format_local_dt(it['lastUpdated']) }
139
- }
131
+ })
140
132
  end
141
133
 
142
134
  # overridden to work with name or code
@@ -209,10 +209,13 @@ class Morpheus::Cli::NetworkPoolServersCommand
209
209
  print_red_alert "Pool Server Type not found by id '#{options['type']}'"
210
210
  return 1
211
211
  end
212
- payload['networkPoolServer']['type'] = {'id' => network_type_id.to_i }
213
212
 
214
- # ['name', 'serviceUsername', 'servicePassword', 'servicePort', 'serviceHost', 'serviceUrl', 'serviceMode', 'networkFilter', 'tenantMatch']
213
+ payload['networkPoolServer']['type'] = {'id' => network_type_id.to_i }
215
214
 
215
+ # prompt options
216
+ network_pool_server_type = @network_pool_servers_interface.get_type(network_type_id.to_i)['networkPoolServerType']
217
+ option_result = Morpheus::Cli::OptionTypes.prompt(network_pool_server_type['optionTypes'], options[:options].deep_merge({:context_map => {'networkPoolServer' => ''}}), @api_client, {}, options[:no_prompt], true)
218
+ payload['networkPoolServer'].deep_merge!(option_result)
216
219
  end
217
220
 
218
221
  @network_pool_servers_interface.setopts(options)