morpheus-cli 5.3.1 → 5.3.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/lib/morpheus/api/account_groups_interface.rb +0 -6
  4. data/lib/morpheus/api/accounts_interface.rb +4 -36
  5. data/lib/morpheus/api/api_client.rb +120 -106
  6. data/lib/morpheus/api/appliance_settings_interface.rb +6 -9
  7. data/lib/morpheus/api/approvals_interface.rb +5 -8
  8. data/lib/morpheus/api/apps_interface.rb +0 -7
  9. data/lib/morpheus/api/archive_buckets_interface.rb +9 -16
  10. data/lib/morpheus/api/archive_files_interface.rb +0 -6
  11. data/lib/morpheus/api/auth_interface.rb +4 -4
  12. data/lib/morpheus/api/backup_settings_interface.rb +5 -8
  13. data/lib/morpheus/api/blueprints_interface.rb +1 -7
  14. data/lib/morpheus/api/budgets_interface.rb +0 -6
  15. data/lib/morpheus/api/cloud_datastores_interface.rb +0 -6
  16. data/lib/morpheus/api/cloud_folders_interface.rb +1 -7
  17. data/lib/morpheus/api/cloud_policies_interface.rb +0 -6
  18. data/lib/morpheus/api/cloud_resource_pools_interface.rb +0 -6
  19. data/lib/morpheus/api/clouds_interface.rb +0 -6
  20. data/lib/morpheus/api/clusters_interface.rb +39 -42
  21. data/lib/morpheus/api/containers_interface.rb +0 -6
  22. data/lib/morpheus/api/custom_instance_types_interface.rb +0 -6
  23. data/lib/morpheus/api/cypher_interface.rb +0 -6
  24. data/lib/morpheus/api/datastores_interface.rb +4 -7
  25. data/lib/morpheus/api/deploy_interface.rb +1 -6
  26. data/lib/morpheus/api/environments_interface.rb +0 -6
  27. data/lib/morpheus/api/execute_schedules_interface.rb +0 -6
  28. data/lib/morpheus/api/execution_request_interface.rb +0 -6
  29. data/lib/morpheus/api/file_copy_request_interface.rb +2 -9
  30. data/lib/morpheus/api/group_policies_interface.rb +0 -6
  31. data/lib/morpheus/api/groups_interface.rb +0 -7
  32. data/lib/morpheus/api/guidance_interface.rb +9 -12
  33. data/lib/morpheus/api/health_interface.rb +0 -6
  34. data/lib/morpheus/api/image_builder_boot_scripts_interface.rb +0 -6
  35. data/lib/morpheus/api/image_builder_image_builds_interface.rb +0 -6
  36. data/lib/morpheus/api/image_builder_interface.rb +3 -9
  37. data/lib/morpheus/api/image_builder_preseed_scripts_interface.rb +0 -6
  38. data/lib/morpheus/api/instance_types_interface.rb +0 -7
  39. data/lib/morpheus/api/instances_interface.rb +8 -19
  40. data/lib/morpheus/api/integrations_interface.rb +30 -0
  41. data/lib/morpheus/api/invoice_line_items_interface.rb +4 -9
  42. data/lib/morpheus/api/jobs_interface.rb +11 -14
  43. data/lib/morpheus/api/key_pairs_interface.rb +0 -6
  44. data/lib/morpheus/api/library_cluster_layouts_interface.rb +0 -6
  45. data/lib/morpheus/api/library_container_scripts_interface.rb +0 -6
  46. data/lib/morpheus/api/library_container_templates_interface.rb +0 -6
  47. data/lib/morpheus/api/library_container_types_interface.rb +0 -6
  48. data/lib/morpheus/api/library_container_upgrades_interface.rb +0 -6
  49. data/lib/morpheus/api/library_instance_types_interface.rb +0 -6
  50. data/lib/morpheus/api/library_layouts_interface.rb +0 -6
  51. data/lib/morpheus/api/library_spec_template_types_interface.rb +0 -6
  52. data/lib/morpheus/api/library_spec_templates_interface.rb +0 -6
  53. data/lib/morpheus/api/license_interface.rb +0 -6
  54. data/lib/morpheus/api/load_balancer_pools_interface.rb +9 -0
  55. data/lib/morpheus/api/load_balancer_types_interface.rb +9 -0
  56. data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +9 -0
  57. data/lib/morpheus/api/load_balancers_interface.rb +4 -59
  58. data/lib/morpheus/api/log_settings_interface.rb +9 -12
  59. data/lib/morpheus/api/logs_interface.rb +0 -6
  60. data/lib/morpheus/api/monitoring_alerts_interface.rb +0 -6
  61. data/lib/morpheus/api/monitoring_apps_interface.rb +0 -6
  62. data/lib/morpheus/api/monitoring_checks_interface.rb +0 -6
  63. data/lib/morpheus/api/monitoring_contacts_interface.rb +0 -6
  64. data/lib/morpheus/api/monitoring_groups_interface.rb +0 -6
  65. data/lib/morpheus/api/monitoring_incidents_interface.rb +0 -6
  66. data/lib/morpheus/api/monitoring_interface.rb +6 -12
  67. data/lib/morpheus/api/network_domain_records_interface.rb +0 -6
  68. data/lib/morpheus/api/network_domains_interface.rb +0 -6
  69. data/lib/morpheus/api/network_groups_interface.rb +0 -6
  70. data/lib/morpheus/api/network_pool_ips_interface.rb +0 -6
  71. data/lib/morpheus/api/network_pool_servers_interface.rb +0 -6
  72. data/lib/morpheus/api/network_pools_interface.rb +0 -6
  73. data/lib/morpheus/api/network_proxies_interface.rb +0 -6
  74. data/lib/morpheus/api/network_routers_interface.rb +56 -6
  75. data/lib/morpheus/api/network_security_servers_interface.rb +6 -9
  76. data/lib/morpheus/api/network_services_interface.rb +0 -14
  77. data/lib/morpheus/api/network_subnets_interface.rb +0 -6
  78. data/lib/morpheus/api/network_types_interface.rb +1 -7
  79. data/lib/morpheus/api/networks_interface.rb +0 -6
  80. data/lib/morpheus/api/option_type_lists_interface.rb +18 -12
  81. data/lib/morpheus/api/option_types_interface.rb +0 -6
  82. data/lib/morpheus/api/options_interface.rb +0 -6
  83. data/lib/morpheus/api/packages_interface.rb +0 -6
  84. data/lib/morpheus/api/policies_interface.rb +1 -8
  85. data/lib/morpheus/api/power_schedules_interface.rb +0 -6
  86. data/lib/morpheus/api/price_sets_interface.rb +8 -11
  87. data/lib/morpheus/api/prices_interface.rb +12 -15
  88. data/lib/morpheus/api/processes_interface.rb +0 -6
  89. data/lib/morpheus/api/provision_types_interface.rb +0 -6
  90. data/lib/morpheus/api/provisioning_license_types_interface.rb +0 -6
  91. data/lib/morpheus/api/provisioning_licenses_interface.rb +0 -6
  92. data/lib/morpheus/api/provisioning_settings_interface.rb +6 -9
  93. data/lib/morpheus/api/reports_interface.rb +0 -6
  94. data/lib/morpheus/api/roles_interface.rb +0 -6
  95. data/lib/morpheus/api/secondary_read_interface.rb +25 -0
  96. data/lib/morpheus/api/secondary_rest_interface.rb +42 -0
  97. data/lib/morpheus/api/security_group_rules_interface.rb +0 -7
  98. data/lib/morpheus/api/security_groups_interface.rb +0 -6
  99. data/lib/morpheus/api/server_types_interface.rb +0 -6
  100. data/lib/morpheus/api/servers_interface.rb +0 -6
  101. data/lib/morpheus/api/service_plans_interface.rb +11 -14
  102. data/lib/morpheus/api/storage_providers_interface.rb +9 -16
  103. data/lib/morpheus/api/subnet_types_interface.rb +1 -7
  104. data/lib/morpheus/api/subnets_interface.rb +0 -6
  105. data/lib/morpheus/api/task_sets_interface.rb +0 -6
  106. data/lib/morpheus/api/tasks_interface.rb +0 -6
  107. data/lib/morpheus/api/user_groups_interface.rb +0 -6
  108. data/lib/morpheus/api/user_sources_interface.rb +0 -6
  109. data/lib/morpheus/api/users_interface.rb +0 -6
  110. data/lib/morpheus/api/virtual_images_interface.rb +0 -6
  111. data/lib/morpheus/api/whitelabel_settings_interface.rb +8 -11
  112. data/lib/morpheus/api/wiki_interface.rb +0 -6
  113. data/lib/morpheus/cli/access_token_command.rb +1 -1
  114. data/lib/morpheus/cli/account_groups_command.rb +4 -4
  115. data/lib/morpheus/cli/apps.rb +9 -9
  116. data/lib/morpheus/cli/archives_command.rb +5 -5
  117. data/lib/morpheus/cli/blueprints_command.rb +5 -5
  118. data/lib/morpheus/cli/boot_scripts_command.rb +1 -1
  119. data/lib/morpheus/cli/change_password_command.rb +4 -4
  120. data/lib/morpheus/cli/cli_command.rb +11 -10
  121. data/lib/morpheus/cli/clouds.rb +2 -2
  122. data/lib/morpheus/cli/clusters.rb +2 -2
  123. data/lib/morpheus/cli/credentials.rb +4 -11
  124. data/lib/morpheus/cli/environments_command.rb +1 -1
  125. data/lib/morpheus/cli/execute_schedules_command.rb +3 -3
  126. data/lib/morpheus/cli/hosts.rb +8 -8
  127. data/lib/morpheus/cli/image_builder_command.rb +6 -6
  128. data/lib/morpheus/cli/instance_types.rb +1 -1
  129. data/lib/morpheus/cli/instances.rb +93 -64
  130. data/lib/morpheus/cli/integrations_command.rb +567 -1
  131. data/lib/morpheus/cli/invoices_command.rb +75 -67
  132. data/lib/morpheus/cli/key_pairs.rb +2 -2
  133. data/lib/morpheus/cli/library_cluster_layouts_command.rb +2 -3
  134. data/lib/morpheus/cli/library_container_scripts_command.rb +4 -5
  135. data/lib/morpheus/cli/library_container_templates_command.rb +5 -1
  136. data/lib/morpheus/cli/library_container_types_command.rb +8 -9
  137. data/lib/morpheus/cli/library_instance_types_command.rb +6 -7
  138. data/lib/morpheus/cli/library_layouts_command.rb +9 -5
  139. data/lib/morpheus/cli/library_option_lists_command.rb +72 -20
  140. data/lib/morpheus/cli/library_option_types_command.rb +8 -4
  141. data/lib/morpheus/cli/library_spec_templates_command.rb +3 -4
  142. data/lib/morpheus/cli/library_upgrades_command.rb +6 -6
  143. data/lib/morpheus/cli/license.rb +2 -2
  144. data/lib/morpheus/cli/load_balancer_types.rb +37 -0
  145. data/lib/morpheus/cli/load_balancers.rb +149 -314
  146. data/lib/morpheus/cli/log_settings_command.rb +7 -3
  147. data/lib/morpheus/cli/login.rb +3 -1
  148. data/lib/morpheus/cli/mixins/load_balancers_helper.rb +156 -0
  149. data/lib/morpheus/cli/mixins/print_helper.rb +11 -0
  150. data/lib/morpheus/cli/mixins/provisioning_helper.rb +2 -2
  151. data/lib/morpheus/cli/mixins/rest_command.rb +657 -0
  152. data/lib/morpheus/cli/network_routers_command.rb +1183 -185
  153. data/lib/morpheus/cli/networks_command.rb +194 -101
  154. data/lib/morpheus/cli/option_types.rb +34 -40
  155. data/lib/morpheus/cli/policies_command.rb +0 -1
  156. data/lib/morpheus/cli/power_schedules_command.rb +3 -3
  157. data/lib/morpheus/cli/preseed_scripts_command.rb +1 -1
  158. data/lib/morpheus/cli/remote.rb +1 -1
  159. data/lib/morpheus/cli/roles.rb +9 -9
  160. data/lib/morpheus/cli/security_group_rules.rb +1 -1
  161. data/lib/morpheus/cli/setup.rb +0 -1
  162. data/lib/morpheus/cli/tenants_command.rb +21 -23
  163. data/lib/morpheus/cli/user_groups_command.rb +3 -3
  164. data/lib/morpheus/cli/user_sources_command.rb +3 -3
  165. data/lib/morpheus/cli/users.rb +3 -3
  166. data/lib/morpheus/cli/version.rb +1 -1
  167. data/lib/morpheus/cli/virtual_images.rb +1 -1
  168. data/lib/morpheus/cli/whoami.rb +0 -15
  169. data/lib/morpheus/cli/wiki_command.rb +1 -1
  170. data/lib/morpheus/cli.rb +1 -0
  171. data/lib/morpheus/ext/string.rb +41 -0
  172. data/lib/morpheus/formatters.rb +4 -0
  173. metadata +11 -2
