morpheus-cli 5.3.1 → 5.3.2.2

Sign up to get free protection for your applications and to get access to all the features.
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