morpheus-cli 5.5.1.4 → 5.5.2
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/api_client.rb +25 -0
- data/lib/morpheus/api/archive_buckets_interface.rb +1 -1
- data/lib/morpheus/api/body_io.rb +22 -0
- data/lib/morpheus/api/catalog_item_types_interface.rb +5 -1
- data/lib/morpheus/api/clients_interface.rb +41 -0
- data/lib/morpheus/api/clouds_interface.rb +21 -0
- data/lib/morpheus/api/instances_interface.rb +8 -1
- data/lib/morpheus/api/integrations_interface.rb +30 -0
- data/lib/morpheus/api/library_instance_types_interface.rb +15 -3
- data/lib/morpheus/api/network_pool_server_types_interface.rb +9 -0
- data/lib/morpheus/api/plugins_interface.rb +22 -0
- data/lib/morpheus/api/roles_interface.rb +20 -1
- data/lib/morpheus/api/security_package_types_interface.rb +9 -0
- data/lib/morpheus/api/security_packages_interface.rb +9 -0
- data/lib/morpheus/api/security_scans_interface.rb +9 -0
- data/lib/morpheus/api/servers_interface.rb +17 -17
- data/lib/morpheus/api/storage_providers_interface.rb +1 -1
- data/lib/morpheus/api/virtual_images_interface.rb +1 -23
- data/lib/morpheus/cli/cli_command.rb +81 -7
- data/lib/morpheus/cli/commands/apps.rb +28 -2
- data/lib/morpheus/cli/commands/archives_command.rb +2 -2
- data/lib/morpheus/cli/commands/blueprints_command.rb +16 -0
- data/lib/morpheus/cli/commands/catalog_item_types_command.rb +34 -2
- data/lib/morpheus/cli/commands/clients_command.rb +338 -0
- data/lib/morpheus/cli/commands/clouds.rb +127 -1
- data/lib/morpheus/cli/commands/clusters.rb +42 -12
- data/lib/morpheus/cli/commands/curl_command.rb +114 -135
- data/lib/morpheus/cli/commands/hosts.rb +108 -11
- data/lib/morpheus/cli/commands/instances.rb +115 -14
- data/lib/morpheus/cli/commands/integrations_command.rb +215 -4
- data/lib/morpheus/cli/commands/invoices_command.rb +20 -11
- data/lib/morpheus/cli/commands/jobs_command.rb +299 -190
- data/lib/morpheus/cli/commands/library_cluster_layouts_command.rb +16 -2
- data/lib/morpheus/cli/commands/library_container_scripts_command.rb +14 -0
- data/lib/morpheus/cli/commands/library_container_templates_command.rb +131 -48
- data/lib/morpheus/cli/commands/library_container_types_command.rb +17 -4
- data/lib/morpheus/cli/commands/library_instance_types_command.rb +85 -7
- data/lib/morpheus/cli/commands/library_layouts_command.rb +32 -1
- data/lib/morpheus/cli/commands/library_option_lists_command.rb +30 -18
- data/lib/morpheus/cli/commands/library_option_types_command.rb +31 -14
- data/lib/morpheus/cli/commands/library_spec_templates_command.rb +14 -0
- data/lib/morpheus/cli/commands/library_upgrades_command.rb +2 -2
- data/lib/morpheus/cli/commands/network_pool_server_types.rb +20 -0
- data/lib/morpheus/cli/commands/network_pool_servers_command.rb +55 -158
- data/lib/morpheus/cli/commands/network_pools_command.rb +49 -23
- data/lib/morpheus/cli/commands/networks_command.rb +262 -45
- data/lib/morpheus/cli/commands/plugins.rb +213 -0
- data/lib/morpheus/cli/commands/price_sets_command.rb +40 -10
- data/lib/morpheus/cli/commands/prices_command.rb +17 -5
- data/lib/morpheus/cli/commands/processes_command.rb +2 -1
- data/lib/morpheus/cli/commands/remote.rb +7 -10
- data/lib/morpheus/cli/commands/roles.rb +924 -335
- data/lib/morpheus/cli/commands/search_command.rb +2 -0
- data/lib/morpheus/cli/commands/security_groups.rb +72 -84
- data/lib/morpheus/cli/commands/security_package_types.rb +32 -0
- data/lib/morpheus/cli/commands/security_packages.rb +84 -0
- data/lib/morpheus/cli/commands/security_scans.rb +107 -0
- data/lib/morpheus/cli/commands/service_plans_command.rb +16 -14
- data/lib/morpheus/cli/commands/subnets_command.rb +15 -1
- data/lib/morpheus/cli/commands/tasks.rb +34 -1
- data/lib/morpheus/cli/commands/tenants_command.rb +1 -1
- data/lib/morpheus/cli/commands/user_settings_command.rb +11 -2
- data/lib/morpheus/cli/commands/users.rb +50 -9
- data/lib/morpheus/cli/commands/virtual_images.rb +14 -0
- data/lib/morpheus/cli/commands/workflows.rb +14 -0
- data/lib/morpheus/cli/mixins/accounts_helper.rb +6 -5
- data/lib/morpheus/cli/mixins/infrastructure_helper.rb +79 -0
- data/lib/morpheus/cli/mixins/jobs_helper.rb +4 -5
- data/lib/morpheus/cli/mixins/library_helper.rb +2 -0
- data/lib/morpheus/cli/mixins/logs_helper.rb +3 -0
- data/lib/morpheus/cli/mixins/monitoring_helper.rb +1 -1
- data/lib/morpheus/cli/mixins/print_helper.rb +29 -4
- data/lib/morpheus/cli/mixins/provisioning_helper.rb +38 -9
- data/lib/morpheus/cli/mixins/rest_command.rb +106 -8
- data/lib/morpheus/cli/mixins/secondary_rest_command.rb +6 -2
- data/lib/morpheus/cli/option_types.rb +94 -25
- data/lib/morpheus/cli/version.rb +1 -1
- data/lib/morpheus/formatters.rb +10 -1
- metadata +15 -2
|
@@ -51,11 +51,20 @@ class Morpheus::Cli::NetworksCommand
|
|
|
51
51
|
opts.on('--subnets', '--subnets', "Display subnets as rows under each network found.") do
|
|
52
52
|
options[:show_subnets] = true
|
|
53
53
|
end
|
|
54
|
+
opts.on('-l', '--labels LABEL', String, "Filter by labels, can match any of the values") do |val|
|
|
55
|
+
add_query_parameter(params, 'labels', parse_labels(val))
|
|
56
|
+
end
|
|
57
|
+
opts.on('--all-labels LABEL', String, "Filter by labels, must match all of the values") do |val|
|
|
58
|
+
add_query_parameter(params, 'allLabels', parse_labels(val))
|
|
59
|
+
end
|
|
54
60
|
build_common_options(opts, options, [:list, :json, :yaml, :csv, :fields, :json, :dry_run, :remote])
|
|
55
61
|
opts.footer = "List networks."
|
|
56
62
|
end
|
|
57
63
|
optparse.parse!(args)
|
|
58
64
|
connect(options)
|
|
65
|
+
if args.count > 0
|
|
66
|
+
options[:phrase] = args.join(" ")
|
|
67
|
+
end
|
|
59
68
|
begin
|
|
60
69
|
params.merge!(parse_list_options(options))
|
|
61
70
|
cloud = nil
|
|
@@ -96,6 +105,7 @@ class Morpheus::Cli::NetworksCommand
|
|
|
96
105
|
row = {
|
|
97
106
|
id: network['id'],
|
|
98
107
|
name: network['displayName'] || network['name'],
|
|
108
|
+
labels: format_list(network['labels'], '', 3),
|
|
99
109
|
type: network['type'] ? network['type']['name'] : '',
|
|
100
110
|
group: network['group'] ? network['group']['name'] : 'Shared',
|
|
101
111
|
cloud: network['zone'] ? network['zone']['name'] : '',
|
|
@@ -113,6 +123,7 @@ class Morpheus::Cli::NetworksCommand
|
|
|
113
123
|
subnet_row = {
|
|
114
124
|
id: subnet['id'],
|
|
115
125
|
name: " #{subnet['displayName'] || subnet['name']}",
|
|
126
|
+
labels: format_list(subnet['labels'], '', 3),
|
|
116
127
|
# type: subnet['type'] ? subnet['type']['name'] : '',
|
|
117
128
|
type: "Subnet",
|
|
118
129
|
group: network['group'] ? network['group']['name'] : 'Shared',
|
|
@@ -128,7 +139,7 @@ class Morpheus::Cli::NetworksCommand
|
|
|
128
139
|
end
|
|
129
140
|
end
|
|
130
141
|
end
|
|
131
|
-
columns = [:id, :name, :type, :group, :cloud, :cidr, :pool, :dhcp, :subnets, :active, :visibility, :tenants]
|
|
142
|
+
columns = [:id, :name, :labels, :type, :group, :cloud, :cidr, :pool, :dhcp, :subnets, :active, :visibility, :tenants]
|
|
132
143
|
if options[:include_fields]
|
|
133
144
|
columns = options[:include_fields]
|
|
134
145
|
end
|
|
@@ -190,16 +201,26 @@ class Morpheus::Cli::NetworksCommand
|
|
|
190
201
|
description_cols = {
|
|
191
202
|
"ID" => 'id',
|
|
192
203
|
"Name" => lambda {|it| it['displayName'] ? it['displayName'] : it['name'] },
|
|
204
|
+
"Labels" => lambda {|it| format_list(it['labels']) rescue '' },
|
|
193
205
|
"Description" => 'description',
|
|
194
206
|
"Type" => lambda {|it| it['type'] ? it['type']['name'] : '' },
|
|
195
207
|
"Group" => lambda {|it| it['group'] ? it['group']['name'] : 'Shared' },
|
|
196
208
|
"Cloud" => lambda {|it| it['zone'] ? it['zone']['name'] : '' },
|
|
209
|
+
"IPv4 Enabled" => 'ipv4Enabled',
|
|
210
|
+
"IPv6 Enabled" => 'ipv6Enabled',
|
|
197
211
|
"CIDR" => 'cidr',
|
|
198
212
|
"Gateway" => 'gateway',
|
|
199
213
|
"Netmask" => 'netmask',
|
|
200
214
|
"Subnet" => 'subnetAddress',
|
|
201
215
|
"Primary DNS" => 'dnsPrimary',
|
|
202
216
|
"Secondary DNS" => 'dnsSecondary',
|
|
217
|
+
"IPv6 CIDR" => 'cidrIPv6',
|
|
218
|
+
"IPv6 Gateway" => 'gatewayIPv6',
|
|
219
|
+
"IPv6 Netmask" => 'netmaskIPv6',
|
|
220
|
+
"IPv6 Primary DNS" => 'dnsPrimaryIPv6',
|
|
221
|
+
"IPv6 Secondary DNS" => 'dnsSecondaryIPv6',
|
|
222
|
+
"Domain" => lambda {|it| it['networkDomain'] ? it['networkDomain']['name'] : '' },
|
|
223
|
+
"Search Domains" => lambda {|it| it['searchDomains'] },
|
|
203
224
|
"Pool" => lambda {|it| it['pool'] ? it['pool']['name'] : '' },
|
|
204
225
|
"VPC" => lambda {|it| it['zonePool'] ? it['zonePool']['name'] : '' },
|
|
205
226
|
"DHCP" => lambda {|it| it['dhcpServer'] ? 'Yes' : 'No' },
|
|
@@ -208,6 +229,8 @@ class Morpheus::Cli::NetworksCommand
|
|
|
208
229
|
"Visibility" => lambda {|it| it['visibility'].to_s.capitalize },
|
|
209
230
|
"Tenants" => lambda {|it| it['tenants'] ? it['tenants'].collect {|it| it['name'] }.uniq.join(', ') : '' },
|
|
210
231
|
}
|
|
232
|
+
description_cols.delete("Domain") if network['networkDomain'].nil?
|
|
233
|
+
description_cols.delete("Search Domains") if network['searchDomains'].to_s.empty?
|
|
211
234
|
print_description_list(description_cols, network)
|
|
212
235
|
|
|
213
236
|
if network["group"]
|
|
@@ -243,10 +266,12 @@ class Morpheus::Cli::NetworksCommand
|
|
|
243
266
|
{
|
|
244
267
|
id: subnet['id'],
|
|
245
268
|
name: " #{subnet['displayName'] || subnet['name']}",
|
|
269
|
+
labels: format_list(subnet['labels'], '', 3),
|
|
246
270
|
# type: subnet['type'] ? subnet['type']['name'] : '',
|
|
247
271
|
type: "Subnet",
|
|
248
272
|
cloud: network['zone'] ? network['zone']['name'] : '',
|
|
249
273
|
cidr: subnet['cidr'],
|
|
274
|
+
cidrIPv6: subnet['cidrIPv6'],
|
|
250
275
|
pool: subnet['pool'] ? subnet['pool']['name'] : '',
|
|
251
276
|
dhcp: subnet['dhcpServer'] ? 'Yes' : 'No',
|
|
252
277
|
visibility: subnet['visibility'].to_s.capitalize,
|
|
@@ -254,7 +279,7 @@ class Morpheus::Cli::NetworksCommand
|
|
|
254
279
|
tenants: subnet['tenants'] ? subnet['tenants'].collect {|it| it['name'] }.uniq.join(', ') : ''
|
|
255
280
|
}
|
|
256
281
|
}
|
|
257
|
-
columns = [:id, :name, :cidr, :dhcp, :active, :visibility]
|
|
282
|
+
columns = [:id, :name, :labels, :cidr, :cidrIPv6, :dhcp, :active, :visibility]
|
|
258
283
|
print cyan
|
|
259
284
|
print as_pretty_table(subnet_rows, columns, options)
|
|
260
285
|
print reset
|
|
@@ -295,9 +320,18 @@ class Morpheus::Cli::NetworksCommand
|
|
|
295
320
|
opts.on('--display-name VALUE', String, "Display name for this network") do |val|
|
|
296
321
|
options['displayName'] = val
|
|
297
322
|
end
|
|
323
|
+
opts.on('-l', '--labels [LIST]', String, "Labels") do |val|
|
|
324
|
+
options['labels'] = parse_labels(val)
|
|
325
|
+
end
|
|
298
326
|
opts.on('--description VALUE', String, "Description of network") do |val|
|
|
299
327
|
options['description'] = val
|
|
300
328
|
end
|
|
329
|
+
opts.on('--ipv4Enabled [on|off]', String, "ipv4Enabled") do |val|
|
|
330
|
+
options['ipv4Enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
331
|
+
end
|
|
332
|
+
opts.on('--ipv6Enabled [on|off]', String, "ipv6Enabled") do |val|
|
|
333
|
+
options['ipv6Enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
334
|
+
end
|
|
301
335
|
opts.on('--gateway VALUE', String, "Gateway") do |val|
|
|
302
336
|
options['gateway'] = val
|
|
303
337
|
end
|
|
@@ -310,6 +344,34 @@ class Morpheus::Cli::NetworksCommand
|
|
|
310
344
|
opts.on('--cidr VALUE', String, "CIDR") do |val|
|
|
311
345
|
options['cidr'] = val
|
|
312
346
|
end
|
|
347
|
+
opts.on('--gateway-ipv6 VALUE', String, "IPv6 Gateway") do |val|
|
|
348
|
+
options['gatewayIPv6'] = val
|
|
349
|
+
end
|
|
350
|
+
opts.on('--gatewayIPv6 VALUE', String, "IPv6 Gateway") do |val|
|
|
351
|
+
options['gatewayIPv6'] = val
|
|
352
|
+
end
|
|
353
|
+
opts.add_hidden_option('--gatewayIPv6')
|
|
354
|
+
opts.on('--dns-primary-ipv6 VALUE', String, "IPv6 DNS Primary") do |val|
|
|
355
|
+
options['dnsPrimaryIPv6'] = val
|
|
356
|
+
end
|
|
357
|
+
opts.on('--dns-primaryIPv6 VALUE', String, "IPv6 DNS Primary") do |val|
|
|
358
|
+
options['dnsPrimaryIPv6'] = val
|
|
359
|
+
end
|
|
360
|
+
opts.add_hidden_option('--dns-primaryIPv6')
|
|
361
|
+
opts.on('--dns-secondary-ipv6 VALUE', String, "IPv6 DNS Secondary") do |val|
|
|
362
|
+
options['dnsSecondaryIPv6'] = val
|
|
363
|
+
end
|
|
364
|
+
opts.on('--dns-secondaryIPv6 VALUE', String, "IPv6 DNS Secondary") do |val|
|
|
365
|
+
options['dnsSecondaryIPv6'] = val
|
|
366
|
+
end
|
|
367
|
+
opts.add_hidden_option('--dns-secondaryIPv6')
|
|
368
|
+
opts.on('--cidr-ipv6 VALUE', String, "IPv6 CIDR") do |val|
|
|
369
|
+
options['cidrIPv6'] = val
|
|
370
|
+
end
|
|
371
|
+
opts.on('--cidrIPv6 VALUE', String, "IPv6 CIDR") do |val|
|
|
372
|
+
options['cidrIPv6'] = val
|
|
373
|
+
end
|
|
374
|
+
opts.add_hidden_option('--cidrIPv6')
|
|
313
375
|
opts.on('--vlan-id VALUE', String, "VLAN ID") do |val|
|
|
314
376
|
options['vlanId'] = val.to_i
|
|
315
377
|
end
|
|
@@ -322,12 +384,15 @@ class Morpheus::Cli::NetworksCommand
|
|
|
322
384
|
opts.on('--allow-ip-override [on|off]', String, "Allow IP Override") do |val|
|
|
323
385
|
options['allowStaticOverride'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
324
386
|
end
|
|
325
|
-
opts.on('--domain VALUE', String, "Network Domain ID") do |val|
|
|
387
|
+
opts.on('--domain [VALUE]', String, "Network Domain ID") do |val|
|
|
326
388
|
options['domain'] = val
|
|
327
389
|
end
|
|
328
|
-
opts.on('--
|
|
329
|
-
options['
|
|
390
|
+
opts.on('--search-domains [VALUE]', String, "Search Domains") do |val|
|
|
391
|
+
options['searchDomains'] = val
|
|
330
392
|
end
|
|
393
|
+
# opts.on('--scan [on|off]', String, "Scan Network") do |val|
|
|
394
|
+
# options['scanNetwork'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
395
|
+
# end
|
|
331
396
|
opts.on('--proxy VALUE', String, "Network Proxy ID") do |val|
|
|
332
397
|
options['proxy'] = val
|
|
333
398
|
end
|
|
@@ -436,6 +501,11 @@ class Morpheus::Cli::NetworksCommand
|
|
|
436
501
|
payload['network']['displayName'] = v_prompt['displayName']
|
|
437
502
|
end
|
|
438
503
|
|
|
504
|
+
# Labels
|
|
505
|
+
if options['labels']
|
|
506
|
+
payload['network']['labels'] = options['labels']
|
|
507
|
+
end
|
|
508
|
+
|
|
439
509
|
# Description
|
|
440
510
|
if options['description']
|
|
441
511
|
payload['network']['description'] = options['description']
|
|
@@ -561,43 +631,102 @@ class Morpheus::Cli::NetworksCommand
|
|
|
561
631
|
payload['network']['zone'] = {'id' => cloud['id']}
|
|
562
632
|
end
|
|
563
633
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
payload['network']['cidr'] = v_prompt['cidr']
|
|
571
|
-
end
|
|
634
|
+
if options['ipv4Enabled'].nil? && payload['network']['ipv4Enabled'].nil?
|
|
635
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'ipv4Enabled', 'fieldLabel' => 'IPv4 Enabled', 'type' => 'checkbox', 'required' => false, 'description' => '', 'defaultValue' => true}], options)
|
|
636
|
+
val = v_prompt['ipv4Enabled']
|
|
637
|
+
payload['network']['ipv4Enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
638
|
+
else
|
|
639
|
+
payload['network']['ipv4Enabled'] = options['ipv4Enabled']
|
|
572
640
|
end
|
|
573
641
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
if
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
642
|
+
if payload['network']['ipv4Enabled']
|
|
643
|
+
# CIDR
|
|
644
|
+
if network_type['hasCidr'] && network_type['cidrEditable']
|
|
645
|
+
if options['cidr']
|
|
646
|
+
payload['network']['cidr'] = options['cidr']
|
|
647
|
+
else
|
|
648
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'cidr', 'fieldLabel' => network_type['code'] == 'nsxtLogicalSwitch' ? 'Gateway CIDR' : 'CIDR', 'type' => 'text', 'required' => network_type['cidrRequired'], 'description' => ''}], options)
|
|
649
|
+
payload['network']['cidr'] = v_prompt['cidr']
|
|
650
|
+
end
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
# Gateway
|
|
654
|
+
if network_type['gatewayEditable']
|
|
655
|
+
if options['gateway']
|
|
656
|
+
payload['network']['gateway'] = options['gateway']
|
|
657
|
+
else
|
|
658
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'gateway', 'fieldLabel' => 'Gateway', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
659
|
+
payload['network']['gateway'] = v_prompt['gateway']
|
|
660
|
+
end
|
|
661
|
+
end
|
|
662
|
+
|
|
663
|
+
# DNS
|
|
664
|
+
if network_type['dnsEditable']
|
|
665
|
+
if options['dnsPrimary']
|
|
666
|
+
payload['network']['dnsPrimary'] = options['dnsPrimary']
|
|
667
|
+
else
|
|
668
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'dnsPrimary', 'fieldLabel' => 'DNS Primary', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
669
|
+
payload['network']['dnsPrimary'] = v_prompt['dnsPrimary']
|
|
670
|
+
end
|
|
671
|
+
|
|
672
|
+
if options['dnsSecondary']
|
|
673
|
+
payload['network']['dnsSecondary'] = options['dnsSecondary']
|
|
674
|
+
else
|
|
675
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'dnsSecondary', 'fieldLabel' => 'DNS Secondary', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
676
|
+
payload['network']['dnsSecondary'] = v_prompt['dnsSecondary']
|
|
677
|
+
end
|
|
581
678
|
end
|
|
582
679
|
end
|
|
583
680
|
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
681
|
+
if options['ipv6Enabled'].nil? && payload['network']['ipv6Enabled'].nil?
|
|
682
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'ipv6Enabled', 'fieldLabel' => 'IPv6 Enabled', 'type' => 'checkbox', 'required' => false, 'description' => '', 'defaultValue' => false}], options)
|
|
683
|
+
val = v_prompt['ipv6Enabled']
|
|
684
|
+
payload['network']['ipv6Enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
685
|
+
else
|
|
686
|
+
payload['network']['ipv6Enabled'] = options['ipv6Enabled']
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
if payload['network']['ipv6Enabled']
|
|
690
|
+
#IPv6 Options
|
|
691
|
+
# CIDR
|
|
692
|
+
if network_type['hasCidr'] && network_type['cidrEditable']
|
|
693
|
+
if options['cidrIPv6']
|
|
694
|
+
payload['network']['cidrIPv6'] = options['cidr']
|
|
695
|
+
else
|
|
696
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'cidrIPv6', 'fieldLabel' => 'IPv6 CIDR', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
697
|
+
payload['network']['cidrIPv6'] = v_prompt['cidrIPv6']
|
|
698
|
+
end
|
|
591
699
|
end
|
|
592
700
|
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
701
|
+
# Gateway
|
|
702
|
+
if network_type['gatewayEditable']
|
|
703
|
+
if options['gatewayIPv6']
|
|
704
|
+
payload['network']['gatewayIPv6'] = options['gatewayIPv6']
|
|
705
|
+
else
|
|
706
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'gatewayIPv6', 'fieldLabel' => 'IPv6 Gateway', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
707
|
+
payload['network']['gatewayIPv6'] = v_prompt['gatewayIPv6']
|
|
708
|
+
end
|
|
709
|
+
end
|
|
710
|
+
|
|
711
|
+
# DNS
|
|
712
|
+
if network_type['dnsEditable']
|
|
713
|
+
if options['dnsPrimaryIPv6']
|
|
714
|
+
payload['network']['dnsPrimaryIPv6'] = options['dnsPrimaryIPv6']
|
|
715
|
+
else
|
|
716
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'dnsPrimaryIPv6', 'fieldLabel' => 'IPv6 DNS Primary', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
717
|
+
payload['network']['dnsPrimaryIPv6'] = v_prompt['dnsPrimaryIPv6']
|
|
718
|
+
end
|
|
719
|
+
|
|
720
|
+
if options['dnsSecondary']
|
|
721
|
+
payload['network']['dnsSecondaryIPv6'] = options['dnsSecondaryIPv6']
|
|
722
|
+
else
|
|
723
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'dnsSecondaryIPv6', 'fieldLabel' => 'IPv6 DNS Secondary', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
724
|
+
payload['network']['dnsSecondaryIPv6'] = v_prompt['dnsSecondaryIPv6']
|
|
725
|
+
end
|
|
598
726
|
end
|
|
599
727
|
end
|
|
600
728
|
|
|
729
|
+
|
|
601
730
|
# VLAN ID
|
|
602
731
|
if network_type['vlanIdEditable']
|
|
603
732
|
if options['vlanId']
|
|
@@ -668,16 +797,19 @@ class Morpheus::Cli::NetworksCommand
|
|
|
668
797
|
|
|
669
798
|
# Network Domain
|
|
670
799
|
if network_type['networkDomainEditable'] && payload['network']['networkDomain'].nil?
|
|
671
|
-
if options
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
800
|
+
if options.key?('domain')
|
|
801
|
+
if options['domain'].to_s.empty? # clear it?
|
|
802
|
+
payload['network']['networkDomain'] = {'id' => nil}
|
|
803
|
+
else
|
|
804
|
+
# always prompt to handle value as name instead of id...
|
|
805
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'domain', 'fieldLabel' => 'Network Domain', 'type' => 'select', 'optionSource' => 'networkDomains', 'required' => false, 'description' => ''}], options, @api_client)
|
|
806
|
+
payload['network']['networkDomain'] = {'id' => v_prompt['domain'].to_i} unless v_prompt['domain'].to_s.empty?
|
|
807
|
+
end
|
|
676
808
|
end
|
|
677
809
|
end
|
|
678
810
|
|
|
679
811
|
# Search Domains
|
|
680
|
-
if options
|
|
812
|
+
if options.key?('searchDomains')
|
|
681
813
|
payload['network']['searchDomains'] = options['searchDomains']
|
|
682
814
|
else
|
|
683
815
|
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'searchDomains', 'fieldLabel' => 'Search Domains', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
@@ -807,12 +939,21 @@ class Morpheus::Cli::NetworksCommand
|
|
|
807
939
|
opts.on('--name VALUE', String, "Name for this network") do |val|
|
|
808
940
|
options['name'] = val
|
|
809
941
|
end
|
|
942
|
+
opts.on('-l', '--labels [LIST]', String, "Labels") do |val|
|
|
943
|
+
options['labels'] = parse_labels(val)
|
|
944
|
+
end
|
|
810
945
|
opts.on('--description VALUE', String, "Description of network") do |val|
|
|
811
946
|
options['description'] = val
|
|
812
947
|
end
|
|
813
948
|
opts.on('--display-name VALUE', String, "Display name for this network") do |val|
|
|
814
949
|
options['displayName'] = val
|
|
815
950
|
end
|
|
951
|
+
opts.on('--ipv4Enabled [on|off]', String, "ipv4Enabled") do |val|
|
|
952
|
+
options['ipv4Enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
953
|
+
end
|
|
954
|
+
opts.on('--ipv6Enabled [on|off]', String, "ipv6Enabled") do |val|
|
|
955
|
+
options['ipv6Enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
956
|
+
end
|
|
816
957
|
opts.on('--gateway VALUE', String, "Gateway") do |val|
|
|
817
958
|
options['gateway'] = val
|
|
818
959
|
end
|
|
@@ -825,6 +966,34 @@ class Morpheus::Cli::NetworksCommand
|
|
|
825
966
|
opts.on('--cidr VALUE', String, "CIDR") do |val|
|
|
826
967
|
options['cidr'] = val
|
|
827
968
|
end
|
|
969
|
+
opts.on('--gateway-ipv6 VALUE', String, "IPv6 Gateway") do |val|
|
|
970
|
+
options['gatewayIPv6'] = val
|
|
971
|
+
end
|
|
972
|
+
opts.on('--gatewayIPv6 VALUE', String, "IPv6 Gateway") do |val|
|
|
973
|
+
options['gatewayIPv6'] = val
|
|
974
|
+
end
|
|
975
|
+
opts.add_hidden_option('--gatewayIPv6')
|
|
976
|
+
opts.on('--dns-primary-ipv6 VALUE', String, "IPv6 DNS Primary") do |val|
|
|
977
|
+
options['dnsPrimaryIPv6'] = val
|
|
978
|
+
end
|
|
979
|
+
opts.on('--dns-primaryIPv6 VALUE', String, "IPv6 DNS Primary") do |val|
|
|
980
|
+
options['dnsPrimaryIPv6'] = val
|
|
981
|
+
end
|
|
982
|
+
opts.add_hidden_option('--dns-primaryIPv6')
|
|
983
|
+
opts.on('--dns-secondary-ipv6 VALUE', String, "IPv6 DNS Secondary") do |val|
|
|
984
|
+
options['dnsSecondaryIPv6'] = val
|
|
985
|
+
end
|
|
986
|
+
opts.on('--dns-secondaryIPv6 VALUE', String, "IPv6 DNS Secondary") do |val|
|
|
987
|
+
options['dnsSecondaryIPv6'] = val
|
|
988
|
+
end
|
|
989
|
+
opts.add_hidden_option('--dns-secondaryIPv6')
|
|
990
|
+
opts.on('--cidr-ipv6 VALUE', String, "IPv6 CIDR") do |val|
|
|
991
|
+
options['cidrIPv6'] = val
|
|
992
|
+
end
|
|
993
|
+
opts.on('--cidrIPv6 VALUE', String, "IPv6 CIDR") do |val|
|
|
994
|
+
options['cidrIPv6'] = val
|
|
995
|
+
end
|
|
996
|
+
opts.add_hidden_option('--cidrIPv6')
|
|
828
997
|
opts.on('--vlan-id VALUE', String, "VLAN ID") do |val|
|
|
829
998
|
options['vlanId'] = val.to_i
|
|
830
999
|
end
|
|
@@ -837,12 +1006,15 @@ class Morpheus::Cli::NetworksCommand
|
|
|
837
1006
|
opts.on('--allow-ip-override [on|off]', String, "Allow IP Override") do |val|
|
|
838
1007
|
options['allowStaticOverride'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
839
1008
|
end
|
|
840
|
-
opts.on('--domain VALUE', String, "Network Domain ID") do |val|
|
|
1009
|
+
opts.on('--domain [VALUE]', String, "Network Domain ID") do |val|
|
|
841
1010
|
options['domain'] = val
|
|
842
1011
|
end
|
|
843
|
-
opts.on('--
|
|
844
|
-
options['
|
|
1012
|
+
opts.on('--search-domains [VALUE]', String, "Search Domains") do |val|
|
|
1013
|
+
options['searchDomains'] = val
|
|
845
1014
|
end
|
|
1015
|
+
# opts.on('--scan [on|off]', String, "Scan Network") do |val|
|
|
1016
|
+
# options['scanNetwork'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == ''
|
|
1017
|
+
# end
|
|
846
1018
|
opts.on('--proxy VALUE', String, "Network Proxy ID") do |val|
|
|
847
1019
|
options['proxy'] = val
|
|
848
1020
|
end
|
|
@@ -972,6 +1144,11 @@ class Morpheus::Cli::NetworksCommand
|
|
|
972
1144
|
payload['network']['displayName'] = options['displayName']
|
|
973
1145
|
end
|
|
974
1146
|
|
|
1147
|
+
# Labels
|
|
1148
|
+
if options['labels']
|
|
1149
|
+
payload['network']['labels'] = options['labels']
|
|
1150
|
+
end
|
|
1151
|
+
|
|
975
1152
|
# Description
|
|
976
1153
|
if options['description']
|
|
977
1154
|
payload['network']['description'] = options['description']
|
|
@@ -980,6 +1157,15 @@ class Morpheus::Cli::NetworksCommand
|
|
|
980
1157
|
# payload['network']['description'] = v_prompt['description']
|
|
981
1158
|
end
|
|
982
1159
|
|
|
1160
|
+
# IP Types Enabled
|
|
1161
|
+
if options['ipv4Enabled'] != nil
|
|
1162
|
+
payload['network']['ipv4Enabled'] = options['ipv4Enabled']
|
|
1163
|
+
end
|
|
1164
|
+
|
|
1165
|
+
if options['ipv6Enabled'] != nil
|
|
1166
|
+
payload['network']['ipv6Enabled'] = options['ipv6Enabled']
|
|
1167
|
+
end
|
|
1168
|
+
|
|
983
1169
|
# Gateway
|
|
984
1170
|
if options['gateway']
|
|
985
1171
|
payload['network']['gateway'] = options['gateway']
|
|
@@ -1012,6 +1198,26 @@ class Morpheus::Cli::NetworksCommand
|
|
|
1012
1198
|
# payload['network']['cidr'] = v_prompt['cidr']
|
|
1013
1199
|
end
|
|
1014
1200
|
|
|
1201
|
+
# IPv6 Gateway
|
|
1202
|
+
if options['gatewayIPv6']
|
|
1203
|
+
payload['network']['gatewayIPv6'] = options['gatewayIPv6']
|
|
1204
|
+
end
|
|
1205
|
+
|
|
1206
|
+
# IPv6 DNS Primary
|
|
1207
|
+
if options['dnsPrimaryIPv6']
|
|
1208
|
+
payload['network']['dnsPrimarIPv6y'] = options['dnsPrimaryIPv6']
|
|
1209
|
+
end
|
|
1210
|
+
|
|
1211
|
+
# IPv6 DNS Secondary
|
|
1212
|
+
if options['dnsSecondaryIPv6']
|
|
1213
|
+
payload['network']['dnsSecondaryIPv6'] = options['dnsSecondaryIPv6']
|
|
1214
|
+
end
|
|
1215
|
+
|
|
1216
|
+
# IPv6 CIDR
|
|
1217
|
+
if options['cidrIPv6']
|
|
1218
|
+
payload['network']['cidrIPv6'] = options['cidrIPv6']
|
|
1219
|
+
end
|
|
1220
|
+
|
|
1015
1221
|
# VLAN ID
|
|
1016
1222
|
if options['vlanId']
|
|
1017
1223
|
payload['network']['vlanId'] = options['vlanId']
|
|
@@ -1047,11 +1253,22 @@ class Morpheus::Cli::NetworksCommand
|
|
|
1047
1253
|
end
|
|
1048
1254
|
|
|
1049
1255
|
# Network Domain
|
|
1050
|
-
if options
|
|
1051
|
-
|
|
1256
|
+
if options.key?('domain')
|
|
1257
|
+
if options['domain'].to_s.empty? # clear it?
|
|
1258
|
+
payload['network']['networkDomain'] = {'id' => nil}
|
|
1259
|
+
else
|
|
1260
|
+
# always prompt to handle value as name instead of id...
|
|
1261
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'domain', 'fieldLabel' => 'Network Domain', 'type' => 'select', 'optionSource' => 'networkDomains', 'required' => false, 'description' => ''}], options, @api_client)
|
|
1262
|
+
payload['network']['networkDomain'] = {'id' => v_prompt['domain'].to_i} unless v_prompt['domain'].to_s.empty?
|
|
1263
|
+
end
|
|
1264
|
+
end
|
|
1265
|
+
|
|
1266
|
+
# Search Domains
|
|
1267
|
+
if options.key?('searchDomains')
|
|
1268
|
+
payload['network']['searchDomains'] = options['searchDomains']
|
|
1052
1269
|
else
|
|
1053
|
-
#v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => '
|
|
1054
|
-
#payload['network']['
|
|
1270
|
+
# v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'searchDomains', 'fieldLabel' => 'Search Domains', 'type' => 'text', 'required' => false, 'description' => ''}], options)
|
|
1271
|
+
# payload['network']['searchDomains'] = v_prompt['searchDomains']
|
|
1055
1272
|
end
|
|
1056
1273
|
|
|
1057
1274
|
# Scan Network
|