@@ -46,6 +46,10 @@ module Morpheus
46
46
  if options[:help_field_prefix]
47
47
  option_type[:help_field_prefix] = options[:help_field_prefix]
48
48
  end
49
+ # a lot of optionTypes have fieldGroup:'Options' instead of 'default'
50
+ if option_type['fieldGroup'].to_s.downcase == 'options'
51
+ option_type['fieldGroup'] = 'default'
52
+ end
49
53
  end
50
54
  # puts "Options Prompt #{options}"
51
55
  # Sort options by default, group, advanced
@@ -90,46 +94,37 @@ module Morpheus
90
94
  end
91
95
 
92
96
  if !visible_option_check_value.to_s.empty?
93
- # support formats code=value or code:value OR code:(value|value2|value3)
94
- # OR fieldContext.fieldName=value
95
- parts = visible_option_check_value.include?("=") ? visible_option_check_value.split("=") : visible_option_check_value.split(":")
96
- depends_on_code = parts[0]
97
- depends_on_value = parts[1].to_s.strip
98
- depends_on_values = []
99
- if depends_on_value.size > 0
100
- # strip parenthesis
101
- if depends_on_value[0] && depends_on_value[0].chr == "("
102
- depends_on_value = depends_on_value[1..-1]
103
- end
104
- depends_on_value.chomp(")")
105
- depends_on_values = depends_on_value.split("|").collect { |it| it.strip }
106
- end
107
- depends_on_option_type = option_types.find {|it| it["code"] == depends_on_code }
108
- if !depends_on_option_type
109
- depends_on_option_type = option_types.find {|it|
110
- (it['fieldContext'] ? "#{it['fieldContext']}.#{it['fieldName']}" : it['fieldName']) == depends_on_code
111
- }
97
+ match_type = 'any'
98
+
99
+ if visible_option_check_value.include?('::')
100
+ match_type = 'all' if visible_option_check_value.start_with?('matchAll')
101
+ visible_option_check_value = visible_option_check_value[visible_option_check_value.index('::') + 2..-1]
112
102
  end
