morpheus-cli 5.3.2.3 → 5.4.1
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.
- 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 +39 -5
- 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_images_interface.rb +23 -2
- data/lib/morpheus/api/virtual_servers_interface.rb +9 -0
- data/lib/morpheus/cli/cli_command.rb +274 -19
- data/lib/morpheus/cli/cli_registry.rb +56 -2
- 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} +17 -89
- 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} +170 -138
- data/lib/morpheus/cli/{clouds.rb → commands/clouds.rb} +22 -47
- data/lib/morpheus/cli/{clusters.rb → commands/clusters.rb} +86 -49
- 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} +2 -8
- data/lib/morpheus/cli/{instance_types.rb → commands/instance_types.rb} +0 -3
- data/lib/morpheus/cli/{instances.rb → commands/instances.rb} +473 -150
- data/lib/morpheus/cli/{integrations_command.rb → commands/integrations_command.rb} +0 -0
- data/lib/morpheus/cli/{invoices_command.rb → commands/invoices_command.rb} +118 -134
- 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} +20 -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 +71 -0
- data/lib/morpheus/cli/commands/load_balancer_pools.rb +91 -0
- data/lib/morpheus/cli/commands/load_balancer_profiles.rb +65 -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 +156 -0
- data/lib/morpheus/cli/commands/load_balancers.rb +176 -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} +2 -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} +21 -21
- 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} +4 -1
- 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} +251 -33
- 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 +167 -110
- data/lib/morpheus/cli/mixins/rest_command.rb +268 -94
- data/lib/morpheus/cli/mixins/secondary_rest_command.rb +668 -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_parser.rb +25 -17
- data/lib/morpheus/cli/option_types.rb +137 -52
- 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
- data/morpheus-cli.gemspec +1 -1
- metadata +183 -149
- 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
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
require 'morpheus/cli/mixins/print_helper'
|
|
2
|
+
require 'morpheus/cli/option_types'
|
|
3
|
+
require 'morpheus/rest_client'
|
|
4
|
+
# Mixin for Morpheus::Cli command classes
|
|
5
|
+
# Provides common methods for storage server management
|
|
6
|
+
# including storage servers and storage server types
|
|
7
|
+
module Morpheus::Cli::StorageServersHelper
|
|
8
|
+
|
|
9
|
+
def self.included(klass)
|
|
10
|
+
klass.send :include, Morpheus::Cli::PrintHelper
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def storage_servers_interface
|
|
14
|
+
# @api_client.storage_servers
|
|
15
|
+
raise "#{self.class} has not defined @storage_servers_interface" if @storage_servers_interface.nil?
|
|
16
|
+
@storage_servers_interface
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def storage_server_types_interface
|
|
20
|
+
# @api_client.storage_server_types
|
|
21
|
+
raise "#{self.class} has not defined @storage_server_types_interface" if @storage_server_types_interface.nil?
|
|
22
|
+
@storage_server_types_interface
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def storage_server_object_key
|
|
26
|
+
'storageServer'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def storage_server_list_key
|
|
30
|
+
'storageServers'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def storage_server_label
|
|
34
|
+
'Storage Server'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def storage_server_label_plural
|
|
38
|
+
'Storage Server'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def storage_server_type_object_key
|
|
42
|
+
'storageServerType'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def storage_server_type_list_key
|
|
46
|
+
'storageServerTypes'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def storage_server_type_label
|
|
50
|
+
'Storage Server Type'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def storage_server_type_label_plural
|
|
54
|
+
'Storage Server Types'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def find_storage_server_by_name_or_id(val)
|
|
58
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
59
|
+
return find_storage_server_by_id(val)
|
|
60
|
+
else
|
|
61
|
+
return find_storage_server_by_name(val)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def find_storage_server_by_id(id)
|
|
66
|
+
begin
|
|
67
|
+
json_response = storage_servers_interface.get(id.to_i)
|
|
68
|
+
return json_response[storage_server_object_key]
|
|
69
|
+
rescue RestClient::Exception => e
|
|
70
|
+
if e.response && e.response.code == 404
|
|
71
|
+
print_red_alert "Storage Server not found by id #{id}"
|
|
72
|
+
else
|
|
73
|
+
raise e
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def find_storage_server_by_name(name)
|
|
79
|
+
lbs = storage_servers_interface.list({name: name.to_s})[storage_server_list_key]
|
|
80
|
+
if lbs.empty?
|
|
81
|
+
print_red_alert "Storage Server not found by name #{name}"
|
|
82
|
+
return nil
|
|
83
|
+
elsif lbs.size > 1
|
|
84
|
+
print_red_alert "#{lbs.size} storage servers found by name #{name}"
|
|
85
|
+
#print_lbs_table(lbs, {color: red})
|
|
86
|
+
print reset,"\n\n"
|
|
87
|
+
return nil
|
|
88
|
+
else
|
|
89
|
+
return lbs[0]
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def get_available_storage_server_types(refresh=false)
|
|
94
|
+
if !@available_storage_server_types || refresh
|
|
95
|
+
@available_storage_server_types = storage_server_types_interface.list({max:1000})[storage_server_type_list_key]
|
|
96
|
+
end
|
|
97
|
+
return @available_storage_server_types
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def storage_server_type_for_name_or_id(val)
|
|
101
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
102
|
+
return storage_server_type_for_id(val)
|
|
103
|
+
else
|
|
104
|
+
return storage_server_type_for_name(val)
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def storage_server_type_for_id(id)
|
|
109
|
+
return get_available_storage_server_types().find { |z| z['id'].to_i == id.to_i}
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def storage_server_type_for_name(name)
|
|
113
|
+
return get_available_storage_server_types().find { |z| z['name'].downcase == name.downcase || z['code'].downcase == name.downcase}
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def find_storage_server_type_by_name_or_id(val)
|
|
117
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
118
|
+
return find_storage_server_type_by_id(val)
|
|
119
|
+
else
|
|
120
|
+
return find_storage_server_type_by_name(val)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def find_storage_server_type_by_id(id)
|
|
125
|
+
begin
|
|
126
|
+
json_response = storage_server_types_interface.get(id.to_i)
|
|
127
|
+
return json_response[storage_server_type_object_key]
|
|
128
|
+
rescue RestClient::Exception => e
|
|
129
|
+
if e.response && e.response.code == 404
|
|
130
|
+
print_red_alert "Storage Server Type not found by id #{id}"
|
|
131
|
+
return nil
|
|
132
|
+
else
|
|
133
|
+
raise e
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def find_storage_server_type_by_name(name)
|
|
139
|
+
json_response = storage_server_types_interface.list({name: name.to_s})
|
|
140
|
+
storage_server_types = json_response[storage_server_type_list_key]
|
|
141
|
+
if storage_server_types.empty?
|
|
142
|
+
print_red_alert "Storage Server Type not found by name #{name}"
|
|
143
|
+
return storage_server_types
|
|
144
|
+
elsif storage_server_types.size > 1
|
|
145
|
+
print_red_alert "#{storage_server_types.size} storage server types found by name #{name}"
|
|
146
|
+
rows = storage_server_types.collect do |it|
|
|
147
|
+
{id: it['id'], name: it['name']}
|
|
148
|
+
end
|
|
149
|
+
puts as_pretty_table(rows, [:id, :name], {color:red})
|
|
150
|
+
return nil
|
|
151
|
+
else
|
|
152
|
+
return storage_server_types[0]
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
require 'morpheus/cli/mixins/print_helper'
|
|
2
|
+
require 'morpheus/cli/option_types'
|
|
3
|
+
require 'morpheus/rest_client'
|
|
4
|
+
# Mixin for Morpheus::Cli command classes
|
|
5
|
+
# Provides common methods for storage volume management
|
|
6
|
+
# including storage volumes and storage volume types
|
|
7
|
+
module Morpheus::Cli::StorageVolumesHelper
|
|
8
|
+
|
|
9
|
+
def self.included(klass)
|
|
10
|
+
klass.send :include, Morpheus::Cli::PrintHelper
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def storage_volumes_interface
|
|
14
|
+
# @api_client.storage_volumes
|
|
15
|
+
raise "#{self.class} has not defined @storage_volumes_interface" if @storage_volumes_interface.nil?
|
|
16
|
+
@storage_volumes_interface
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def storage_volume_types_interface
|
|
20
|
+
# @api_client.storage_volume_types
|
|
21
|
+
raise "#{self.class} has not defined @storage_volume_types_interface" if @storage_volume_types_interface.nil?
|
|
22
|
+
@storage_volume_types_interface
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def storage_volume_object_key
|
|
26
|
+
'storageVolume'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def storage_volume_list_key
|
|
30
|
+
'storageVolumes'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def storage_volume_label
|
|
34
|
+
'Storage Volume'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def storage_volume_label_plural
|
|
38
|
+
'Storage Volume'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def storage_volume_type_object_key
|
|
42
|
+
'storageVolumeType'
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def storage_volume_type_list_key
|
|
46
|
+
'storageVolumeTypes'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def storage_volume_type_label
|
|
50
|
+
'Storage Volume Type'
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def storage_volume_type_label_plural
|
|
54
|
+
'Storage Volume Types'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def get_available_storage_volume_types(refresh=false)
|
|
58
|
+
if !@available_storage_volume_types || refresh
|
|
59
|
+
@available_storage_volume_types = storage_volume_types_interface.list({max:1000})[storage_volume_type_list_key]
|
|
60
|
+
end
|
|
61
|
+
return @available_storage_volume_types
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def storage_volume_type_for_name_or_id(val)
|
|
65
|
+
if val.to_s =~ /\A\d{1,}\Z/
|
|
66
|
+
return storage_volume_type_for_id(val)
|
|
67
|
+
else
|
|
68
|
+
return storage_volume_type_for_name(val)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def storage_volume_type_for_id(val)
|
|
73
|
+
record = get_available_storage_volume_types().find { |z| z['id'].to_i == val.to_i}
|
|
74
|
+
label = "Storage Volume Type"
|
|
75
|
+
if record.nil?
|
|
76
|
+
print_red_alert "#{label} not found by id #{val}"
|
|
77
|
+
return nil
|
|
78
|
+
end
|
|
79
|
+
return record
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def storage_volume_type_for_name(val)
|
|
83
|
+
records = get_available_storage_volume_types().select { |z| z['name'].downcase == val.downcase || z['code'].downcase == val.downcase}
|
|
84
|
+
label = "Storage Volume Type"
|
|
85
|
+
if records.empty?
|
|
86
|
+
print_red_alert "#{label} not found by name '#{val}'"
|
|
87
|
+
return nil
|
|
88
|
+
elsif records.size > 1
|
|
89
|
+
print_red_alert "More than one #{label.downcase} found by name '#{val}'"
|
|
90
|
+
print_error "\n"
|
|
91
|
+
puts_error as_pretty_table(records, [:id, :name], {color:red})
|
|
92
|
+
print_red_alert "Try using ID instead"
|
|
93
|
+
print_error reset,"\n"
|
|
94
|
+
return nil
|
|
95
|
+
else
|
|
96
|
+
return records[0]
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def format_storage_volume_status(record, return_color=cyan)
|
|
101
|
+
out = ""
|
|
102
|
+
status_string = record['status']
|
|
103
|
+
if status_string.nil? || status_string.empty? || status_string == "unknown"
|
|
104
|
+
out << "#{white}UNKNOWN#{return_color}"
|
|
105
|
+
elsif status_string == 'provisioned' || status_string == 'unattached'
|
|
106
|
+
out << "#{cyan}#{status_string.capitalize}#{return_color}"
|
|
107
|
+
elsif status_string == 'syncing'
|
|
108
|
+
out << "#{yellow}#{status_string.capitalize}#{return_color}"
|
|
109
|
+
else
|
|
110
|
+
out << "#{red}#{status_string ? status_string.capitalize : 'N/A'}#{record['statusMessage'] ? "#{return_color} - #{record['statusMessage']}" : ''}#{return_color}"
|
|
111
|
+
end
|
|
112
|
+
out
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def format_storage_volume_source(storage_volume)
|
|
116
|
+
storage_volume['source']
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
end
|
|
@@ -32,27 +32,35 @@ module Morpheus
|
|
|
32
32
|
#out << "Options:\n"
|
|
33
33
|
# the default way..
|
|
34
34
|
# out << summarize().join("")
|
|
35
|
-
|
|
36
35
|
# super hacky, should be examining the option, not the fully formatted description
|
|
37
36
|
my_summaries = summarize()
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
37
|
+
if opts[:show_hidden_options]
|
|
38
|
+
my_summaries.each do |full_line|
|
|
39
|
+
out << full_line
|
|
40
|
+
end
|
|
41
|
+
else
|
|
42
|
+
on_hidden_option = false
|
|
43
|
+
my_summaries.each do |full_line|
|
|
44
|
+
opt_description = full_line.to_s.strip
|
|
45
|
+
if opt_description.start_with?("-")
|
|
46
|
+
is_hidden = (@hidden_options || []).find { |hidden_switch|
|
|
47
|
+
if hidden_switch.start_with?("-")
|
|
48
|
+
opt_description.start_with?("#{hidden_switch} ")
|
|
49
|
+
else
|
|
50
|
+
opt_description.start_with?("--#{hidden_switch} ")
|
|
51
|
+
end
|
|
52
|
+
}
|
|
53
|
+
if is_hidden
|
|
54
|
+
on_hidden_option = true
|
|
55
|
+
else
|
|
56
|
+
on_hidden_option = false
|
|
57
|
+
out << full_line
|
|
58
|
+
end
|
|
51
59
|
else
|
|
52
|
-
|
|
60
|
+
if on_hidden_option == false
|
|
61
|
+
out << full_line
|
|
62
|
+
end
|
|
53
63
|
end
|
|
54
|
-
else
|
|
55
|
-
out << opt_description
|
|
56
64
|
end
|
|
57
65
|
end
|
|
58
66
|
end
|