morpheus-cli 5.3.3 → 5.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +1 -1
- data/lib/morpheus/api/account_users_interface.rb +68 -0
- data/lib/morpheus/api/api_client.rb +75 -8
- data/lib/morpheus/api/audit_interface.rb +9 -0
- data/lib/morpheus/api/clouds_interface.rb +4 -11
- data/lib/morpheus/api/health_interface.rb +37 -3
- data/lib/morpheus/api/instances_interface.rb +21 -0
- data/lib/morpheus/api/load_balancer_monitors_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_profiles_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +9 -0
- data/lib/morpheus/api/load_balancers_interface.rb +5 -0
- data/lib/morpheus/api/network_dhcp_relays_interface.rb +36 -0
- data/lib/morpheus/api/network_dhcp_servers_interface.rb +36 -0
- data/lib/morpheus/api/network_edge_clusters_interface.rb +26 -0
- data/lib/morpheus/api/network_routers_interface.rb +30 -0
- data/lib/morpheus/api/network_servers_interface.rb +98 -0
- data/lib/morpheus/api/network_static_routes_interface.rb +36 -0
- data/lib/morpheus/api/read_interface.rb +4 -3
- data/lib/morpheus/api/rest_interface.rb +5 -4
- data/lib/morpheus/api/roles_interface.rb +7 -0
- data/lib/morpheus/api/secondary_read_interface.rb +1 -1
- data/lib/morpheus/api/secondary_rest_interface.rb +19 -19
- data/lib/morpheus/api/storage_server_types_interface.rb +14 -0
- data/lib/morpheus/api/storage_servers_interface.rb +9 -0
- data/lib/morpheus/api/storage_volume_types_interface.rb +9 -0
- data/lib/morpheus/api/storage_volumes_interface.rb +9 -0
- data/lib/morpheus/api/users_interface.rb +16 -63
- data/lib/morpheus/api/virtual_servers_interface.rb +9 -0
- data/lib/morpheus/cli/cli_command.rb +262 -14
- data/lib/morpheus/cli/cli_registry.rb +2 -1
- data/lib/morpheus/cli/{access_token_command.rb → commands/access_token_command.rb} +1 -1
- data/lib/morpheus/cli/{account_groups_command.rb → commands/account_groups_command.rb} +0 -8
- data/lib/morpheus/cli/{activity_command.rb → commands/activity_command.rb} +0 -0
- data/lib/morpheus/cli/commands/{standard/alias_command.rb → alias_command.rb} +1 -4
- data/lib/morpheus/cli/{appliance_settings_command.rb → commands/appliance_settings_command.rb} +0 -0
- data/lib/morpheus/cli/{approvals_command.rb → commands/approvals_command.rb} +0 -0
- data/lib/morpheus/cli/{apps.rb → commands/apps.rb} +14 -87
- data/lib/morpheus/cli/{archives_command.rb → commands/archives_command.rb} +0 -6
- data/lib/morpheus/cli/commands/audit.rb +188 -0
- data/lib/morpheus/cli/{backup_jobs_command.rb → commands/backup_jobs_command.rb} +0 -0
- data/lib/morpheus/cli/{backup_settings_command.rb → commands/backup_settings_command.rb} +0 -0
- data/lib/morpheus/cli/{backups_command.rb → commands/backups_command.rb} +0 -0
- data/lib/morpheus/cli/commands/{standard/benchmark_command.rb → benchmark_command.rb} +0 -3
- data/lib/morpheus/cli/{blueprints_command.rb → commands/blueprints_command.rb} +1 -1
- data/lib/morpheus/cli/{boot_scripts_command.rb → commands/boot_scripts_command.rb} +0 -3
- data/lib/morpheus/cli/{budgets_command.rb → commands/budgets_command.rb} +0 -0
- data/lib/morpheus/cli/commands/{standard/cat_command.rb → cat_command.rb} +0 -0
- data/lib/morpheus/cli/{catalog_item_types_command.rb → commands/catalog_item_types_command.rb} +0 -0
- data/lib/morpheus/cli/{certificates_command.rb → commands/certificates_command.rb} +0 -0
- data/lib/morpheus/cli/commands/change_password_command.rb +132 -0
- data/lib/morpheus/cli/{cloud_datastores_command.rb → commands/cloud_datastores_command.rb} +0 -4
- data/lib/morpheus/cli/{cloud_folders_command.rb → commands/cloud_folders_command.rb} +0 -4
- data/lib/morpheus/cli/{cloud_resource_pools_command.rb → commands/cloud_resource_pools_command.rb} +1 -5
- data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +22 -47
- data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +38 -19
- data/lib/morpheus/cli/commands/{standard/coloring_command.rb → coloring_command.rb} +0 -2
- data/lib/morpheus/cli/{containers_command.rb → commands/containers_command.rb} +0 -7
- data/lib/morpheus/cli/commands/{standard/curl_command.rb → curl_command.rb} +0 -3
- data/lib/morpheus/cli/{cypher_command.rb → commands/cypher_command.rb} +0 -1
- data/lib/morpheus/cli/{dashboard_command.rb → commands/dashboard_command.rb} +0 -2
- data/lib/morpheus/cli/commands/{standard/debug_command.rb → debug_command.rb} +0 -1
- data/lib/morpheus/cli/{deploy.rb → commands/deploy.rb} +0 -1
- data/lib/morpheus/cli/{deployments.rb → commands/deployments.rb} +0 -0
- data/lib/morpheus/cli/{deploys.rb → commands/deploys.rb} +0 -1
- data/lib/morpheus/cli/{doc.rb → commands/doc.rb} +1 -1
- data/lib/morpheus/cli/commands/{standard/echo_command.rb → echo_command.rb} +0 -2
- data/lib/morpheus/cli/commands/{standard/edit_profile_command.rb → edit_profile_command.rb} +15 -4
- data/lib/morpheus/cli/commands/{standard/edit_rc_command.rb → edit_rc_command.rb} +19 -3
- data/lib/morpheus/cli/{environments_command.rb → commands/environments_command.rb} +0 -5
- data/lib/morpheus/cli/{execute_schedules_command.rb → commands/execute_schedules_command.rb} +0 -0
- data/lib/morpheus/cli/{execution_request_command.rb → commands/execution_request_command.rb} +0 -2
- data/lib/morpheus/cli/commands/{standard/exit_command.rb → exit_command.rb} +0 -2
- data/lib/morpheus/cli/{file_copy_request_command.rb → commands/file_copy_request_command.rb} +0 -4
- data/lib/morpheus/cli/{forgot_password.rb → commands/forgot_password.rb} +0 -0
- data/lib/morpheus/cli/commands/{standard/get_prompt_command.rb → get_prompt_command.rb} +0 -3
- data/lib/morpheus/cli/{groups.rb → commands/groups.rb} +0 -7
- data/lib/morpheus/cli/{guidance_command.rb → commands/guidance_command.rb} +1 -1
- data/lib/morpheus/cli/{health_command.rb → commands/health_command.rb} +104 -19
- data/lib/morpheus/cli/commands/{standard/history_command.rb → history_command.rb} +0 -3
- data/lib/morpheus/cli/{hosts.rb → commands/hosts.rb} +15 -25
- data/lib/morpheus/cli/{image_builder_command.rb → commands/image_builder_command.rb} +6 -16
- data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
- data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +220 -13
- data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +1 -12
- data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +43 -39
- data/lib/morpheus/cli/{jobs_command.rb → commands/jobs_command.rb} +0 -0
- data/lib/morpheus/cli/{key_pairs.rb → commands/key_pairs.rb} +0 -6
- data/lib/morpheus/cli/{library_cluster_layouts_command.rb → commands/library_cluster_layouts_command.rb} +0 -4
- data/lib/morpheus/cli/{library_container_scripts_command.rb → commands/library_container_scripts_command.rb} +0 -0
- data/lib/morpheus/cli/{library_container_templates_command.rb → commands/library_container_templates_command.rb} +0 -1
- data/lib/morpheus/cli/{library_container_types_command.rb → commands/library_container_types_command.rb} +0 -4
- data/lib/morpheus/cli/{library_instance_types_command.rb → commands/library_instance_types_command.rb} +0 -4
- data/lib/morpheus/cli/{library_layouts_command.rb → commands/library_layouts_command.rb} +0 -4
- data/lib/morpheus/cli/{library_option_lists_command.rb → commands/library_option_lists_command.rb} +3 -7
- data/lib/morpheus/cli/{library_option_types_command.rb → commands/library_option_types_command.rb} +0 -4
- data/lib/morpheus/cli/{library_spec_templates_command.rb → commands/library_spec_templates_command.rb} +0 -1
- data/lib/morpheus/cli/{library_upgrades_command.rb → commands/library_upgrades_command.rb} +0 -4
- data/lib/morpheus/cli/{license.rb → commands/license.rb} +0 -3
- data/lib/morpheus/cli/commands/load_balancer_monitors.rb +70 -0
- data/lib/morpheus/cli/commands/load_balancer_pools.rb +90 -0
- data/lib/morpheus/cli/commands/load_balancer_profiles.rb +64 -0
- data/lib/morpheus/cli/{load_balancer_types.rb → commands/load_balancer_types.rb} +9 -8
- data/lib/morpheus/cli/commands/load_balancer_virtual_servers.rb +147 -0
- data/lib/morpheus/cli/commands/load_balancers.rb +192 -0
- data/lib/morpheus/cli/commands/{standard/log_level_command.rb → log_level_command.rb} +0 -3
- data/lib/morpheus/cli/{log_settings_command.rb → commands/log_settings_command.rb} +0 -0
- data/lib/morpheus/cli/{login.rb → commands/login.rb} +0 -5
- data/lib/morpheus/cli/commands/logout.rb +63 -0
- data/lib/morpheus/cli/{logs_command.rb → commands/logs_command.rb} +0 -3
- data/lib/morpheus/cli/commands/{standard/man_command.rb → man_command.rb} +0 -2
- data/lib/morpheus/cli/{monitoring_alerts_command.rb → commands/monitoring_alerts_command.rb} +0 -7
- data/lib/morpheus/cli/{monitoring_apps_command.rb → commands/monitoring_apps_command.rb} +0 -1
- data/lib/morpheus/cli/{monitoring_checks_command.rb → commands/monitoring_checks_command.rb} +0 -1
- data/lib/morpheus/cli/{monitoring_contacts_command.rb → commands/monitoring_contacts_command.rb} +0 -7
- data/lib/morpheus/cli/{monitoring_groups_command.rb → commands/monitoring_groups_command.rb} +0 -1
- data/lib/morpheus/cli/{monitoring_incidents_command.rb → commands/monitoring_incidents_command.rb} +0 -1
- data/lib/morpheus/cli/commands/network_dhcp_relays_command.rb +416 -0
- data/lib/morpheus/cli/commands/network_dhcp_servers_command.rb +407 -0
- data/lib/morpheus/cli/{network_domains_command.rb → commands/network_domains_command.rb} +0 -4
- data/lib/morpheus/cli/commands/network_edge_clusters_command.rb +329 -0
- data/lib/morpheus/cli/commands/network_firewalls_command.rb +823 -0
- data/lib/morpheus/cli/{network_groups_command.rb → commands/network_groups_command.rb} +0 -4
- data/lib/morpheus/cli/{network_pool_servers_command.rb → commands/network_pool_servers_command.rb} +0 -4
- data/lib/morpheus/cli/{network_pools_command.rb → commands/network_pools_command.rb} +0 -4
- data/lib/morpheus/cli/{network_proxies_command.rb → commands/network_proxies_command.rb} +0 -4
- data/lib/morpheus/cli/{network_routers_command.rb → commands/network_routers_command.rb} +387 -57
- data/lib/morpheus/cli/{network_services_command.rb → commands/network_services_command.rb} +0 -4
- data/lib/morpheus/cli/commands/network_static_routes_command.rb +446 -0
- data/lib/morpheus/cli/commands/network_transport_zones_command.rb +452 -0
- data/lib/morpheus/cli/{networks_command.rb → commands/networks_command.rb} +20 -20
- data/lib/morpheus/cli/commands/open_command.rb +30 -0
- data/lib/morpheus/cli/commands/options.rb +98 -0
- data/lib/morpheus/cli/{packages_command.rb → commands/packages_command.rb} +0 -2
- data/lib/morpheus/cli/{ping.rb → commands/ping.rb} +0 -7
- data/lib/morpheus/cli/{policies_command.rb → commands/policies_command.rb} +1 -8
- data/lib/morpheus/cli/{power_schedules_command.rb → commands/power_schedules_command.rb} +0 -0
- data/lib/morpheus/cli/{preseed_scripts_command.rb → commands/preseed_scripts_command.rb} +0 -3
- data/lib/morpheus/cli/{price_sets_command.rb → commands/price_sets_command.rb} +0 -0
- data/lib/morpheus/cli/{prices_command.rb → commands/prices_command.rb} +7 -7
- data/lib/morpheus/cli/{processes_command.rb → commands/processes_command.rb} +0 -1
- data/lib/morpheus/cli/{projects_command.rb → commands/projects_command.rb} +0 -0
- data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb} +0 -0
- data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb} +0 -0
- data/lib/morpheus/cli/{recent_activity_command.rb → commands/recent_activity_command.rb} +0 -0
- data/lib/morpheus/cli/{remote.rb → commands/remote.rb} +5 -9
- data/lib/morpheus/cli/{reports_command.rb → commands/reports_command.rb} +0 -2
- data/lib/morpheus/cli/commands/{standard/rm_command.rb → rm_command.rb} +0 -0
- data/lib/morpheus/cli/{roles.rb → commands/roles.rb} +245 -40
- data/lib/morpheus/cli/{search_command.rb → commands/search_command.rb} +0 -0
- data/lib/morpheus/cli/{security_group_rules.rb → commands/security_group_rules.rb} +0 -5
- data/lib/morpheus/cli/{security_groups.rb → commands/security_groups.rb} +0 -6
- data/lib/morpheus/cli/{service_catalog_command.rb → commands/service_catalog_command.rb} +0 -0
- data/lib/morpheus/cli/{service_plans_command.rb → commands/service_plans_command.rb} +0 -0
- data/lib/morpheus/cli/commands/{standard/set_prompt_command.rb → set_prompt_command.rb} +0 -3
- data/lib/morpheus/cli/{setup.rb → commands/setup.rb} +0 -0
- data/lib/morpheus/cli/{shell.rb → commands/shell.rb} +4 -105
- data/lib/morpheus/cli/commands/{standard/sleep_command.rb → sleep_command.rb} +0 -2
- data/lib/morpheus/cli/commands/{standard/source_command.rb → source_command.rb} +0 -2
- data/lib/morpheus/cli/commands/{standard/ssl_verification_command.rb → ssl_verification_command.rb} +0 -3
- data/lib/morpheus/cli/{storage_providers_command.rb → commands/storage_providers_command.rb} +0 -4
- data/lib/morpheus/cli/commands/storage_server_types.rb +50 -0
- data/lib/morpheus/cli/commands/storage_servers.rb +122 -0
- data/lib/morpheus/cli/commands/storage_volume_types.rb +50 -0
- data/lib/morpheus/cli/commands/storage_volumes.rb +103 -0
- data/lib/morpheus/cli/{subnets_command.rb → commands/subnets_command.rb} +7 -6
- data/lib/morpheus/cli/{tasks.rb → commands/tasks.rb} +25 -6
- data/lib/morpheus/cli/commands/{standard/tee_command.rb → tee_command.rb} +0 -0
- data/lib/morpheus/cli/{tenants_command.rb → commands/tenants_command.rb} +1 -8
- data/lib/morpheus/cli/commands/{standard/update_command.rb → update_command.rb} +0 -1
- data/lib/morpheus/cli/{usage_command.rb → commands/usage_command.rb} +0 -0
- data/lib/morpheus/cli/{user_groups_command.rb → commands/user_groups_command.rb} +1 -2
- data/lib/morpheus/cli/{user_settings_command.rb → commands/user_settings_command.rb} +2 -1
- data/lib/morpheus/cli/{user_sources_command.rb → commands/user_sources_command.rb} +1 -2
- data/lib/morpheus/cli/{users.rb → commands/users.rb} +28 -35
- data/lib/morpheus/cli/{vdi_allocations_command.rb → commands/vdi_allocations_command.rb} +0 -0
- data/lib/morpheus/cli/{vdi_apps_command.rb → commands/vdi_apps_command.rb} +0 -0
- data/lib/morpheus/cli/{vdi_command.rb → commands/vdi_command.rb} +0 -0
- data/lib/morpheus/cli/{vdi_gateways_command.rb → commands/vdi_gateways_command.rb} +0 -0
- data/lib/morpheus/cli/{vdi_pools_command.rb → commands/vdi_pools_command.rb} +0 -0
- data/lib/morpheus/cli/commands/{standard/version_command.rb → version_command.rb} +0 -0
- data/lib/morpheus/cli/commands/view.rb +102 -0
- data/lib/morpheus/cli/{virtual_images.rb → commands/virtual_images.rb} +2 -4
- data/lib/morpheus/cli/{whitelabel_settings_command.rb → commands/whitelabel_settings_command.rb} +0 -1
- data/lib/morpheus/cli/{whoami.rb → commands/whoami.rb} +0 -4
- data/lib/morpheus/cli/{wiki_command.rb → commands/wiki_command.rb} +0 -5
- data/lib/morpheus/cli/{workflows.rb → commands/workflows.rb} +0 -3
- data/lib/morpheus/cli/mixins/accounts_helper.rb +5 -5
- data/lib/morpheus/cli/mixins/load_balancers_helper.rb +26 -6
- data/lib/morpheus/cli/mixins/logs_helper.rb +1 -1
- data/lib/morpheus/cli/mixins/print_helper.rb +51 -18
- data/lib/morpheus/cli/mixins/processes_helper.rb +1 -2
- data/lib/morpheus/cli/mixins/provisioning_helper.rb +48 -17
- data/lib/morpheus/cli/mixins/rest_command.rb +270 -94
- data/lib/morpheus/cli/mixins/secondary_rest_command.rb +667 -0
- data/lib/morpheus/cli/mixins/storage_servers_helper.rb +156 -0
- data/lib/morpheus/cli/mixins/storage_volumes_helper.rb +119 -0
- data/lib/morpheus/cli/option_types.rb +149 -40
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/cli.rb +6 -128
- data/lib/morpheus/ext/string.rb +29 -6
- data/lib/morpheus/routes.rb +238 -0
- data/lib/morpheus/terminal.rb +5 -6
- data/lib/morpheus/util.rb +6 -1
- metadata +176 -141
- data/lib/morpheus/cli/change_password_command.rb +0 -147
- data/lib/morpheus/cli/library.rb +0 -1
- data/lib/morpheus/cli/load_balancers.rb +0 -245
- data/lib/morpheus/cli/logout.rb +0 -81
@@ -1,11 +1,4 @@
|
|
1
|
-
# require 'yaml'
|
2
|
-
require 'io/console'
|
3
|
-
require 'rest_client'
|
4
|
-
require 'optparse'
|
5
1
|
require 'morpheus/cli/cli_command'
|
6
|
-
require 'morpheus/cli/mixins/whoami_helper'
|
7
|
-
require 'morpheus/cli/mixins/accounts_helper'
|
8
|
-
require 'json'
|
9
2
|
|
10
3
|
class Morpheus::Cli::Ping
|
11
4
|
include Morpheus::Cli::CliCommand
|
@@ -1,11 +1,4 @@
|
|
1
|
-
require 'json'
|
2
|
-
require 'yaml'
|
3
|
-
require 'rest_client'
|
4
|
-
require 'optparse'
|
5
|
-
require 'filesize'
|
6
1
|
require 'morpheus/cli/cli_command'
|
7
|
-
require 'morpheus/cli/mixins/infrastructure_helper'
|
8
|
-
require 'morpheus/cli/mixins/accounts_helper'
|
9
2
|
|
10
3
|
class Morpheus::Cli::PoliciesCommand
|
11
4
|
include Morpheus::Cli::CliCommand
|
@@ -31,7 +24,7 @@ class Morpheus::Cli::PoliciesCommand
|
|
31
24
|
@cloud_policies_interface = @api_client.cloud_policies
|
32
25
|
@clouds_interface = @api_client.clouds
|
33
26
|
@groups_interface = @api_client.groups
|
34
|
-
@
|
27
|
+
@account_users_interface = @api_client.account_users
|
35
28
|
@roles_interface = @api_client.roles
|
36
29
|
@active_group_id = Morpheus::Cli::Groups.active_groups[@appliance_name]
|
37
30
|
end
|
File without changes
|
File without changes
|
@@ -211,11 +211,11 @@ class Morpheus::Cli::PricesCommand
|
|
211
211
|
raise_command_error "Invalid price unit '#{val}'. Available price units: #{price_units.join(', ')}"
|
212
212
|
end
|
213
213
|
end
|
214
|
-
opts.on("--platform [PLATFORM]", String, "Price platform [linux|windows]. Required for platform price type") do |val|
|
215
|
-
if ['linux', 'windows'].include?(val)
|
214
|
+
opts.on("--platform [PLATFORM]", String, "Price platform [centos|debian|fedora|canonical|opensuse|redhat|suse|xen|linux|windows]. Required for platform price type") do |val|
|
215
|
+
if ['centos','debian','fedora','canonical','opensuse','redhat','suse','xen','linux', 'windows'].include?(val)
|
216
216
|
params['platform'] = val
|
217
217
|
else
|
218
|
-
raise_command_error "Invalid platform '#{val}'. Available platforms: linux, windows"
|
218
|
+
raise_command_error "Invalid platform '#{val}'. Available platforms/vendors: centos, debian, fedora, canonical, opensuse, redhat, suse, xen, linux, windows"
|
219
219
|
end
|
220
220
|
end
|
221
221
|
opts.on("--software [TEXT]", String, "Price software. Required for software price type") do |val|
|
@@ -375,11 +375,11 @@ class Morpheus::Cli::PricesCommand
|
|
375
375
|
raise_command_error "Invalid price unit '#{val}'. Available price units: #{price_units.join(', ')}"
|
376
376
|
end
|
377
377
|
end
|
378
|
-
opts.on("--platform [PLATFORM]", String, "Price platform [linux|windows]. Required for platform price type") do |val|
|
379
|
-
if ['linux', 'windows'].include?(val)
|
378
|
+
opts.on("--platform [PLATFORM]", String, "Price platform [centos|debian|fedora|canonical|opensuse|redhat|suse|xen|linux|windows]. Required for platform price type") do |val|
|
379
|
+
if ['centos','debian','fedora','canonical','opensuse','redhat','suse','xen','linux', 'windows'].include?(val)
|
380
380
|
params['platform'] = val
|
381
381
|
else
|
382
|
-
raise_command_error "Invalid platform '#{val}'. Available platforms: linux, windows"
|
382
|
+
raise_command_error "Invalid platform '#{val}'. Available platforms: centos, debian, fedora, canonical, opensuse, redhat, suse, xen, linux, windows"
|
383
383
|
end
|
384
384
|
end
|
385
385
|
opts.on("--software [TEXT]", String, "Price software. Required for software price type") do |val|
|
@@ -614,7 +614,7 @@ class Morpheus::Cli::PricesCommand
|
|
614
614
|
def prompt_for_price_type(params, options, price={})
|
615
615
|
case params['priceType']
|
616
616
|
when 'platform'
|
617
|
-
params['platform'] ||= price['platform'] || Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'platform', 'type' => 'select', 'fieldLabel' => 'Platform', 'required' => true, 'description' => 'Select platform for platform price type', 'selectOptions' => [{'name' => 'Linux', 'value' => 'linux'}, {'name' => 'Windows', 'value' => 'windows'}]}], options[:options], @api_client, {}, options[:no_prompt])['platform']
|
617
|
+
params['platform'] ||= price['platform'] || Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'platform', 'type' => 'select', 'fieldLabel' => 'Platform', 'required' => true, 'description' => 'Select platform for platform price type', 'selectOptions' => [ {'name' => 'CentOS', 'value' => 'centos'}, {'name' => 'Debian', 'value' => 'debian'}, {'name' => 'Fedora', 'value' => 'fedora'}, {'name' => 'Canonical', 'value' => 'canonical'}, {'name' => 'openSUSE', 'value' => 'opensuse'}, {'name' => 'Red Hat', 'value' => 'redhat'}, {'name' => 'SUSE', 'value' => 'suse'}, {'name' => 'Xen', 'value' => 'xen'}, {'name' => 'Linux', 'value' => 'linux'}, {'name' => 'Windows', 'value' => 'windows'}]}], options[:options], @api_client, {}, options[:no_prompt])['platform']
|
618
618
|
when 'software'
|
619
619
|
params['software'] ||= price['software'] || Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'software', 'type' => 'text', 'fieldLabel' => 'Software', 'required' => true, 'description' => 'Set software for software price type'}], options[:options], @api_client,{}, options[:no_prompt])['software']
|
620
620
|
when 'datastore'
|
File without changes
|
data/lib/morpheus/cli/{provisioning_licenses_command.rb → commands/provisioning_licenses_command.rb}
RENAMED
File without changes
|
data/lib/morpheus/cli/{provisioning_settings_command.rb → commands/provisioning_settings_command.rb}
RENAMED
File without changes
|
File without changes
|
@@ -1,11 +1,5 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'ostruct'
|
3
|
-
require 'yaml'
|
4
|
-
require 'io/console'
|
5
|
-
require 'rest_client'
|
6
|
-
require 'net/https'
|
7
|
-
require 'optparse'
|
8
1
|
require 'morpheus/cli/cli_command'
|
2
|
+
require 'net/https' # needed?
|
9
3
|
|
10
4
|
|
11
5
|
class Morpheus::Cli::Remote
|
@@ -23,7 +17,8 @@ class Morpheus::Cli::Remote
|
|
23
17
|
|
24
18
|
set_default_subcommand :list
|
25
19
|
|
26
|
-
set_subcommands_hidden :setup #
|
20
|
+
set_subcommands_hidden :setup # moved to 'setup'
|
21
|
+
set_subcommands_hidden :view # moved to 'view'
|
27
22
|
|
28
23
|
def initialize()
|
29
24
|
@appliance_name, @appliance_url = Morpheus::Cli::Remote.active_appliance
|
@@ -901,6 +896,7 @@ EOT
|
|
901
896
|
end
|
902
897
|
|
903
898
|
def view(args)
|
899
|
+
print_error "#{yellow}DEPRECATION WARNING: `remote view` has been deprecated and replaced with `view`. Please use `view` instead.#{reset}\n"
|
904
900
|
options = {}
|
905
901
|
path = "/"
|
906
902
|
no_auth = false
|
@@ -909,7 +905,7 @@ EOT
|
|
909
905
|
opts.on('--path PATH', String, "Specify a path to load. eg '/logs'" ) do |val|
|
910
906
|
path = val
|
911
907
|
end
|
912
|
-
opts.on('--no-auth
|
908
|
+
opts.on('--no-auth', "Do not attempt to login with access token." ) do |val|
|
913
909
|
no_auth = true
|
914
910
|
end
|
915
911
|
build_common_options(opts, options, [:dry_run])
|
File without changes
|
@@ -1,26 +1,26 @@
|
|
1
|
-
# require 'yaml'
|
2
|
-
require 'io/console'
|
3
|
-
require 'rest_client'
|
4
|
-
require 'optparse'
|
5
1
|
require 'morpheus/cli/cli_command'
|
6
|
-
require 'morpheus/cli/option_types'
|
7
|
-
require 'morpheus/cli/mixins/accounts_helper'
|
8
|
-
require 'morpheus/cli/mixins/provisioning_helper'
|
9
|
-
require 'json'
|
10
2
|
|
11
3
|
class Morpheus::Cli::Roles
|
12
4
|
include Morpheus::Cli::CliCommand
|
13
5
|
include Morpheus::Cli::AccountsHelper
|
14
6
|
include Morpheus::Cli::ProvisioningHelper
|
15
7
|
include Morpheus::Cli::WhoamiHelper
|
16
|
-
register_subcommands :list, :get, :add, :update, :remove,
|
8
|
+
register_subcommands :list, :get, :add, :update, :remove,
|
9
|
+
:'list-permissions', :'update-feature-access', :'update-global-group-access',
|
10
|
+
:'update-group-access', :'update-global-cloud-access', :'update-cloud-access',
|
11
|
+
:'update-global-instance-type-access', :'update-instance-type-access',
|
12
|
+
:'update-global-blueprint-access', :'update-blueprint-access',
|
13
|
+
:'update-global-catalog-item-type-access', :'update-catalog-item-type-access',
|
14
|
+
:'update-persona-access',
|
15
|
+
:'update-global-vdi-pool-access', :'update-vdi-pool-access',
|
16
|
+
:'update-global-report-type-access', :'update-report-type-access'
|
17
17
|
alias_subcommand :details, :get
|
18
18
|
set_default_subcommand :list
|
19
19
|
|
20
20
|
def connect(opts)
|
21
21
|
@api_client = establish_remote_appliance_connection(opts)
|
22
22
|
@whoami_interface = @api_client.whoami
|
23
|
-
@
|
23
|
+
@account_users_interface = @api_client.account_users
|
24
24
|
@accounts_interface = @api_client.accounts
|
25
25
|
@roles_interface = @api_client.roles
|
26
26
|
@groups_interface = @api_client.groups
|
@@ -110,6 +110,9 @@ class Morpheus::Cli::Roles
|
|
110
110
|
opts.on(nil,'--vdi-pool-access', "Display VDI Pool Access") do
|
111
111
|
options[:include_vdi_pool_access] = true
|
112
112
|
end
|
113
|
+
opts.on(nil,'--report-type-access', "Display Report Type Access") do
|
114
|
+
options[:include_report_type_access] = true
|
115
|
+
end
|
113
116
|
opts.on('-a','--all', "Display All Access Lists") do
|
114
117
|
options[:include_feature_access] = true
|
115
118
|
options[:include_group_access] = true
|
@@ -119,6 +122,7 @@ class Morpheus::Cli::Roles
|
|
119
122
|
options[:include_catalog_item_type_access] = true
|
120
123
|
options[:include_personas_access] = true
|
121
124
|
options[:include_vdi_pool_access] = true
|
125
|
+
options[:include_report_type_access] = true
|
122
126
|
end
|
123
127
|
build_standard_get_options(opts, options)
|
124
128
|
opts.footer = <<-EOT
|
@@ -225,6 +229,7 @@ EOT
|
|
225
229
|
"Blueprints" => lambda {|it| get_access_string(it['globalAppTemplateAccess'] || it['globalBlueprintAccess']) },
|
226
230
|
"Catalog Item Types" => lambda {|it| get_access_string(it['globalCatalogItemTypeAccess']) },
|
227
231
|
"VDI Pools" => lambda {|it| get_access_string(it['globalVdiPoolAccess']) },
|
232
|
+
"Report Types" => lambda {|it| get_access_string(it['globalReportTypeAccess']) },
|
228
233
|
}
|
229
234
|
if role['roleType'].to_s.downcase == 'account'
|
230
235
|
global_access_columns.delete("Groups")
|
@@ -378,7 +383,7 @@ EOT
|
|
378
383
|
rows = vdi_pool_permissions.collect do |it|
|
379
384
|
{
|
380
385
|
name: it['name'],
|
381
|
-
access: format_access_string(it['access'], ["none","
|
386
|
+
access: format_access_string(it['access'], ["none","full"]),
|
382
387
|
}
|
383
388
|
end
|
384
389
|
print as_pretty_table(rows, [:name, :access], options)
|
@@ -390,6 +395,27 @@ EOT
|
|
390
395
|
# print cyan,bold,"VDI Pool Access: #{get_access_string(json_response['globalVdiPoolAccess'])}",reset,"\n"
|
391
396
|
end
|
392
397
|
|
398
|
+
report_type_global_access = json_response['globalReportTypeAccess']
|
399
|
+
report_type_permissions = json_response['reportTypePermissions'] || []
|
400
|
+
print cyan
|
401
|
+
if report_type_global_access == 'custom'
|
402
|
+
print_h2 "Report Type Access", options
|
403
|
+
if options[:include_report_type_access]
|
404
|
+
rows = report_type_permissions.collect do |it|
|
405
|
+
{
|
406
|
+
name: it['name'],
|
407
|
+
access: format_access_string(it['access'], ["none","full"]),
|
408
|
+
}
|
409
|
+
end
|
410
|
+
print as_pretty_table(rows, [:name, :access], options)
|
411
|
+
else
|
412
|
+
print cyan,"Use --report-type-access to list custom access","\n"
|
413
|
+
end
|
414
|
+
else
|
415
|
+
# print "\n"
|
416
|
+
# print cyan,bold,"Report Type Access: #{get_access_string(json_response['globalReportTypeAccess'])}",reset,"\n"
|
417
|
+
end
|
418
|
+
|
393
419
|
end
|
394
420
|
print reset,"\n"
|
395
421
|
|
@@ -765,6 +791,11 @@ EOT
|
|
765
791
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
766
792
|
opts.banner = subcommand_usage("[name] [full|read|custom|none]")
|
767
793
|
build_common_options(opts, options, [:json, :dry_run, :remote])
|
794
|
+
opts.footer = <<-EOT
|
795
|
+
Update global group access for a role.
|
796
|
+
[role] is required. This is the name (authority) or id of a role.
|
797
|
+
[access] is required. This is the access level to assign: full, read, custom or none.
|
798
|
+
EOT
|
768
799
|
end
|
769
800
|
optparse.parse!(args)
|
770
801
|
|
@@ -844,16 +875,14 @@ EOT
|
|
844
875
|
access_value = args[2] if args[2]
|
845
876
|
end
|
846
877
|
if !group_id && !do_all
|
847
|
-
raise_command_error("missing required argument: [group] or --all", optparse)
|
878
|
+
raise_command_error("missing required argument: [group] or --all", args, optparse)
|
848
879
|
end
|
849
880
|
if !access_value
|
850
|
-
raise_command_error("missing required argument: [access]", optparse)
|
881
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
851
882
|
end
|
852
883
|
access_value = access_value.to_s.downcase
|
853
884
|
if !allowed_access_values.include?(access_value)
|
854
|
-
raise_command_error("invalid access value: #{access_value}", optparse)
|
855
|
-
puts optparse
|
856
|
-
return 1
|
885
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
857
886
|
end
|
858
887
|
|
859
888
|
connect(options)
|
@@ -915,6 +944,11 @@ EOT
|
|
915
944
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
916
945
|
opts.banner = subcommand_usage("[name] [full|custom|none]")
|
917
946
|
build_common_options(opts, options, [:json, :dry_run, :remote])
|
947
|
+
opts.footer = <<-EOT
|
948
|
+
Update global cloud access for a role.
|
949
|
+
[role] is required. This is the name (authority) or id of a role.
|
950
|
+
[access] is required. This is the access level to assign: full, custom or none.
|
951
|
+
EOT
|
918
952
|
end
|
919
953
|
optparse.parse!(args)
|
920
954
|
|
@@ -993,16 +1027,14 @@ EOT
|
|
993
1027
|
access_value = args[2] if args[2]
|
994
1028
|
end
|
995
1029
|
if !cloud_id && !do_all
|
996
|
-
raise_command_error("missing required argument: [cloud] or --all", optparse)
|
1030
|
+
raise_command_error("missing required argument: [cloud] or --all", args, optparse)
|
997
1031
|
end
|
998
1032
|
if !access_value
|
999
|
-
raise_command_error("missing required argument: [access]", optparse)
|
1033
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
1000
1034
|
end
|
1001
1035
|
access_value = access_value.to_s.downcase
|
1002
1036
|
if !allowed_access_values.include?(access_value)
|
1003
|
-
raise_command_error("invalid access value: #{access_value}", optparse)
|
1004
|
-
puts optparse
|
1005
|
-
return 1
|
1037
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
1006
1038
|
end
|
1007
1039
|
|
1008
1040
|
connect(options)
|
@@ -1063,6 +1095,11 @@ EOT
|
|
1063
1095
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1064
1096
|
opts.banner = subcommand_usage("[role] [full|custom|none]")
|
1065
1097
|
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1098
|
+
opts.footer = <<-EOT
|
1099
|
+
Update global instance type access for a role.
|
1100
|
+
[role] is required. This is the name (authority) or id of a role.
|
1101
|
+
[access] is required. This is the access level to assign: full, custom or none.
|
1102
|
+
EOT
|
1066
1103
|
end
|
1067
1104
|
optparse.parse!(args)
|
1068
1105
|
|
@@ -1209,6 +1246,11 @@ EOT
|
|
1209
1246
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1210
1247
|
opts.banner = subcommand_usage("[role] [full|custom|none]")
|
1211
1248
|
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1249
|
+
opts.footer = <<-EOT
|
1250
|
+
Update global blueprint access for a role.
|
1251
|
+
[role] is required. This is the name (authority) or id of a role.
|
1252
|
+
[access] is required. This is the access level to assign: full, custom or none.
|
1253
|
+
EOT
|
1212
1254
|
end
|
1213
1255
|
optparse.parse!(args)
|
1214
1256
|
|
@@ -1288,16 +1330,14 @@ EOT
|
|
1288
1330
|
access_value = args[2] if args[2]
|
1289
1331
|
end
|
1290
1332
|
if !blueprint_id && !do_all
|
1291
|
-
raise_command_error("missing required argument: [blueprint] or --all", optparse)
|
1333
|
+
raise_command_error("missing required argument: [blueprint] or --all", args, optparse)
|
1292
1334
|
end
|
1293
1335
|
if !access_value
|
1294
|
-
raise_command_error("missing required argument: [access]", optparse)
|
1336
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
1295
1337
|
end
|
1296
1338
|
access_value = access_value.to_s.downcase
|
1297
1339
|
if !allowed_access_values.include?(access_value)
|
1298
|
-
raise_command_error("invalid access value: #{access_value}", optparse)
|
1299
|
-
puts optparse
|
1300
|
-
return 1
|
1340
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
1301
1341
|
end
|
1302
1342
|
|
1303
1343
|
connect(options)
|
@@ -1370,6 +1410,11 @@ EOT
|
|
1370
1410
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1371
1411
|
opts.banner = subcommand_usage("[role] [full|custom|none]")
|
1372
1412
|
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1413
|
+
opts.footer = <<-EOT
|
1414
|
+
Update global catalog item type access for a role.
|
1415
|
+
[role] is required. This is the name (authority) or id of a role.
|
1416
|
+
[access] is required. This is the access level to assign: full, custom or none.
|
1417
|
+
EOT
|
1373
1418
|
end
|
1374
1419
|
optparse.parse!(args)
|
1375
1420
|
|
@@ -1449,16 +1494,14 @@ EOT
|
|
1449
1494
|
access_value = args[2] if args[2]
|
1450
1495
|
end
|
1451
1496
|
if !catalog_item_type_id && !do_all
|
1452
|
-
raise_command_error("missing required argument: [catalog-item-type] or --all", optparse)
|
1497
|
+
raise_command_error("missing required argument: [catalog-item-type] or --all", args, optparse)
|
1453
1498
|
end
|
1454
1499
|
if !access_value
|
1455
|
-
raise_command_error("missing required argument: [access]", optparse)
|
1500
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
1456
1501
|
end
|
1457
1502
|
access_value = access_value.to_s.downcase
|
1458
1503
|
if !allowed_access_values.include?(access_value)
|
1459
|
-
raise_command_error("invalid access value: #{access_value}", optparse)
|
1460
|
-
puts optparse
|
1461
|
-
return 1
|
1504
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
1462
1505
|
end
|
1463
1506
|
|
1464
1507
|
connect(options)
|
@@ -1561,16 +1604,14 @@ EOT
|
|
1561
1604
|
access_value = args[2] if args[2]
|
1562
1605
|
end
|
1563
1606
|
if !persona_id && !do_all
|
1564
|
-
raise_command_error("missing required argument: [persona] or --all", optparse)
|
1607
|
+
raise_command_error("missing required argument: [persona] or --all", args, optparse)
|
1565
1608
|
end
|
1566
1609
|
if !access_value
|
1567
|
-
raise_command_error("missing required argument: [access]", optparse)
|
1610
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
1568
1611
|
end
|
1569
1612
|
access_value = access_value.to_s.downcase
|
1570
1613
|
if !allowed_access_values.include?(access_value)
|
1571
|
-
raise_command_error("invalid access value: #{access_value}", optparse)
|
1572
|
-
puts optparse
|
1573
|
-
return 1
|
1614
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
1574
1615
|
end
|
1575
1616
|
|
1576
1617
|
connect(options)
|
@@ -1622,13 +1663,18 @@ EOT
|
|
1622
1663
|
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1623
1664
|
opts.banner = subcommand_usage("[role] [full|custom|none]")
|
1624
1665
|
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1666
|
+
opts.footer = <<-EOT
|
1667
|
+
Update global VDI pool access for a role.
|
1668
|
+
[role] is required. This is the name (authority) or id of a role.
|
1669
|
+
[access] is required. This is the access level to assign: full, custom or none.
|
1670
|
+
EOT
|
1625
1671
|
end
|
1626
1672
|
optparse.parse!(args)
|
1627
1673
|
verify_args!(args:args, optparse:optparse, count: 2)
|
1628
1674
|
name = args[0]
|
1629
1675
|
access_value = args[1].to_s.downcase
|
1630
1676
|
if !['full', 'custom', 'none'].include?(access_value)
|
1631
|
-
raise_command_error("invalid access value: #{args[1]}", optparse)
|
1677
|
+
raise_command_error("invalid access value: #{args[1]}", args, optparse)
|
1632
1678
|
end
|
1633
1679
|
|
1634
1680
|
|
@@ -1696,14 +1742,14 @@ EOT
|
|
1696
1742
|
access_value = args[2] if args[2]
|
1697
1743
|
end
|
1698
1744
|
if !vdi_pool_id && !do_all
|
1699
|
-
raise_command_error("missing required argument: [vdi-pool] or --all", optparse)
|
1745
|
+
raise_command_error("missing required argument: [vdi-pool] or --all", args, optparse)
|
1700
1746
|
end
|
1701
1747
|
if !access_value
|
1702
|
-
raise_command_error("missing required argument: [access]", optparse)
|
1748
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
1703
1749
|
end
|
1704
1750
|
access_value = access_value.to_s.downcase
|
1705
1751
|
if !allowed_access_values.include?(access_value)
|
1706
|
-
raise_command_error("invalid access value: #{access_value}", optparse)
|
1752
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
1707
1753
|
puts optparse
|
1708
1754
|
return 1
|
1709
1755
|
end
|
@@ -1770,6 +1816,165 @@ EOT
|
|
1770
1816
|
end
|
1771
1817
|
end
|
1772
1818
|
|
1819
|
+
def update_global_report_type_access(args)
|
1820
|
+
usage = "Usage: morpheus roles update-global-report-type-access [role] [full|custom|none]"
|
1821
|
+
options = {}
|
1822
|
+
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1823
|
+
opts.banner = subcommand_usage("[role] [full|custom|none]")
|
1824
|
+
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1825
|
+
opts.footer = <<-EOT
|
1826
|
+
Update global report type access for a role.
|
1827
|
+
[role] is required. This is the name (authority) or id of a role.
|
1828
|
+
[access] is required. This is the access level to assign: full, custom or none.
|
1829
|
+
EOT
|
1830
|
+
end
|
1831
|
+
optparse.parse!(args)
|
1832
|
+
verify_args!(args:args, optparse:optparse, count: 2)
|
1833
|
+
name = args[0]
|
1834
|
+
access_value = args[1].to_s.downcase
|
1835
|
+
if !['full', 'custom', 'none'].include?(access_value)
|
1836
|
+
raise_command_error("invalid access value: #{args[1]}", args, optparse)
|
1837
|
+
end
|
1838
|
+
|
1839
|
+
|
1840
|
+
connect(options)
|
1841
|
+
begin
|
1842
|
+
account = find_account_from_options(options)
|
1843
|
+
account_id = account ? account['id'] : nil
|
1844
|
+
role = find_role_by_name_or_id(account_id, name)
|
1845
|
+
exit 1 if role.nil?
|
1846
|
+
# note: ReportTypes being plural is odd, the others are singular
|
1847
|
+
params = {permissionCode: 'ReportTypes', access: access_value}
|
1848
|
+
@roles_interface.setopts(options)
|
1849
|
+
if options[:dry_run]
|
1850
|
+
print_dry_run @roles_interface.dry.update_permission(account_id, role['id'], params)
|
1851
|
+
return
|
1852
|
+
end
|
1853
|
+
json_response = @roles_interface.update_permission(account_id, role['id'], params)
|
1854
|
+
|
1855
|
+
if options[:json]
|
1856
|
+
print JSON.pretty_generate(json_response)
|
1857
|
+
print "\n"
|
1858
|
+
else
|
1859
|
+
print_green_success "Role #{role['authority']} global report type access updated"
|
1860
|
+
end
|
1861
|
+
rescue RestClient::Exception => e
|
1862
|
+
print_rest_exception(e, options)
|
1863
|
+
exit 1
|
1864
|
+
end
|
1865
|
+
end
|
1866
|
+
|
1867
|
+
def update_report_type_access(args)
|
1868
|
+
options = {}
|
1869
|
+
report_type_id = nil
|
1870
|
+
access_value = nil
|
1871
|
+
do_all = false
|
1872
|
+
allowed_access_values = ['full', 'none']
|
1873
|
+
optparse = Morpheus::Cli::OptionParser.new do |opts|
|
1874
|
+
opts.banner = subcommand_usage("[role] [report-type] [access]")
|
1875
|
+
opts.on( '--report-type ID', String, "Report Type ID or Name" ) do |val|
|
1876
|
+
report_type_id = val
|
1877
|
+
end
|
1878
|
+
opts.on( nil, '--all', "Update all report types at once." ) do
|
1879
|
+
do_all = true
|
1880
|
+
end
|
1881
|
+
opts.on( '--access VALUE', String, "Access value [#{allowed_access_values.join('|')}]" ) do |val|
|
1882
|
+
access_value = val
|
1883
|
+
end
|
1884
|
+
build_common_options(opts, options, [:json, :dry_run, :remote])
|
1885
|
+
opts.footer = "Update role access for a report type or all report types.\n" +
|
1886
|
+
"[role] is required. This is the name or id of a role.\n" +
|
1887
|
+
"--report-type or --all is required. This is the name or id of a report type.\n" +
|
1888
|
+
"--access is required. This is the new access value. #{anded_list(allowed_access_values)}"
|
1889
|
+
end
|
1890
|
+
optparse.parse!(args)
|
1891
|
+
|
1892
|
+
# usage: update-report-type-access [role] [access] --all
|
1893
|
+
# update-report-type-access [role] [report-type] [access]
|
1894
|
+
name = args[0]
|
1895
|
+
if do_all
|
1896
|
+
verify_args!(args:args, optparse:optparse, min:1, max:2)
|
1897
|
+
access_value = args[1] if args[1]
|
1898
|
+
else
|
1899
|
+
verify_args!(args:args, optparse:optparse, min:1, max:3)
|
1900
|
+
report_type_id = args[1] if args[1]
|
1901
|
+
access_value = args[2] if args[2]
|
1902
|
+
end
|
1903
|
+
if !report_type_id && !do_all
|
1904
|
+
raise_command_error("missing required argument: [report-type] or --all", args, optparse)
|
1905
|
+
end
|
1906
|
+
if !access_value
|
1907
|
+
raise_command_error("missing required argument: [access]", args, optparse)
|
1908
|
+
end
|
1909
|
+
access_value = access_value.to_s.downcase
|
1910
|
+
if !allowed_access_values.include?(access_value)
|
1911
|
+
raise_command_error("invalid access value: #{access_value}", args, optparse)
|
1912
|
+
puts optparse
|
1913
|
+
return 1
|
1914
|
+
end
|
1915
|
+
|
1916
|
+
connect(options)
|
1917
|
+
begin
|
1918
|
+
account = find_account_from_options(options)
|
1919
|
+
account_id = account ? account['id'] : nil
|
1920
|
+
role = find_role_by_name_or_id(account_id, name)
|
1921
|
+
return 1 if role.nil?
|
1922
|
+
|
1923
|
+
role_json = @roles_interface.get(account_id, role['id'])
|
1924
|
+
report_type_global_access = role_json['globalReportTypeAccess']
|
1925
|
+
report_type_permissions = role_json['reportTypePermissions'] || []
|
1926
|
+
if report_type_global_access != 'custom'
|
1927
|
+
print "\n", red, "Global Report Type Access is currently: #{report_type_global_access.to_s.capitalize}"
|
1928
|
+
print "\n", "You must first set it to Custom via `morpheus roles update-global-report-type-access \"#{name}\" custom`"
|
1929
|
+
print "\n\n", reset
|
1930
|
+
return 1
|
1931
|
+
end
|
1932
|
+
|
1933
|
+
# hacky, but support name or code lookup via the list returned in the show payload
|
1934
|
+
report_type = nil
|
1935
|
+
if !do_all
|
1936
|
+
if report_type_id.to_s =~ /\A\d{1,}\Z/
|
1937
|
+
report_type = report_type_permissions.find {|b| b['id'] == report_type_id.to_i }
|
1938
|
+
else
|
1939
|
+
report_type = report_type_permissions.find {|b| b['name'] == report_type_id }
|
1940
|
+
end
|
1941
|
+
if report_type.nil?
|
1942
|
+
print_red_alert "Report Type not found: '#{report_type_id}'"
|
1943
|
+
return 1
|
1944
|
+
end
|
1945
|
+
end
|
1946
|
+
|
1947
|
+
params = {}
|
1948
|
+
if do_all
|
1949
|
+
params['allReportTypes'] = true
|
1950
|
+
else
|
1951
|
+
params['reportTypeId'] = report_type['id']
|
1952
|
+
end
|
1953
|
+
params['access'] = access_value
|
1954
|
+
@roles_interface.setopts(options)
|
1955
|
+
if options[:dry_run]
|
1956
|
+
print_dry_run @roles_interface.dry.update_report_type(account_id, role['id'], params)
|
1957
|
+
return
|
1958
|
+
end
|
1959
|
+
json_response = @roles_interface.update_report_type(account_id, role['id'], params)
|
1960
|
+
|
1961
|
+
if options[:json]
|
1962
|
+
print JSON.pretty_generate(json_response)
|
1963
|
+
print "\n"
|
1964
|
+
else
|
1965
|
+
if do_all
|
1966
|
+
print_green_success "Role #{role['authority']} access updated for all report types"
|
1967
|
+
else
|
1968
|
+
print_green_success "Role #{role['authority']} access updated for report type #{report_type['name']}"
|
1969
|
+
end
|
1970
|
+
end
|
1971
|
+
return 0
|
1972
|
+
rescue RestClient::Exception => e
|
1973
|
+
print_rest_exception(e, options)
|
1974
|
+
exit 1
|
1975
|
+
end
|
1976
|
+
end
|
1977
|
+
|
1773
1978
|
private
|
1774
1979
|
|
1775
1980
|
def add_role_option_types
|
File without changes
|
@@ -1,10 +1,4 @@
|
|
1
|
-
# require 'yaml'
|
2
|
-
require 'io/console'
|
3
|
-
require 'rest_client'
|
4
|
-
require 'optparse'
|
5
|
-
require 'filesize'
|
6
1
|
require 'morpheus/cli/cli_command'
|
7
|
-
require 'morpheus/cli/mixins/infrastructure_helper'
|
8
2
|
|
9
3
|
class Morpheus::Cli::SecurityGroups
|
10
4
|
include Morpheus::Cli::CliCommand
|
File without changes
|
File without changes
|
File without changes
|