113
- if depends_on_option_type
114
- # dependent option type has a different value
115
- depends_on_field_key = depends_on_option_type['fieldContext'].nil? || depends_on_option_type['fieldContext'].empty? ? "#{depends_on_option_type['fieldName']}" : "#{depends_on_option_type['fieldContext']}.#{depends_on_option_type['fieldName']}"
116
- found_dep_value = get_object_value(results, depends_on_field_key) || get_object_value(options, depends_on_field_key)
117
-
118
- if depends_on_values.size > 0
119
- # must be in the specified values
120
- # todo: uhh this actually needs to change to parse regex
121
- if !depends_on_values.include?(found_dep_value)
122
- next
123
- end
124
- else
125
- # no value found
126
- if found_dep_value.to_s.empty?
127
- next
103
+
104
+ found_dep_value = match_type == 'all' ? true : false
105
+ visible_option_check_value.split(',').each do |value|
106
+ parts = value.split(':')
107
+ depends_on_code = parts[0]
108
+ depends_on_value = parts.count > 1 ? parts[1].to_s.strip : '.'
109
+ depends_on_option_type = option_types.find {|it| it["code"] == depends_on_code }
110
+ if !depends_on_option_type
111
+ depends_on_option_type = option_types.find {|it|
112
+ (it['fieldContext'] ? "#{it['fieldContext']}.#{it['fieldName']}" : it['fieldName']) == depends_on_code
113
+ }
114
+ end
115
+
116
+ if depends_on_option_type
117
+ depends_on_field_key = depends_on_option_type['fieldContext'].nil? || depends_on_option_type['fieldContext'].empty? ? "#{depends_on_option_type['fieldName']}" : "#{depends_on_option_type['fieldContext']}.#{depends_on_option_type['fieldName']}"
118
+ field_value = get_object_value(results, depends_on_field_key) || get_object_value(options, depends_on_field_key)
119
+
120
+ if !field_value.nil? && field_value.match?(depends_on_value)
121
+ found_dep_value = true if match_type != 'all'
122
+ else
123
+ found_dep_value = false if match_type == 'all'
128
124
  end
