morpheus-cli 5.3.0.3 → 5.3.2.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/README.md +1 -3
- data/lib/morpheus/api/account_groups_interface.rb +0 -6
- data/lib/morpheus/api/accounts_interface.rb +4 -36
- data/lib/morpheus/api/api_client.rb +167 -119
- data/lib/morpheus/api/appliance_settings_interface.rb +6 -9
- data/lib/morpheus/api/approvals_interface.rb +5 -8
- data/lib/morpheus/api/apps_interface.rb +0 -7
- data/lib/morpheus/api/archive_buckets_interface.rb +9 -16
- data/lib/morpheus/api/archive_files_interface.rb +0 -6
- data/lib/morpheus/api/auth_interface.rb +4 -4
- data/lib/morpheus/api/backup_settings_interface.rb +5 -8
- data/lib/morpheus/api/blueprints_interface.rb +1 -7
- data/lib/morpheus/api/budgets_interface.rb +0 -6
- data/lib/morpheus/api/certificate_types_interface.rb +14 -0
- data/lib/morpheus/api/certificates_interface.rb +9 -0
- data/lib/morpheus/api/cloud_datastores_interface.rb +0 -6
- data/lib/morpheus/api/cloud_folders_interface.rb +1 -7
- data/lib/morpheus/api/cloud_policies_interface.rb +0 -6
- data/lib/morpheus/api/cloud_resource_pools_interface.rb +0 -6
- data/lib/morpheus/api/clouds_interface.rb +0 -6
- data/lib/morpheus/api/clusters_interface.rb +39 -42
- data/lib/morpheus/api/containers_interface.rb +0 -6
- data/lib/morpheus/api/custom_instance_types_interface.rb +0 -6
- data/lib/morpheus/api/cypher_interface.rb +0 -6
- data/lib/morpheus/api/datastores_interface.rb +4 -7
- data/lib/morpheus/api/deploy_interface.rb +1 -6
- data/lib/morpheus/api/environments_interface.rb +0 -6
- data/lib/morpheus/api/execute_schedules_interface.rb +0 -6
- data/lib/morpheus/api/execution_request_interface.rb +0 -6
- data/lib/morpheus/api/file_copy_request_interface.rb +2 -9
- data/lib/morpheus/api/group_policies_interface.rb +0 -6
- data/lib/morpheus/api/groups_interface.rb +0 -7
- data/lib/morpheus/api/guidance_interface.rb +9 -12
- data/lib/morpheus/api/health_interface.rb +0 -6
- data/lib/morpheus/api/image_builder_boot_scripts_interface.rb +0 -6
- data/lib/morpheus/api/image_builder_image_builds_interface.rb +0 -6
- data/lib/morpheus/api/image_builder_interface.rb +3 -9
- data/lib/morpheus/api/image_builder_preseed_scripts_interface.rb +0 -6
- data/lib/morpheus/api/instance_types_interface.rb +0 -7
- data/lib/morpheus/api/instances_interface.rb +8 -19
- data/lib/morpheus/api/integration_types_interface.rb +14 -0
- data/lib/morpheus/api/integrations_interface.rb +36 -21
- data/lib/morpheus/api/invoice_line_items_interface.rb +4 -9
- data/lib/morpheus/api/jobs_interface.rb +11 -14
- data/lib/morpheus/api/key_pairs_interface.rb +0 -6
- data/lib/morpheus/api/library_cluster_layouts_interface.rb +0 -6
- data/lib/morpheus/api/library_container_scripts_interface.rb +0 -6
- data/lib/morpheus/api/library_container_templates_interface.rb +0 -6
- data/lib/morpheus/api/library_container_types_interface.rb +0 -6
- data/lib/morpheus/api/library_container_upgrades_interface.rb +0 -6
- data/lib/morpheus/api/library_instance_types_interface.rb +0 -6
- data/lib/morpheus/api/library_layouts_interface.rb +0 -6
- data/lib/morpheus/api/library_spec_template_types_interface.rb +0 -6
- data/lib/morpheus/api/library_spec_templates_interface.rb +0 -6
- data/lib/morpheus/api/license_interface.rb +0 -6
- data/lib/morpheus/api/load_balancer_pools_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_types_interface.rb +9 -0
- data/lib/morpheus/api/load_balancer_virtual_servers_interface.rb +9 -0
- data/lib/morpheus/api/load_balancers_interface.rb +4 -59
- data/lib/morpheus/api/log_settings_interface.rb +9 -12
- data/lib/morpheus/api/logs_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_alerts_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_apps_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_checks_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_contacts_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_groups_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_incidents_interface.rb +0 -6
- data/lib/morpheus/api/monitoring_interface.rb +6 -12
- data/lib/morpheus/api/network_domain_records_interface.rb +0 -6
- data/lib/morpheus/api/network_domains_interface.rb +0 -6
- data/lib/morpheus/api/network_groups_interface.rb +0 -6
- data/lib/morpheus/api/network_pool_ips_interface.rb +0 -6
- data/lib/morpheus/api/network_pool_servers_interface.rb +0 -6
- data/lib/morpheus/api/network_pools_interface.rb +0 -6
- data/lib/morpheus/api/network_proxies_interface.rb +0 -6
- data/lib/morpheus/api/network_routers_interface.rb +56 -6
- data/lib/morpheus/api/network_security_servers_interface.rb +6 -9
- data/lib/morpheus/api/network_services_interface.rb +14 -14
- data/lib/morpheus/api/network_subnets_interface.rb +0 -6
- data/lib/morpheus/api/network_types_interface.rb +1 -7
- data/lib/morpheus/api/networks_interface.rb +0 -6
- data/lib/morpheus/api/option_type_lists_interface.rb +18 -12
- data/lib/morpheus/api/option_types_interface.rb +0 -6
- data/lib/morpheus/api/options_interface.rb +0 -6
- data/lib/morpheus/api/packages_interface.rb +0 -6
- data/lib/morpheus/api/policies_interface.rb +1 -8
- data/lib/morpheus/api/power_schedules_interface.rb +0 -6
- data/lib/morpheus/api/price_sets_interface.rb +8 -11
- data/lib/morpheus/api/prices_interface.rb +12 -15
- data/lib/morpheus/api/processes_interface.rb +0 -6
- data/lib/morpheus/api/provision_types_interface.rb +0 -6
- data/lib/morpheus/api/provisioning_license_types_interface.rb +0 -6
- data/lib/morpheus/api/provisioning_licenses_interface.rb +0 -6
- data/lib/morpheus/api/provisioning_settings_interface.rb +6 -9
- data/lib/morpheus/api/read_interface.rb +23 -0
- data/lib/morpheus/api/reports_interface.rb +0 -6
- data/lib/morpheus/api/rest_interface.rb +12 -10
- data/lib/morpheus/api/roles_interface.rb +7 -6
- data/lib/morpheus/api/secondary_read_interface.rb +25 -0
- data/lib/morpheus/api/secondary_rest_interface.rb +42 -0
- data/lib/morpheus/api/security_group_rules_interface.rb +0 -7
- data/lib/morpheus/api/security_groups_interface.rb +0 -6
- data/lib/morpheus/api/server_types_interface.rb +0 -6
- data/lib/morpheus/api/servers_interface.rb +7 -6
- data/lib/morpheus/api/service_plans_interface.rb +11 -14
- data/lib/morpheus/api/storage_providers_interface.rb +9 -16
- data/lib/morpheus/api/subnet_types_interface.rb +1 -7
- data/lib/morpheus/api/subnets_interface.rb +0 -6
- data/lib/morpheus/api/task_sets_interface.rb +0 -6
- data/lib/morpheus/api/tasks_interface.rb +0 -6
- data/lib/morpheus/api/user_groups_interface.rb +0 -6
- data/lib/morpheus/api/user_settings_interface.rb +38 -18
- data/lib/morpheus/api/user_sources_interface.rb +0 -6
- data/lib/morpheus/api/users_interface.rb +0 -6
- data/lib/morpheus/api/vdi_allocations_interface.rb +9 -0
- data/lib/morpheus/api/vdi_apps_interface.rb +9 -0
- data/lib/morpheus/api/vdi_gateways_interface.rb +9 -0
- data/lib/morpheus/api/vdi_interface.rb +28 -0
- data/lib/morpheus/api/vdi_pools_interface.rb +19 -0
- data/lib/morpheus/api/virtual_images_interface.rb +0 -6
- data/lib/morpheus/api/whitelabel_settings_interface.rb +8 -11
- data/lib/morpheus/api/wiki_interface.rb +0 -6
- data/lib/morpheus/cli.rb +10 -2
- data/lib/morpheus/cli/access_token_command.rb +1 -1
- data/lib/morpheus/cli/account_groups_command.rb +4 -4
- data/lib/morpheus/cli/apps.rb +68 -84
- data/lib/morpheus/cli/archives_command.rb +5 -5
- data/lib/morpheus/cli/blueprints_command.rb +5 -5
- data/lib/morpheus/cli/boot_scripts_command.rb +1 -1
- data/lib/morpheus/cli/catalog_item_types_command.rb +13 -13
- data/lib/morpheus/cli/certificates_command.rb +575 -0
- data/lib/morpheus/cli/change_password_command.rb +4 -4
- data/lib/morpheus/cli/cli_command.rb +72 -16
- data/lib/morpheus/cli/clouds.rb +3 -2
- data/lib/morpheus/cli/clusters.rb +3 -3
- data/lib/morpheus/cli/commands/standard/man_command.rb +4 -5
- data/lib/morpheus/cli/credentials.rb +4 -11
- data/lib/morpheus/cli/environments_command.rb +1 -1
- data/lib/morpheus/cli/execute_schedules_command.rb +3 -3
- data/lib/morpheus/cli/hosts.rb +253 -232
- data/lib/morpheus/cli/image_builder_command.rb +6 -6
- data/lib/morpheus/cli/instance_types.rb +1 -1
- data/lib/morpheus/cli/instances.rb +229 -219
- data/lib/morpheus/cli/integrations_command.rb +1155 -42
- data/lib/morpheus/cli/invoices_command.rb +75 -67
- data/lib/morpheus/cli/key_pairs.rb +2 -2
- data/lib/morpheus/cli/library_cluster_layouts_command.rb +2 -3
- data/lib/morpheus/cli/library_container_scripts_command.rb +4 -5
- data/lib/morpheus/cli/library_container_templates_command.rb +5 -1
- data/lib/morpheus/cli/library_container_types_command.rb +8 -9
- data/lib/morpheus/cli/library_instance_types_command.rb +6 -7
- data/lib/morpheus/cli/library_layouts_command.rb +9 -5
- data/lib/morpheus/cli/library_option_lists_command.rb +72 -20
- data/lib/morpheus/cli/library_option_types_command.rb +8 -4
- data/lib/morpheus/cli/library_spec_templates_command.rb +3 -4
- data/lib/morpheus/cli/library_upgrades_command.rb +6 -6
- data/lib/morpheus/cli/license.rb +2 -2
- data/lib/morpheus/cli/load_balancer_types.rb +37 -0
- data/lib/morpheus/cli/load_balancers.rb +149 -314
- data/lib/morpheus/cli/log_settings_command.rb +7 -3
- data/lib/morpheus/cli/login.rb +10 -1
- data/lib/morpheus/cli/mixins/load_balancers_helper.rb +156 -0
- data/lib/morpheus/cli/mixins/print_helper.rb +44 -18
- data/lib/morpheus/cli/mixins/provisioning_helper.rb +4 -4
- data/lib/morpheus/cli/mixins/rest_command.rb +657 -0
- data/lib/morpheus/cli/mixins/vdi_helper.rb +246 -0
- data/lib/morpheus/cli/network_routers_command.rb +1187 -176
- data/lib/morpheus/cli/networks_command.rb +195 -102
- data/lib/morpheus/cli/option_types.rb +66 -71
- data/lib/morpheus/cli/policies_command.rb +0 -1
- data/lib/morpheus/cli/power_schedules_command.rb +3 -3
- data/lib/morpheus/cli/preseed_scripts_command.rb +1 -1
- data/lib/morpheus/cli/remote.rb +2 -2
- data/lib/morpheus/cli/reports_command.rb +4 -1
- data/lib/morpheus/cli/roles.rb +224 -64
- data/lib/morpheus/cli/security_group_rules.rb +1 -1
- data/lib/morpheus/cli/setup.rb +0 -1
- data/lib/morpheus/cli/subnets_command.rb +11 -2
- data/lib/morpheus/cli/tenants_command.rb +21 -23
- data/lib/morpheus/cli/user_groups_command.rb +3 -3
- data/lib/morpheus/cli/user_settings_command.rb +268 -57
- data/lib/morpheus/cli/user_sources_command.rb +3 -3
- data/lib/morpheus/cli/users.rb +3 -3
- data/lib/morpheus/cli/vdi_allocations_command.rb +159 -0
- data/lib/morpheus/cli/vdi_apps_command.rb +317 -0
- data/lib/morpheus/cli/vdi_command.rb +359 -0
- data/lib/morpheus/cli/vdi_gateways_command.rb +290 -0
- data/lib/morpheus/cli/vdi_pools_command.rb +571 -0
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/cli/virtual_images.rb +1 -1
- data/lib/morpheus/cli/whoami.rb +0 -15
- data/lib/morpheus/cli/wiki_command.rb +1 -1
- data/lib/morpheus/ext/string.rb +41 -0
- data/lib/morpheus/formatters.rb +4 -0
- data/lib/morpheus/rest_client.rb +30 -0
- data/lib/morpheus/terminal.rb +15 -7
- metadata +27 -2
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'morpheus/api/rest_interface'
|
|
2
|
+
|
|
3
|
+
class Morpheus::VdiPoolsInterface < Morpheus::RestInterface
|
|
4
|
+
|
|
5
|
+
def base_path
|
|
6
|
+
"/api/vdi-pools"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
# NOT json, multipart file upload
|
|
10
|
+
def update_logo(id, logo_file)
|
|
11
|
+
url = "#{base_path}/#{id}/update-logo"
|
|
12
|
+
headers = { :params => {}, :authorization => "Bearer #{@access_token}"}
|
|
13
|
+
payload = {}
|
|
14
|
+
payload[:logo] = logo_file
|
|
15
|
+
payload[:multipart] = true
|
|
16
|
+
execute(method: :post, url: url, headers: headers, payload: payload)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
@@ -4,12 +4,6 @@ require 'zlib'
|
|
|
4
4
|
require 'forwardable'
|
|
5
5
|
|
|
6
6
|
class Morpheus::VirtualImagesInterface < Morpheus::APIClient
|
|
7
|
-
def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
|
|
8
|
-
@access_token = access_token
|
|
9
|
-
@refresh_token = refresh_token
|
|
10
|
-
@base_url = base_url
|
|
11
|
-
@expires_at = expires_at
|
|
12
|
-
end
|
|
13
7
|
|
|
14
8
|
def virtual_image_types(options={})
|
|
15
9
|
url = "#{@base_url}/api/virtual-image-types"
|
|
@@ -1,41 +1,38 @@
|
|
|
1
1
|
require 'morpheus/api/api_client'
|
|
2
2
|
|
|
3
3
|
class Morpheus::WhitelabelSettingsInterface < Morpheus::APIClient
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
@base_url = base_url
|
|
8
|
-
@api_url = "#{base_url}/api/#{api}"
|
|
9
|
-
@expires_at = expires_at
|
|
4
|
+
|
|
5
|
+
def base_path
|
|
6
|
+
"/api/whitelabel-settings"
|
|
10
7
|
end
|
|
11
8
|
|
|
12
9
|
def get(params={})
|
|
13
|
-
url =
|
|
10
|
+
url = base_path
|
|
14
11
|
headers = { params: params, authorization: "Bearer #{@access_token}" }
|
|
15
12
|
execute(method: :get, url: url, headers: headers)
|
|
16
13
|
end
|
|
17
14
|
|
|
18
15
|
def update(payload, params={})
|
|
19
|
-
url =
|
|
16
|
+
url = base_path
|
|
20
17
|
headers = { params: params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
|
21
18
|
execute(method: :put, url: url, headers: headers, payload: payload.to_json)
|
|
22
19
|
end
|
|
23
20
|
|
|
24
21
|
def update_images(payload, params={})
|
|
25
|
-
url = "#{
|
|
22
|
+
url = "#{base_path}/images"
|
|
26
23
|
headers = { params: params, :authorization => "Bearer #{@access_token}" }
|
|
27
24
|
payload[:multipart] = true
|
|
28
25
|
execute(method: :post, url: url, headers: headers, payload: payload)
|
|
29
26
|
end
|
|
30
27
|
|
|
31
28
|
def reset_image(image_type, params={})
|
|
32
|
-
url = "#{
|
|
29
|
+
url = "#{base_path}/images/#{image_type}"
|
|
33
30
|
headers = { params: params, :authorization => "Bearer #{@access_token}", 'Content-Type' => 'application/json' }
|
|
34
31
|
execute(method: :delete, url: url, headers: headers)
|
|
35
32
|
end
|
|
36
33
|
|
|
37
34
|
def download_image(image_type, outfile, params={})
|
|
38
|
-
url = "#{
|
|
35
|
+
url = "#{base_path}/images/#{image_type}"
|
|
39
36
|
headers = { params: params, :authorization => "Bearer #{@access_token}" }
|
|
40
37
|
opts = {method: :get, url: url, headers: headers, timeout: 172800}
|
|
41
38
|
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
require 'morpheus/api/api_client'
|
|
2
2
|
|
|
3
3
|
class Morpheus::WikiInterface < Morpheus::APIClient
|
|
4
|
-
def initialize(access_token, refresh_token,expires_at = nil, base_url=nil)
|
|
5
|
-
@access_token = access_token
|
|
6
|
-
@refresh_token = refresh_token
|
|
7
|
-
@base_url = base_url
|
|
8
|
-
@expires_at = expires_at
|
|
9
|
-
end
|
|
10
4
|
|
|
11
5
|
def get(id, params={})
|
|
12
6
|
raise "#{self.class}.get() passed a blank name!" if id.to_s == ''
|
data/lib/morpheus/cli.rb
CHANGED
|
@@ -46,6 +46,7 @@ module Morpheus
|
|
|
46
46
|
# load interfaces
|
|
47
47
|
require 'morpheus/api/api_client.rb'
|
|
48
48
|
require 'morpheus/api/rest_interface.rb'
|
|
49
|
+
require 'morpheus/api/read_interface.rb'
|
|
49
50
|
Dir[File.dirname(__FILE__) + "/api/**/*.rb"].each {|file| load file }
|
|
50
51
|
|
|
51
52
|
# load mixins
|
|
@@ -92,6 +93,7 @@ module Morpheus
|
|
|
92
93
|
load 'morpheus/cli/cloud_folders_command.rb'
|
|
93
94
|
load 'morpheus/cli/hosts.rb'
|
|
94
95
|
load 'morpheus/cli/load_balancers.rb'
|
|
96
|
+
load 'morpheus/cli/load_balancer_types.rb'
|
|
95
97
|
load 'morpheus/cli/shell.rb'
|
|
96
98
|
load 'morpheus/cli/tasks.rb'
|
|
97
99
|
load 'morpheus/cli/workflows.rb'
|
|
@@ -175,9 +177,15 @@ module Morpheus
|
|
|
175
177
|
load 'morpheus/cli/projects_command.rb'
|
|
176
178
|
load 'morpheus/cli/backups_command.rb'
|
|
177
179
|
load 'morpheus/cli/backup_jobs_command.rb'
|
|
178
|
-
load 'morpheus/cli/catalog_item_types_command.rb' #
|
|
179
|
-
load 'morpheus/cli/service_catalog_command.rb' # catalog
|
|
180
|
+
load 'morpheus/cli/catalog_item_types_command.rb' # self-service
|
|
181
|
+
load 'morpheus/cli/service_catalog_command.rb' # catalog (Service Catalog persona)
|
|
180
182
|
load 'morpheus/cli/usage_command.rb'
|
|
183
|
+
load 'morpheus/cli/vdi_pools_command.rb'
|
|
184
|
+
load 'morpheus/cli/vdi_allocations_command.rb'
|
|
185
|
+
load 'morpheus/cli/vdi_apps_command.rb'
|
|
186
|
+
load 'morpheus/cli/vdi_gateways_command.rb'
|
|
187
|
+
load 'morpheus/cli/vdi_command.rb' # (VDI persona)
|
|
188
|
+
load 'morpheus/cli/certificates_command.rb' # (VDI persona)
|
|
181
189
|
# add new commands here...
|
|
182
190
|
|
|
183
191
|
end
|
|
@@ -156,7 +156,7 @@ class Morpheus::Cli::AccessTokenCommand
|
|
|
156
156
|
end
|
|
157
157
|
end
|
|
158
158
|
if options[:dry_run]
|
|
159
|
-
print_dry_run
|
|
159
|
+
print_dry_run @api_client.auth.dry.use_refresh_token(refresh_token_value)
|
|
160
160
|
return 0
|
|
161
161
|
end
|
|
162
162
|
unless options[:quiet]
|
|
@@ -28,11 +28,11 @@ class Morpheus::Cli::AccountGroupsCommand
|
|
|
28
28
|
|
|
29
29
|
def connect(opts)
|
|
30
30
|
@api_client = establish_remote_appliance_connection(opts)
|
|
31
|
-
@account_groups_interface =
|
|
32
|
-
@accounts_interface =
|
|
31
|
+
@account_groups_interface = @api_client.account_groups
|
|
32
|
+
@accounts_interface = @api_client.accounts
|
|
33
33
|
|
|
34
|
-
@groups_interface =
|
|
35
|
-
@clouds_interface =
|
|
34
|
+
@groups_interface = @api_client.groups
|
|
35
|
+
@clouds_interface = @api_client.clouds
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def handle(args)
|
data/lib/morpheus/cli/apps.rb
CHANGED
|
@@ -37,15 +37,15 @@ class Morpheus::Cli::Apps
|
|
|
37
37
|
@api_client = establish_remote_appliance_connection(opts)
|
|
38
38
|
@accounts_interface = @api_client.accounts
|
|
39
39
|
@users_interface = @api_client.users
|
|
40
|
-
@apps_interface =
|
|
41
|
-
@blueprints_interface =
|
|
42
|
-
@instance_types_interface =
|
|
43
|
-
@library_layouts_interface =
|
|
44
|
-
@instances_interface =
|
|
45
|
-
@options_interface =
|
|
46
|
-
@groups_interface =
|
|
47
|
-
@clouds_interface =
|
|
48
|
-
@logs_interface =
|
|
40
|
+
@apps_interface = @api_client.apps
|
|
41
|
+
@blueprints_interface = @api_client.blueprints
|
|
42
|
+
@instance_types_interface = @api_client.instance_types
|
|
43
|
+
@library_layouts_interface = @api_client.library_layouts
|
|
44
|
+
@instances_interface = @api_client.instances
|
|
45
|
+
@options_interface = @api_client.options
|
|
46
|
+
@groups_interface = @api_client.groups
|
|
47
|
+
@clouds_interface = @api_client.clouds
|
|
48
|
+
@logs_interface = @api_client.logs
|
|
49
49
|
@processes_interface = @api_client.processes
|
|
50
50
|
@active_group_id = Morpheus::Cli::Groups.active_groups[@appliance_name]
|
|
51
51
|
end
|
|
@@ -88,7 +88,7 @@ class Morpheus::Cli::Apps
|
|
|
88
88
|
opts.on('-a', '--details', "Display all details: memory and storage usage used / max values." ) do
|
|
89
89
|
options[:details] = true
|
|
90
90
|
end
|
|
91
|
-
|
|
91
|
+
build_standard_list_options(opts, options)
|
|
92
92
|
opts.footer = "List apps."
|
|
93
93
|
end
|
|
94
94
|
optparse.parse!(args)
|
|
@@ -97,64 +97,53 @@ class Morpheus::Cli::Apps
|
|
|
97
97
|
options[:phrase] = args.join(" ")
|
|
98
98
|
end
|
|
99
99
|
connect(options)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
end
|
|
100
|
+
|
|
101
|
+
if options[:type]
|
|
102
|
+
params['type'] = [options[:type]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
|
|
103
|
+
end
|
|
104
|
+
if options[:blueprint]
|
|
105
|
+
blueprint_ids = [options[:blueprint]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
|
|
106
|
+
params['blueprintId'] = blueprint_ids.collect do |blueprint_id|
|
|
107
|
+
if blueprint_id.to_s =~ /\A\d{1,}\Z/
|
|
108
|
+
return blueprint_id
|
|
109
|
+
else
|
|
110
|
+
blueprint = find_blueprint_by_name_or_id(blueprint_id)
|
|
111
|
+
return 1 if blueprint.nil?
|
|
112
|
+
blueprint['id']
|
|
114
113
|
end
|
|
115
114
|
end
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
115
|
+
end
|
|
116
|
+
if options[:owner]
|
|
117
|
+
owner_ids = [options[:owner]].flatten.collect {|it| it.to_s.strip.split(",") }.flatten.collect {|it| it.to_s.strip }
|
|
118
|
+
params['ownerId'] = owner_ids.collect do |owner_id|
|
|
119
|
+
if owner_id.to_s =~ /\A\d{1,}\Z/
|
|
120
|
+
return owner_id
|
|
121
|
+
else
|
|
122
|
+
user = find_available_user_option(owner_id)
|
|
123
|
+
return 1 if user.nil?
|
|
124
|
+
user['id']
|
|
126
125
|
end
|
|
127
126
|
end
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
params['showDeleted'] = options[:showDeleted] if options.key?(:showDeleted)
|
|
138
|
-
params['deleted'] = options[:deleted] if options.key?(:deleted)
|
|
127
|
+
end
|
|
128
|
+
params.merge!(parse_list_options(options))
|
|
129
|
+
account = nil
|
|
130
|
+
if options[:owner]
|
|
131
|
+
created_by_ids = find_all_user_ids(account ? account['id'] : nil, options[:owner])
|
|
132
|
+
return if created_by_ids.nil?
|
|
133
|
+
params['createdBy'] = created_by_ids
|
|
134
|
+
# params['ownerId'] = created_by_ids # 4.2.1+
|
|
135
|
+
end
|
|
139
136
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
print_dry_run @apps_interface.dry.list(params)
|
|
143
|
-
return
|
|
144
|
-
end
|
|
137
|
+
params['showDeleted'] = options[:showDeleted] if options.key?(:showDeleted)
|
|
138
|
+
params['deleted'] = options[:deleted] if options.key?(:deleted)
|
|
145
139
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
elsif options[:csv]
|
|
154
|
-
puts records_as_csv(json_response['apps'], options)
|
|
155
|
-
return 0
|
|
156
|
-
end
|
|
157
|
-
|
|
140
|
+
@apps_interface.setopts(options)
|
|
141
|
+
if options[:dry_run]
|
|
142
|
+
print_dry_run @apps_interface.dry.list(params)
|
|
143
|
+
return
|
|
144
|
+
end
|
|
145
|
+
json_response = @apps_interface.list(params)
|
|
146
|
+
render_response(json_response, options, "apps") do
|
|
158
147
|
apps = json_response['apps']
|
|
159
148
|
title = "Morpheus Apps"
|
|
160
149
|
subtitles = []
|
|
@@ -167,10 +156,8 @@ class Morpheus::Cli::Apps
|
|
|
167
156
|
print_results_pagination(json_response)
|
|
168
157
|
end
|
|
169
158
|
print reset,"\n"
|
|
170
|
-
rescue RestClient::Exception => e
|
|
171
|
-
print_rest_exception(e, options)
|
|
172
|
-
exit 1
|
|
173
159
|
end
|
|
160
|
+
return 0, nil
|
|
174
161
|
end
|
|
175
162
|
|
|
176
163
|
def count(args)
|
|
@@ -645,7 +632,7 @@ class Morpheus::Cli::Apps
|
|
|
645
632
|
opts.on('--refresh-until STATUS', String, "Refresh until a specified status is reached.") do |val|
|
|
646
633
|
options[:refresh_until_status] = val.to_s.downcase
|
|
647
634
|
end
|
|
648
|
-
|
|
635
|
+
build_standard_get_options(opts, options)
|
|
649
636
|
opts.footer = "Get details about an app.\n" +
|
|
650
637
|
"[app] is required. This is the name or id of an app. Supports 1-N [app] arguments."
|
|
651
638
|
end
|
|
@@ -665,19 +652,19 @@ class Morpheus::Cli::Apps
|
|
|
665
652
|
|
|
666
653
|
end
|
|
667
654
|
|
|
668
|
-
def _get(
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
655
|
+
def _get(id, options={})
|
|
656
|
+
app = nil
|
|
657
|
+
if id.to_s !~ /\A\d{1,}\Z/
|
|
658
|
+
app = find_app_by_name_or_id(id)
|
|
659
|
+
id = app['id']
|
|
660
|
+
end
|
|
661
|
+
@apps_interface.setopts(options)
|
|
662
|
+
if options[:dry_run]
|
|
663
|
+
print_dry_run @apps_interface.dry.get(id)
|
|
664
|
+
return
|
|
665
|
+
end
|
|
666
|
+
json_response = @apps_interface.get(id.to_i)
|
|
667
|
+
render_response(json_response, options, 'app') do
|
|
681
668
|
app = json_response['app']
|
|
682
669
|
app_tiers = app['appTiers']
|
|
683
670
|
print_h1 "App Details", [], options
|
|
@@ -799,14 +786,11 @@ class Morpheus::Cli::Apps
|
|
|
799
786
|
print cyan, "Refreshing in #{options[:refresh_interval] > 1 ? options[:refresh_interval].to_i : options[:refresh_interval]} seconds"
|
|
800
787
|
sleep_with_dots(options[:refresh_interval])
|
|
801
788
|
print "\n"
|
|
802
|
-
_get(
|
|
789
|
+
_get(app['id'], options)
|
|
803
790
|
end
|
|
804
791
|
end
|
|
805
|
-
|
|
806
|
-
rescue RestClient::Exception => e
|
|
807
|
-
print_rest_exception(e, options)
|
|
808
|
-
exit 1
|
|
809
792
|
end
|
|
793
|
+
return 0, nil
|
|
810
794
|
end
|
|
811
795
|
|
|
812
796
|
def update(args)
|
|
@@ -48,9 +48,9 @@ class Morpheus::Cli::ArchivesCommand
|
|
|
48
48
|
|
|
49
49
|
def connect(opts)
|
|
50
50
|
@api_client = establish_remote_appliance_connection(opts)
|
|
51
|
-
@archive_buckets_interface =
|
|
52
|
-
@archive_files_interface =
|
|
53
|
-
@options_interface =
|
|
51
|
+
@archive_buckets_interface = @api_client.archive_buckets
|
|
52
|
+
@archive_files_interface = @api_client.archive_files
|
|
53
|
+
@options_interface = @api_client.options
|
|
54
54
|
# @active_group_id = Morpheus::Cli::Groups.active_groups[@appliance_name]
|
|
55
55
|
end
|
|
56
56
|
|
|
@@ -979,10 +979,10 @@ class Morpheus::Cli::ArchivesCommand
|
|
|
979
979
|
|
|
980
980
|
|
|
981
981
|
print_h2 "Download URLs"
|
|
982
|
-
private_download_url = "#{@appliance_url}/api/archives/download/#{
|
|
982
|
+
private_download_url = "#{@appliance_url}/api/archives/download/#{CGI::escape(bucket_id)}" + "/#{CGI::escape(archive_file['filePath'])}".squeeze('/')
|
|
983
983
|
public_download_url = nil
|
|
984
984
|
if archive_file['archiveBucket'] && archive_file['archiveBucket']['isPublic']
|
|
985
|
-
public_download_url = "#{@appliance_url}/public-archives/download/#{
|
|
985
|
+
public_download_url = "#{@appliance_url}/public-archives/download/#{CGI::escape(bucket_id)}" + "/#{CGI::escape(archive_file['filePath'])}".squeeze('/')
|
|
986
986
|
end
|
|
987
987
|
print cyan
|
|
988
988
|
puts "Private URL: #{private_download_url}"
|
|
@@ -29,11 +29,11 @@ class Morpheus::Cli::BlueprintsCommand
|
|
|
29
29
|
|
|
30
30
|
def connect(opts)
|
|
31
31
|
@api_client = establish_remote_appliance_connection(opts)
|
|
32
|
-
@blueprints_interface =
|
|
33
|
-
@groups_interface =
|
|
34
|
-
@instances_interface =
|
|
35
|
-
@instance_types_interface =
|
|
36
|
-
@options_interface =
|
|
32
|
+
@blueprints_interface = @api_client.blueprints
|
|
33
|
+
@groups_interface = @api_client.groups
|
|
34
|
+
@instances_interface = @api_client.instances
|
|
35
|
+
@instance_types_interface = @api_client.instance_types
|
|
36
|
+
@options_interface = @api_client.options
|
|
37
37
|
@active_group_id = Morpheus::Cli::Groups.active_groups[@appliance_name]
|
|
38
38
|
@clouds_interface = @api_client.clouds
|
|
39
39
|
@users_interface = @api_client.users
|
|
@@ -24,7 +24,7 @@ class Morpheus::Cli::BootScriptsCommand
|
|
|
24
24
|
|
|
25
25
|
def connect(opts)
|
|
26
26
|
@api_client = establish_remote_appliance_connection(opts)
|
|
27
|
-
@image_builder_interface =
|
|
27
|
+
@image_builder_interface = @api_client.image_builder
|
|
28
28
|
@boot_scripts_interface = @image_builder_interface.boot_scripts
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -532,22 +532,22 @@ EOT
|
|
|
532
532
|
|
|
533
533
|
def add_catalog_item_type_option_types
|
|
534
534
|
[
|
|
535
|
-
{'code' => 'catalogItemType.type', 'shorthand' => '-t', 'fieldName' => 'type', 'fieldLabel' => 'Type', 'type' => 'select', 'selectOptions' => [{'name' => 'Instance', 'value' => 'instance'}, {'name' => 'Blueprint', 'value' => 'blueprint'}, {'name' => 'Workflow', 'value' => 'workflow'}], 'defaultValue' => 'instance', 'required' => true},
|
|
536
|
-
{'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => true},
|
|
537
|
-
{'fieldName' => 'description', 'fieldLabel' => 'Description', 'type' => 'text'},
|
|
538
|
-
{'fieldName' => 'enabled', 'fieldLabel' => 'Enabled', 'type' => 'checkbox', 'defaultValue' => true},
|
|
539
|
-
{'fieldName' => 'featured', 'fieldLabel' => 'Featured', 'type' => 'checkbox', 'defaultValue' => false},
|
|
540
|
-
{'fieldName' => 'visibility', 'fieldLabel' => 'Visibility', 'type' => 'select', 'selectOptions' => [{'name' => 'Private', 'value' => 'private'}, {'name' => 'Public', 'value' => 'public'}], 'defaultValue' => 'private', 'required' => true},
|
|
541
|
-
{'fieldName' => 'iconPath', 'fieldLabel' => 'Logo', 'type' => 'select', 'optionSource' => 'iconList'},
|
|
542
|
-
#{'fieldName' => 'optionTypes', 'fieldLabel' => 'Option Types', 'type' => 'text', 'description' => 'Option Types to include, comma separated list of names or IDs.'},
|
|
543
|
-
{'dependsOnCode' => 'catalogItemType.type:instance', 'fieldName' => 'config', 'fieldLabel' => 'Config', 'type' => 'code-editor', 'description' => 'JSON or YAML', 'required' => true},
|
|
544
|
-
{'dependsOnCode' => 'catalogItemType.type:blueprint', 'fieldName' => 'blueprint', 'fieldLabel' => 'Blueprint', 'type' => 'select', 'optionSource' => 'blueprints', 'description' => 'Choose a blueprint to apply to the catalog item.', 'required' => true, 'noParams' => true},
|
|
545
|
-
{'dependsOnCode' => 'catalogItemType.type:blueprint', 'fieldName' => 'appSpec', 'fieldLabel' => 'App Spec', 'type' => 'code-editor', 'description' => 'Enter a spec in the for the App, the Scribe YAML format', 'required' => true},
|
|
546
|
-
{'dependsOnCode' => 'catalogItemType.type:workflow', 'fieldName' => 'workflow', 'fieldLabel' => 'Workflow', 'type' => 'select', 'optionSource' => 'operationWorkflows', 'description' => 'Enter a spec in the for the App, the Scribe YAML format', 'noParams' => true},
|
|
535
|
+
{'code' => 'catalogItemType.type', 'shorthand' => '-t', 'fieldName' => 'type', 'fieldLabel' => 'Type', 'type' => 'select', 'selectOptions' => [{'name' => 'Instance', 'value' => 'instance'}, {'name' => 'Blueprint', 'value' => 'blueprint'}, {'name' => 'Workflow', 'value' => 'workflow'}], 'defaultValue' => 'instance', 'required' => true, 'displayOrder' => 1},
|
|
536
|
+
{'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => true, 'displayOrder' => 2},
|
|
537
|
+
{'fieldName' => 'description', 'fieldLabel' => 'Description', 'type' => 'text', 'displayOrder' => 3},
|
|
538
|
+
{'fieldName' => 'enabled', 'fieldLabel' => 'Enabled', 'type' => 'checkbox', 'defaultValue' => true, 'displayOrder' => 4},
|
|
539
|
+
{'fieldName' => 'featured', 'fieldLabel' => 'Featured', 'type' => 'checkbox', 'defaultValue' => false, 'displayOrder' => 5},
|
|
540
|
+
{'fieldName' => 'visibility', 'fieldLabel' => 'Visibility', 'type' => 'select', 'selectOptions' => [{'name' => 'Private', 'value' => 'private'}, {'name' => 'Public', 'value' => 'public'}], 'defaultValue' => 'private', 'required' => true, 'displayOrder' => 6},
|
|
541
|
+
{'fieldName' => 'iconPath', 'fieldLabel' => 'Logo', 'type' => 'select', 'optionSource' => 'iconList', 'displayOrder' => 7},
|
|
542
|
+
#{'fieldName' => 'optionTypes', 'fieldLabel' => 'Option Types', 'type' => 'text', 'description' => 'Option Types to include, comma separated list of names or IDs.', 'displayOrder' => 8},
|
|
543
|
+
{'dependsOnCode' => 'catalogItemType.type:instance', 'fieldName' => 'config', 'fieldLabel' => 'Config', 'type' => 'code-editor', 'description' => 'JSON or YAML', 'required' => true, 'displayOrder' => 9},
|
|
544
|
+
{'dependsOnCode' => 'catalogItemType.type:blueprint', 'fieldName' => 'blueprint', 'fieldLabel' => 'Blueprint', 'type' => 'select', 'optionSource' => 'blueprints', 'description' => 'Choose a blueprint to apply to the catalog item.', 'required' => true, 'noParams' => true, 'displayOrder' => 10},
|
|
545
|
+
{'dependsOnCode' => 'catalogItemType.type:blueprint', 'fieldName' => 'appSpec', 'fieldLabel' => 'App Spec', 'type' => 'code-editor', 'description' => 'Enter a spec in the for the App, the Scribe YAML format', 'required' => true, 'displayOrder' => 11},
|
|
546
|
+
{'dependsOnCode' => 'catalogItemType.type:workflow', 'fieldName' => 'workflow', 'fieldLabel' => 'Workflow', 'type' => 'select', 'optionSource' => 'operationWorkflows', 'description' => 'Enter a spec in the for the App, the Scribe YAML format', 'noParams' => true, 'displayOrder' => 12},
|
|
547
547
|
{'dependsOnCode' => 'catalogItemType.type:workflow', 'fieldName' => 'context', 'fieldLabel' => 'Context Type', 'type' => 'select', 'optionSource' => lambda { |api_client, api_params|
|
|
548
548
|
[{'name' => "Select", 'value' => ""}, {'name' => "None", 'value' => "appliance"}, {'name' => "Instance", 'value' => "instance"}, {'name' => "Server", 'value' => "server"}]
|
|
549
549
|
}, 'description' => 'Context for operational workflow, determines target type', 'defaultValue' => 'Select', 'required' => false},
|
|
550
|
-
{'fieldName' => 'content', 'fieldLabel' => 'Content', 'type' => 'code-editor', 'description' => 'Wiki Page Content describing the catalog item'}
|
|
550
|
+
{'fieldName' => 'content', 'fieldLabel' => 'Content', 'type' => 'code-editor', 'description' => 'Wiki Page Content describing the catalog item', 'displayOrder' => 13}
|
|
551
551
|
]
|
|
552
552
|
end
|
|
553
553
|
|