morpheus-cli 7.0.6 → 7.0.7
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/cli/commands/clusters.rb +18 -19
- data/lib/morpheus/cli/commands/plugins.rb +2 -2
- data/lib/morpheus/cli/option_types.rb +6 -2
- data/lib/morpheus/cli/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e2f97549864e50c22d2a7f9e04ccf0cafb76ed6b833aef1271a8e0003716d90
|
4
|
+
data.tar.gz: a8924722ef5ab2feeb455ea7008f9681a374bf5f739a34b15131748371848889
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7fafa4ba44a2c600055b47bc5178c3b667ca238b5080d355c01682679124ee71b12991d5b52bd85958b429ab2747f680e27a47fe1192179b8c5ff417b486035
|
7
|
+
data.tar.gz: 50d06718a2b68a42ac4997a1bf6248c0ae4ce9b975747f972bfa4e718b4c6514af31a06a59bc70ad2e1642b8252896ead095b1a93b512f7d7c6d9cc963807c5e
|
data/Dockerfile
CHANGED
@@ -526,12 +526,7 @@ class Morpheus::Cli::Clusters
|
|
526
526
|
resourceName = options[:resourceName]
|
527
527
|
|
528
528
|
if !resourceName
|
529
|
-
|
530
|
-
print_red_alert "No resource name provided"
|
531
|
-
exit 1
|
532
|
-
else
|
533
|
-
resourceName = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'resourceName', 'type' => 'text', 'fieldLabel' => 'Resource Name', 'required' => true, 'description' => 'Resource Name.'}],options[:options],@api_client,{})['resourceName']
|
534
|
-
end
|
529
|
+
resourceName = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'resourceName', 'type' => 'text', 'fieldLabel' => 'Resource Name', 'required' => false, 'description' => 'Resource Name.'}],options[:options],@api_client,{})['resourceName']
|
535
530
|
end
|
536
531
|
|
537
532
|
server_payload['name'] = resourceName
|
@@ -594,9 +589,17 @@ class Morpheus::Cli::Clusters
|
|
594
589
|
# Provision Type
|
595
590
|
provision_type = (layout && layout['provisionType'] ? layout['provisionType'] : nil) || get_provision_type_for_zone_type(cloud['zoneType']['id'])
|
596
591
|
provision_type = @provision_types_interface.get(provision_type['id'])['provisionType'] if !provision_type.nil?
|
597
|
-
|
598
592
|
api_params = {zoneId: cloud['id'], siteId: group['id'], layoutId: layout['id'], groupTypeId: cluster_type['id'], provisionType: provision_type['code'], provisionTypeId: provision_type['id']}
|
599
593
|
|
594
|
+
# Service Plan
|
595
|
+
service_plan = prompt_service_plan(api_params, options)
|
596
|
+
if service_plan
|
597
|
+
server_payload['plan'] = {'id' => service_plan['id'], 'code' => service_plan['code']}
|
598
|
+
api_params['planId'] = service_plan['id']
|
599
|
+
plan_opts = prompt_service_plan_options(service_plan, provision_type, options)
|
600
|
+
server_payload['servicePlanOptions'] = plan_opts if plan_opts && !plan_opts.empty?
|
601
|
+
end
|
602
|
+
|
600
603
|
# Controller type
|
601
604
|
server_types = @server_types_interface.list({computeTypeId: cluster_type['controllerTypes'].first['id'], zoneTypeId: cloud['zoneType']['id'], useZoneProvisionTypes: true})['serverTypes'].reject {|it| it['provisionType']['code'] == 'manual'}
|
602
605
|
controller_provision_type = nil
|
@@ -613,7 +616,7 @@ class Morpheus::Cli::Clusters
|
|
613
616
|
end
|
614
617
|
end
|
615
618
|
|
616
|
-
if controller_provision_type && resource_pool = prompt_resource_pool(group, cloud,
|
619
|
+
if controller_provision_type && resource_pool = prompt_resource_pool(group, cloud, service_plan, controller_provision_type, options)
|
617
620
|
server_payload['config']['resourcePoolId'] = resource_pool['id']
|
618
621
|
api_params['config'] ||= {}
|
619
622
|
api_params['config']['resourcePool'] = resource_pool['id']
|
@@ -622,16 +625,6 @@ class Morpheus::Cli::Clusters
|
|
622
625
|
end
|
623
626
|
end
|
624
627
|
|
625
|
-
# Service Plan
|
626
|
-
service_plan = prompt_service_plan(api_params, options)
|
627
|
-
|
628
|
-
if service_plan
|
629
|
-
server_payload['plan'] = {'id' => service_plan['id'], 'code' => service_plan['code']}
|
630
|
-
api_params['planId'] = service_plan['id']
|
631
|
-
plan_opts = prompt_service_plan_options(service_plan, provision_type, options)
|
632
|
-
server_payload['servicePlanOptions'] = plan_opts if plan_opts && !plan_opts.empty?
|
633
|
-
end
|
634
|
-
|
635
628
|
# Multi-disk / prompt for volumes
|
636
629
|
if provision_type['hasVolumes']
|
637
630
|
volumes = options[:volumes] || prompt_volumes(service_plan, provision_type, options, @api_client, api_params)
|
@@ -653,6 +646,8 @@ class Morpheus::Cli::Clusters
|
|
653
646
|
metadata_option_type = option_type_list.find {|type| type['fieldName'] == 'metadata' }
|
654
647
|
option_type_list = option_type_list.reject {|type| type['fieldName'] == 'metadata' }
|
655
648
|
|
649
|
+
server_count = layout['serverCount']
|
650
|
+
|
656
651
|
# KLUDGE: google zone required for network selection
|
657
652
|
if option_type = option_type_list.find {|type| type['code'] == 'computeServerType.googleLinux.googleZoneId'}
|
658
653
|
server_payload.deep_merge!(Morpheus::Cli::OptionTypes.prompt([option_type], options[:options], @api_client, api_params))
|
@@ -684,6 +679,10 @@ class Morpheus::Cli::Clusters
|
|
684
679
|
# Layout template options
|
685
680
|
cluster_payload.deep_merge!(Morpheus::Cli::OptionTypes.prompt(load_layout_options(cluster_payload), options[:options], @api_client, api_params, options[:no_prompt], true))
|
686
681
|
|
682
|
+
# Set node count for ssh hosts
|
683
|
+
ssh_host_option = option_type_list.select{|it| it['fieldName'] == 'sshHosts'}.first
|
684
|
+
ssh_host_option['minCount'] = server_count unless ssh_host_option.nil?
|
685
|
+
|
687
686
|
# Server options
|
688
687
|
server_payload.deep_merge!(Morpheus::Cli::OptionTypes.prompt(option_type_list, options[:options].deep_merge({:context_map => {'domain' => ''}}), @api_client, api_params, options[:no_prompt], true))
|
689
688
|
|
@@ -729,7 +728,7 @@ class Morpheus::Cli::Clusters
|
|
729
728
|
|
730
729
|
# Host / Domain
|
731
730
|
server_payload['networkDomain'] = options[:domain] || Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'networkDomain', 'fieldLabel' => 'Network Domain', 'type' => 'select', 'required' => false, 'optionSource' => 'networkDomains'}], options[:options], @api_client, api_params)['networkDomain']
|
732
|
-
server_payload['hostname'] = options[:hostname] || Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'hostname', 'fieldLabel' => 'Hostname', 'type' => 'text', 'required' =>
|
731
|
+
server_payload['hostname'] = options[:hostname] || Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'hostname', 'fieldLabel' => 'Hostname', 'type' => 'text', 'required' => false, 'description' => 'Hostname', 'defaultValue' => resourceName}], options[:options], @api_client, api_params)['hostname']
|
733
732
|
|
734
733
|
# Kube Default Repo
|
735
734
|
if cluster_payload['type'] == 'kubernetes-cluster'
|
@@ -16,7 +16,7 @@ class Morpheus::Cli::PluginsCommand
|
|
16
16
|
params = {}
|
17
17
|
filename = nil
|
18
18
|
optparse = Morpheus::Cli::OptionParser.new do|opts|
|
19
|
-
opts.banner = subcommand_usage("[
|
19
|
+
opts.banner = subcommand_usage("[file]")
|
20
20
|
build_standard_post_options(opts, options)
|
21
21
|
opts.footer = <<-EOT
|
22
22
|
Upload a plugin file.
|
@@ -55,7 +55,7 @@ EOT
|
|
55
55
|
params = {}
|
56
56
|
filename = nil
|
57
57
|
optparse = Morpheus::Cli::OptionParser.new do|opts|
|
58
|
-
opts.banner = subcommand_usage("
|
58
|
+
opts.banner = subcommand_usage("")
|
59
59
|
build_standard_post_options(opts, options)
|
60
60
|
opts.footer = <<-EOT
|
61
61
|
Check for installed plugins that have available updates.
|
@@ -1324,15 +1324,19 @@ module Morpheus
|
|
1324
1324
|
|
1325
1325
|
# supports multi-part fields via config.fields
|
1326
1326
|
# {"fields": [{"name":"tag", "required":true, "label": "Tag"}, {"name":"value", "required":false, "label": "Scope"}]}
|
1327
|
+
min_count = option_type['minCount'] || 1
|
1328
|
+
count = 0
|
1329
|
+
|
1327
1330
|
if option_type['config']['fields']
|
1328
|
-
while (option_type['required'] && rtn.empty?) || self.confirm("Add#{rtn.empty? ? '': ' more'} #{option_type['fieldLabel']}?", {:default => false})
|
1331
|
+
while (option_type['required'] && (rtn.empty? || count < min_count)) || self.confirm("Add#{rtn.empty? ? '': ' more'} #{option_type['fieldLabel']}?", {:default => false})
|
1329
1332
|
rtn ||= []
|
1330
1333
|
value = {}
|
1331
1334
|
option_type['config']['fields'].each do |field|
|
1332
1335
|
field_label = field['label'] || field['name'].capitalize
|
1333
|
-
value[field['name']] = generic_prompt(option_type.merge({'fieldLabel' => field_label, 'required' => field['required'], 'description' => "#{option_type['fieldLabel']} #{field_label}"}))
|
1336
|
+
value[field['name']] = generic_prompt(option_type.merge({'fieldLabel' => min_count > 1 ? "#{field_label} #{count + 1}" : field_label, 'required' => field['required'], 'description' => "#{option_type['fieldLabel']} #{field_label}"}))
|
1334
1337
|
end
|
1335
1338
|
rtn << value
|
1339
|
+
count += 1
|
1336
1340
|
end
|
1337
1341
|
else
|
1338
1342
|
if rtn = generic_prompt(option_type)
|
data/lib/morpheus/cli/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: morpheus-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.
|
4
|
+
version: 7.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Estes
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2024-
|
14
|
+
date: 2024-10-14 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: public_suffix
|