129
125
  end
130
- else
131
- # could not find the dependent option type, proceed and prompt
132
126
  end
127
+ next if !found_dep_value
133
128
  end
134
129
 
135
130
  cur_namespace = options
@@ -279,10 +274,9 @@ module Morpheus
279
274
 
280
275
  if option_type['type'] == 'multiSelect'
281
276
  value = [value] if !value.nil? && !value.is_a?(Array)
282
- parent_context_map[parent_ns] = value
283
- else
284
- context_map[field_name] = value
277
+ # parent_context_map[parent_ns] = value
285
278
  end
279
+ context_map[field_name] = value
286
280
  end
287
281
  results
288
282
  end
@@ -598,7 +592,7 @@ module Morpheus
598
592
  # actually that is redundant, it should already be filtered to matches
599
593
  # and can just do this:
600
594
  # select_option = select_options.size == 1 ? select_options[0] : nil
601
- select_option = select_options.find{|b| (b[value_field] && (b[value_field].to_s == input.to_s)) || ((b[value_field].nil? || b[value_field].empty?) && (input == "")) }
595
+ select_option = select_options.find{|b| (b[value_field] && (b[value_field].to_s == input.to_s)) || ((b[value_field].nil? || b[value_field] == "") && (input == "")) }
602
596
  if select_option.nil?
603
597
  select_option = select_options.find{|b| b['name'] && b['name'] == input }
604
598
  end
@@ -26,7 +26,6 @@ class Morpheus::Cli::PoliciesCommand
26
26
 
27
27
  def connect(opts)
28
28
  @api_client = establish_remote_appliance_connection(opts)
29
- # @policies_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).policies
30
29
  @policies_interface = @api_client.policies
31
30
  @group_policies_interface = @api_client.group_policies
32
31
  @cloud_policies_interface = @api_client.cloud_policies
@@ -13,9 +13,9 @@ class Morpheus::Cli::PowerSchedulesCommand
13
13
 
14
14
  def connect(opts)
15
15
  @api_client = establish_remote_appliance_connection(opts)
16
- @power_schedules_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).power_schedules
17
- @instances_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).instances
18
- @servers_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).servers
16
+ @power_schedules_interface = @api_client.power_schedules
17
+ @instances_interface = @api_client.instances
18
+ @servers_interface = @api_client.servers
19
19
  end
20
20
 
21
21
  def handle(args)
@@ -23,7 +23,7 @@ class Morpheus::Cli::PreseedScriptsCommand
23
23
 
24
24
  def connect(opts)
25
25
  @api_client = establish_remote_appliance_connection(opts)
26
- @image_builder_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).image_builder
26
+ @image_builder_interface = @api_client.image_builder
27
27
  @preseed_scripts_interface = @image_builder_interface.preseed_scripts
28
28
  end
29
29
 
@@ -1700,7 +1700,7 @@ EOT
1700
1700
  # wtf, no url...
1701
1701
  return appliance, json_response
1702
1702
  else
1703
- setup_interface = Morpheus::SetupInterface.new({url:appliance_url, verify_ssl: (appliance[:insecure] != true), timeout: timeout})
1703
+ setup_interface = Morpheus::SetupInterface.new({url:appliance_url, verify_ssl: !appliance[:insecure], timeout: timeout})
1704
1704
  start_time = Time.now
1705
1705
  begin
1706
1706
  json_response = setup_interface.check(params)
@@ -19,15 +19,15 @@ class Morpheus::Cli::Roles
19
19
 
20
20
  def connect(opts)
21
21
  @api_client = establish_remote_appliance_connection(opts)
22
- @whoami_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).whoami
23
- @users_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).users
24
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
25
- @roles_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).roles
26
- @groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).groups
27
- @options_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).options
28
- @instances_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).instances
29
- @instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).instance_types
30
- @blueprints_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).blueprints
22
+ @whoami_interface = @api_client.whoami
23
+ @users_interface = @api_client.users
24
+ @accounts_interface = @api_client.accounts
25
+ @roles_interface = @api_client.roles
26
+ @groups_interface = @api_client.groups
27
+ @options_interface = @api_client.options
28
+ @instances_interface = @api_client.instances
29
+ @instance_types_interface = @api_client.instance_types
30
+ @blueprints_interface = @api_client.blueprints
31
31
  @active_group_id = Morpheus::Cli::Groups.active_groups[@appliance_name]
32
32
  end
33
33
 
@@ -16,7 +16,7 @@ class Morpheus::Cli::SecurityGroupRules
16
16
 
17
17
  def connect(opts)
18
18
  @api_client = establish_remote_appliance_connection(opts)
19
- @security_group_rules_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).security_group_rules
19
+ @security_group_rules_interface = @api_client.security_group_rules
20
20
  @active_security_group = ::Morpheus::Cli::SecurityGroups.load_security_group_file
21
21
  end
22
22
 
@@ -61,7 +61,6 @@ EOT
61
61
  payload.deep_merge!(parse_passed_options(options))
62
62
 
63
63
  # JD: This should just do a Remote.check_appliance() first... needs to work with --remote-url though.
64
- # @setup_interface = Morpheus::SetupInterface.new({url:@appliance_url,access_token:@access_token})
65
64
  appliance_status_json = nil
66
65
  begin
67
66
  appliance_status_json = @setup_interface.get()
@@ -25,9 +25,9 @@ class Morpheus::Cli::TenantsCommand
25
25
 
26
26
  def connect(opts)
27
27
  @api_client = establish_remote_appliance_connection(opts)
28
- @users_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).users
29
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
30
- @roles_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).roles
28
+ @users_interface = @api_client.users
29
+ @accounts_interface = @api_client.accounts
30
+ @roles_interface = @api_client.roles
31
31
  end
32
32
 
33
33
  def handle(args)
@@ -248,41 +248,39 @@ EOT
248
248
 
249
249
 
250
250
  def remove(args)
251
+ params = {}
251
252
  options = {}
252
253
  optparse = Morpheus::Cli::OptionParser.new do |opts|
253
- opts.banner = subcommand_usage("[name]")
254
- build_common_options(opts, options, [:auto_confirm, :json, :remote, :dry_run])
254
+ opts.banner = subcommand_usage("[tenant]")
255
+ opts.on('--remove-resources [on|off]', ['on','off'], "Remove Infrastructure. Default is off.") do |val|
256
+ params[:removeResources] = val.nil? ? 'on' : val
257
+ end
258
+ build_standard_remove_options(opts, options)
259
+ opts.footer = <<-EOT
260
+ Delete a tenant.
261
+ [tenant] is required. This is the name or id of a tenant.
262
+ EOT
255
263
  end
256
264
  optparse.parse!(args)
257
- if args.count < 1
258
- puts optparse
259
- exit 1
260
- end
265
+ verify_args!(args:args, optparse:optparse, count:1)
266
+ optparse.parse!(args)
261
267
  connect(options)
262
268
  begin
263
269
  # allow finding by ID since name is not unique!
264
270
  account = find_account_by_name_or_id(args[0])
265
- exit 1 if account.nil?
266
- unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the account #{account['name']}?")
267
- exit
268
- end
269
- if options[:dry_run] && options[:json]
270
- puts as_json(payload, options)
271
- return 0
271
+ return 1, "tenant not found" if account.nil?
272
+ unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the tenant #{account['name']}?")
273
+ return 9, "aborted command"
272
274
  end
273
275
  @accounts_interface.setopts(options)
274
276
  if options[:dry_run]
275
- print_dry_run @accounts_interface.dry.destroy(account['id'])
277
+ print_dry_run @accounts_interface.dry.destroy(account['id'], params)
276
278
  return
277
279
  end
278
- json_response = @accounts_interface.destroy(account['id'])
279
- if options[:json]
280
- print JSON.pretty_generate(json_response)
281
- print "\n"
282
- else
280
+ json_response = @accounts_interface.destroy(account['id'], params)
281
+ render_response(json_response, options) do
283
282
  print_green_success "Tenant #{account['name']} removed"
284
283
  end
285
-
286
284
  rescue RestClient::Exception => e
287
285
  print_rest_exception(e, options)
288
286
  exit 1
@@ -12,9 +12,9 @@ class Morpheus::Cli::UserGroupsCommand
12
12
 
13
13
  def connect(opts)
14
14
  @api_client = establish_remote_appliance_connection(opts)
15
- @user_groups_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).user_groups
16
- @users_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).users
17
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
15
+ @user_groups_interface = @api_client.user_groups
16
+ @users_interface = @api_client.users
17
+ @accounts_interface = @api_client.accounts
18
18
  end
19
19
 
20
20
  def handle(args)
@@ -20,9 +20,9 @@ class Morpheus::Cli::UserSourcesCommand
20
20
 
21
21
  def connect(opts)
22
22
  @api_client = establish_remote_appliance_connection(opts)
23
- @user_sources_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).user_sources
24
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
25
- @users_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).users
23
+ @user_sources_interface = @api_client.user_sources
24
+ @accounts_interface = @api_client.accounts
25
+ @users_interface = @api_client.users
26
26
  end
27
27
 
28
28
  def handle(args)
@@ -22,9 +22,9 @@ class Morpheus::Cli::Users
22
22
 
23
23
  def connect(opts)
24
24
  @api_client = establish_remote_appliance_connection(opts)
25
- @users_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).users
26
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
27
- @roles_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).roles
25
+ @users_interface = @api_client.users
26
+ @accounts_interface = @api_client.accounts
27
+ @roles_interface = @api_client.roles
28
28
  end
29
29
 
30
30
  def handle(args)
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "5.3.1"
4
+ VERSION = "5.3.2.2"
5
5
  end
6
6
  end
@@ -20,7 +20,7 @@ class Morpheus::Cli::VirtualImages
20
20
 
21
21
  def connect(opts)
22
22
  @api_client = establish_remote_appliance_connection(opts)
23
- @virtual_images_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).virtual_images
23
+ @virtual_images_interface = @api_client.virtual_images
24
24
  end
25
25
 
26
26
  def handle(args)
@@ -319,21 +319,6 @@ EOT
319
319
  set_whoami_cache(appliance_name, user_id, result)
320
320
  end
321
321
  end
322
- # if result.nil?
323
- # # appliance needs to be passed in here...heh
324
- # appliance = ::Morpheus::Cli::Remote.load_remote(appliance_name)
325
- # if appliance.nil?
326
- # raise "Remote not found for name '#{appliance_name}'"
327
- # end
328
- # wallet = ::Morpheus::Cli::Credentials.new(appliance[:name], appliance[:url]).load_saved_credentials()
329
- # if wallet.nil? || wallet['access_token'].nil?
330
- # raise "Access token not found for remote '#{appliance_name}'"
331
- # end
332
- # access_token = wallet['access_token']
333
- # whoami_interface = Morpheus::WhoamiInterface.new({url: appliance[:url], access_token: wallet['access_token']})
334
- # whoami_response = whoami_interface.get()
335
- # result = whoami_response
336
- # end
337
322
  return result
338
323
  end
339
324
 
@@ -16,7 +16,7 @@ class Morpheus::Cli::WikiCommand
16
16
 
17
17
  def connect(opts)
18
18
  @api_client = establish_remote_appliance_connection(opts)
19
- @wiki_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).wiki
19
+ @wiki_interface = @api_client.wiki
20
20
  end
21
21
 
22
22
  def handle(args)
data/lib/morpheus/cli.rb CHANGED
@@ -93,6 +93,7 @@ module Morpheus
93
93
  load 'morpheus/cli/cloud_folders_command.rb'
94
94
  load 'morpheus/cli/hosts.rb'
95
95
  load 'morpheus/cli/load_balancers.rb'
96
+ load 'morpheus/cli/load_balancer_types.rb'
96
97
  load 'morpheus/cli/shell.rb'
97
98
  load 'morpheus/cli/tasks.rb'
98
99
  load 'morpheus/cli/workflows.rb'
@@ -0,0 +1,41 @@
1
+ class String
2
+
3
+ def pluralize
4
+ value = self
5
+ if value == ""
6
+ value
7
+ elsif value[-1].chr == "y"
8
+ value[0..-2] + "ies"
9
+ elsif value[-1].chr == "s"
10
+ if value[-2..-1] == "es"
11
+ value
12
+ else
13
+ value + "es"
14
+ end
15
+ else
16
+ value + "s"
17
+ end
18
+ end
19
+
20
+ def singularize
21
+ value = self
22
+ if value == ""
23
+ value
24
+ elsif value.size > 3 && value[-3..-1] == "ies"
25
+ value[0..-4] + "y"
26
+ elsif value.size > 2 && value[-3..-1] == "ses"
27
+ value[0..-3]
28
+ elsif value[-1] == "s"
29
+ value[0..-2]
30
+ end
31
+ end
32
+
33
+ def dasherize
34
+ self.gsub(" ", "-").gsub("_", "-")
35
+ end
36
+
37
+ def underscoreize
38
+ self.gsub(" ", "_").gsub("-", "_")
39
+ end
40
+
41
+ end
@@ -472,3 +472,7 @@ def format_name_values(obj)
472
472
  ""
473
473
  end
474
474
  end
475
+
476
+ def a_or_an(v)
477
+ v.to_s =~ /^[aeiou]/i ? "an" : "a"
478
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.1
4
+ version: 5.3.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-05-20 00:00:00.000000000 Z
14
+ date: 2021-09-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -236,6 +236,9 @@ files:
236
236
  - lib/morpheus/api/library_spec_template_types_interface.rb
237
237
  - lib/morpheus/api/library_spec_templates_interface.rb
238
238
  - lib/morpheus/api/license_interface.rb
239
+ - lib/morpheus/api/load_balancer_pools_interface.rb
240
+ - lib/morpheus/api/load_balancer_types_interface.rb
241
+ - lib/morpheus/api/load_balancer_virtual_servers_interface.rb
239
242
  - lib/morpheus/api/load_balancers_interface.rb
240
243
  - lib/morpheus/api/log_settings_interface.rb
241
244
  - lib/morpheus/api/logs_interface.rb
@@ -279,6 +282,8 @@ files:
279
282
  - lib/morpheus/api/rest_interface.rb
280
283
  - lib/morpheus/api/roles_interface.rb
281
284
  - lib/morpheus/api/search_interface.rb
285
+ - lib/morpheus/api/secondary_read_interface.rb
286
+ - lib/morpheus/api/secondary_rest_interface.rb
282
287
  - lib/morpheus/api/security_group_rules_interface.rb
283
288
  - lib/morpheus/api/security_groups_interface.rb
284
289
  - lib/morpheus/api/server_types_interface.rb
@@ -392,6 +397,7 @@ files:
392
397
  - lib/morpheus/cli/library_spec_templates_command.rb
393
398
  - lib/morpheus/cli/library_upgrades_command.rb
394
399
  - lib/morpheus/cli/license.rb
400
+ - lib/morpheus/cli/load_balancer_types.rb
395
401
  - lib/morpheus/cli/load_balancers.rb
396
402
  - lib/morpheus/cli/log_settings_command.rb
397
403
  - lib/morpheus/cli/login.rb
@@ -402,6 +408,7 @@ files:
402
408
  - lib/morpheus/cli/mixins/deployments_helper.rb
403
409
  - lib/morpheus/cli/mixins/infrastructure_helper.rb
404
410
  - lib/morpheus/cli/mixins/library_helper.rb
411
+ - lib/morpheus/cli/mixins/load_balancers_helper.rb
405
412
  - lib/morpheus/cli/mixins/logs_helper.rb
406
413
  - lib/morpheus/cli/mixins/monitoring_helper.rb
407
414
  - lib/morpheus/cli/mixins/operations_helper.rb
@@ -410,6 +417,7 @@ files:
410
417
  - lib/morpheus/cli/mixins/processes_helper.rb
411
418
  - lib/morpheus/cli/mixins/provisioning_helper.rb
412
419
  - lib/morpheus/cli/mixins/remote_helper.rb
420
+ - lib/morpheus/cli/mixins/rest_command.rb
413
421
  - lib/morpheus/cli/mixins/vdi_helper.rb
414
422
  - lib/morpheus/cli/mixins/whoami_helper.rb
415
423
  - lib/morpheus/cli/monitoring_alerts_command.rb
@@ -473,6 +481,7 @@ files:
473
481
  - lib/morpheus/ext/hash.rb
474
482
  - lib/morpheus/ext/nil_class.rb
475
483
  - lib/morpheus/ext/rest_client.rb
484
+ - lib/morpheus/ext/string.rb
476
485
  - lib/morpheus/formatters.rb
477
486
  - lib/morpheus/logging.rb
478
487
  - lib/morpheus/morpkg.rb