morpheus-cli 6.2.0 → 6.2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +1 -1
- data/lib/morpheus/api/monitoring_settings_interface.rb +0 -4
- data/lib/morpheus/api/service_catalog_interface.rb +6 -6
- data/lib/morpheus/cli/cli_command.rb +4 -1
- data/lib/morpheus/cli/commands/backup_jobs_command.rb +2 -1
- data/lib/morpheus/cli/commands/backups_command.rb +2 -1
- data/lib/morpheus/cli/commands/monitoring_settings.rb +0 -16
- data/lib/morpheus/cli/commands/plugins.rb +2 -1
- data/lib/morpheus/cli/commands/roles.rb +9 -9
- data/lib/morpheus/cli/commands/service_catalog_command.rb +2 -2
- data/lib/morpheus/cli/commands/user_sources_command.rb +36 -8
- 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: 7c3a197cce2be26fa8c5920d9dcfb367edab10b100b645c02b171ce830e2eb7f
|
4
|
+
data.tar.gz: f8467d902d52c8238d3edeae9cf2c6a57eab41e693b76a2742230a9635aa7403
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74ffa8dc07f0960f05790ae69568fbf9ae0b1afbe68bf7b8fea8dd532bd79a6cbafad4e1893c899b41fdef2c48fcb063d539f475b976ec72419279b77e312ce6
|
7
|
+
data.tar.gz: 7f512bfd99104a127d8e2f67976ad3f221ae9a3c35cf6dd70f7c6002f5b0fe494c961570cdb40ace71abbc3ccff2d09b3a3b582089fc83355da4d95f1fddf9d4
|
data/Dockerfile
CHANGED
@@ -18,8 +18,4 @@ class Morpheus::MonitoringSettingsInterface < Morpheus::APIClient
|
|
18
18
|
execute(method: :put, url: "#{base_path}/service-now", payload: payload, params: params, headers: headers)
|
19
19
|
end
|
20
20
|
|
21
|
-
def update_new_relic(payload, params={}, headers={})
|
22
|
-
execute(method: :put, url: "#{base_path}/new-relic", payload: payload, params: params, headers: headers)
|
23
|
-
end
|
24
|
-
|
25
21
|
end
|
@@ -46,22 +46,22 @@ class Morpheus::ServiceCatalogInterface < Morpheus::APIClient
|
|
46
46
|
end
|
47
47
|
|
48
48
|
# update cart (set cart name)
|
49
|
-
def update_cart(
|
49
|
+
def update_cart(params, payload)
|
50
50
|
execute(method: :put, url: "#{base_path}/cart", params: params, payload: payload.to_json)
|
51
51
|
end
|
52
52
|
|
53
53
|
# validate a new item, can be used before before adding it
|
54
|
-
def validate_cart_item(
|
54
|
+
def validate_cart_item(params, payload)
|
55
55
|
execute(method: :post, url: "#{base_path}/cart/items/validate", params: params, payload: payload.to_json)
|
56
56
|
end
|
57
57
|
|
58
58
|
# add item to cart
|
59
|
-
def create_cart_item(
|
59
|
+
def create_cart_item(params, payload)
|
60
60
|
execute(method: :post, url: "#{base_path}/cart/items", params: params, payload: payload.to_json)
|
61
61
|
end
|
62
62
|
|
63
63
|
# update item in the cart
|
64
|
-
def update_cart_item(id,
|
64
|
+
def update_cart_item(id, params, payload)
|
65
65
|
validate_id!(id)
|
66
66
|
execute(method: :put, url: "#{base_path}/cart/items/#{id}", params: params, payload: payload.to_json)
|
67
67
|
end
|
@@ -73,7 +73,7 @@ class Morpheus::ServiceCatalogInterface < Morpheus::APIClient
|
|
73
73
|
end
|
74
74
|
|
75
75
|
# place order with cart
|
76
|
-
def checkout(
|
76
|
+
def checkout(params, payload)
|
77
77
|
execute(method: :post, url: "#{base_path}/checkout", params: params, payload: payload.to_json)
|
78
78
|
end
|
79
79
|
|
@@ -83,7 +83,7 @@ class Morpheus::ServiceCatalogInterface < Morpheus::APIClient
|
|
83
83
|
end
|
84
84
|
|
85
85
|
# create an order from scratch, without using a cart
|
86
|
-
def create_order(
|
86
|
+
def create_order(params, payload)
|
87
87
|
execute(method: :post, url: "#{base_path}/orders", params: params, payload: payload.to_json)
|
88
88
|
end
|
89
89
|
end
|
@@ -1552,7 +1552,10 @@ module Morpheus
|
|
1552
1552
|
payloads.each do |payload|
|
1553
1553
|
apply_options(payload, options, object_key) unless options[:apply_options] == false
|
1554
1554
|
end
|
1555
|
-
else
|
1555
|
+
#else
|
1556
|
+
# should always do this, but a lot of methods rely on this returning nil right now, not {}
|
1557
|
+
# so for now only do it if block is given
|
1558
|
+
elsif block_given?
|
1556
1559
|
# yield to block to construct the payload,
|
1557
1560
|
# this is typically where prompting for inputs with optionTypes happens
|
1558
1561
|
payload = {}
|
@@ -259,7 +259,8 @@ EOT
|
|
259
259
|
connect(options)
|
260
260
|
backup_job = find_backup_job_by_name_or_id(args[0])
|
261
261
|
return 1 if backup_job.nil?
|
262
|
-
parse_payload(options)
|
262
|
+
parse_payload(options) do |payload|
|
263
|
+
end
|
263
264
|
execute_api(@backup_jobs_interface, :execute_job, [backup_job['id']], options, 'job') do |json_response|
|
264
265
|
print_green_success "Executing backup job #{backup_job['name']}"
|
265
266
|
# should get the result maybe, or could even support refreshing until it is complete...
|
@@ -305,7 +305,8 @@ EOT
|
|
305
305
|
connect(options)
|
306
306
|
backup = find_backup_by_name_or_id(args[0])
|
307
307
|
return 1 if backup.nil?
|
308
|
-
parse_payload(options)
|
308
|
+
parse_payload(options) do |payload|
|
309
|
+
end
|
309
310
|
execute_api(@backups_interface, :execute_backup, [backup['id']], options, 'backup') do |json_response|
|
310
311
|
print_green_success "Executing backup #{backup['name']}"
|
311
312
|
# should get the result maybe, or could even support refreshing until it is complete...
|
@@ -39,7 +39,6 @@ class Morpheus::Cli::MonitoringSettings
|
|
39
39
|
render_response(json_response, options, 'monitoringSettings') do
|
40
40
|
monitoring_settings = json_response['monitoringSettings']
|
41
41
|
service_now_settings = monitoring_settings['serviceNow']
|
42
|
-
new_relic_settings = monitoring_settings['newRelic']
|
43
42
|
print_h1 "Monitoring Settings"
|
44
43
|
print cyan
|
45
44
|
description_cols = {
|
@@ -61,13 +60,6 @@ class Morpheus::Cli::MonitoringSettings
|
|
61
60
|
"Critical Mapping" => lambda {|it| format_service_now_mapping(it['criticalMapping']) },
|
62
61
|
}
|
63
62
|
print_description_list(description_cols, service_now_settings)
|
64
|
-
|
65
|
-
print_h2 "New Relic Settings", options.merge(:border_style => :thin)
|
66
|
-
description_cols = {
|
67
|
-
"Enabled" => lambda {|it| format_boolean(it['enabled']) },
|
68
|
-
"License Key" => lambda {|it| it['licenseKey'] },
|
69
|
-
}
|
70
|
-
print_description_list(description_cols, new_relic_settings, options)
|
71
63
|
|
72
64
|
print reset, "\n"
|
73
65
|
end
|
@@ -139,14 +131,6 @@ class Morpheus::Cli::MonitoringSettings
|
|
139
131
|
params['serviceNow'] ||= {}
|
140
132
|
params['serviceNow']['criticalMapping'] = val
|
141
133
|
end
|
142
|
-
opts.on('--new-relic-enabled [on|off]', String, "New Relic: Enabled (on) or disabled (off)") do |val|
|
143
|
-
params['newRelic'] ||= {}
|
144
|
-
params['newRelic']['enabled'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
145
|
-
end
|
146
|
-
opts.on("--new-relic-license-key [VALUE]", String, "New Relic: License Key") do |val|
|
147
|
-
params['newRelic'] ||= {}
|
148
|
-
params['newRelic']['licenseKey'] = val
|
149
|
-
end
|
150
134
|
build_standard_update_options(opts, options)
|
151
135
|
opts.footer = "Update monitoring settings."
|
152
136
|
end
|
@@ -65,7 +65,8 @@ EOT
|
|
65
65
|
verify_args!(args:args, optparse:optparse, count:0)
|
66
66
|
connect(options)
|
67
67
|
params.merge!(parse_query_options(options))
|
68
|
-
payload = parse_payload(options)
|
68
|
+
payload = parse_payload(options) do |data|
|
69
|
+
end
|
69
70
|
@plugins_interface.setopts(options)
|
70
71
|
if options[:dry_run]
|
71
72
|
print_dry_run @plugins_interface.dry.check_updates(payload, params)
|
@@ -1206,7 +1206,7 @@ EOT
|
|
1206
1206
|
role = find_role_by_name_or_id(account_id, name)
|
1207
1207
|
exit 1 if role.nil?
|
1208
1208
|
|
1209
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
1209
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
1210
1210
|
|
1211
1211
|
cloud = nil
|
1212
1212
|
if !do_all
|
@@ -1355,7 +1355,7 @@ EOT
|
|
1355
1355
|
role = find_role_by_name_or_id(account_id, name)
|
1356
1356
|
return 1 if role.nil?
|
1357
1357
|
|
1358
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
1358
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
1359
1359
|
instance_type = nil
|
1360
1360
|
if !do_all
|
1361
1361
|
instance_type = find_instance_type_by_name(instance_type_name)
|
@@ -1504,7 +1504,7 @@ EOT
|
|
1504
1504
|
role = find_role_by_name_or_id(account_id, name)
|
1505
1505
|
return 1 if role.nil?
|
1506
1506
|
|
1507
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
1507
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
1508
1508
|
blueprint_global_access = role_json['globalAppTemplateAccess'] || role_json['globalBlueprintAccess']
|
1509
1509
|
blueprint_permissions = role_json['appTemplatePermissions'] || role_json['blueprintPermissions'] || []
|
1510
1510
|
|
@@ -1666,7 +1666,7 @@ EOT
|
|
1666
1666
|
role = find_role_by_name_or_id(account_id, name)
|
1667
1667
|
return 1 if role.nil?
|
1668
1668
|
|
1669
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
1669
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
1670
1670
|
catalog_item_type_global_access = role_json['globalCatalogItemTypeAccess']
|
1671
1671
|
catalog_item_type_permissions = role_json['catalogItemTypePermissions'] || role_json['catalogItemTypes'] []
|
1672
1672
|
|
@@ -1821,7 +1821,7 @@ Update default persona access for a role.
|
|
1821
1821
|
role = find_role_by_name_or_id(account_id, name)
|
1822
1822
|
return 1 if role.nil?
|
1823
1823
|
|
1824
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
1824
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
1825
1825
|
|
1826
1826
|
# no lookup right now, pass the code serviceCatalog|standard
|
1827
1827
|
persona_code = persona_id
|
@@ -1963,7 +1963,7 @@ EOT
|
|
1963
1963
|
role = find_role_by_name_or_id(account_id, name)
|
1964
1964
|
return 1 if role.nil?
|
1965
1965
|
|
1966
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
1966
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
1967
1967
|
vdi_pool_global_access = role_json['globalVdiPoolAccess']
|
1968
1968
|
vdi_pool_permissions = role_json['vdiPoolPermissions'] || role_json['vdiPools'] || []
|
1969
1969
|
|
@@ -2119,7 +2119,7 @@ EOT
|
|
2119
2119
|
role = find_role_by_name_or_id(account_id, name)
|
2120
2120
|
return 1 if role.nil?
|
2121
2121
|
|
2122
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
2122
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
2123
2123
|
report_type_global_access = role_json['globalReportTypeAccess']
|
2124
2124
|
report_type_permissions = role_json['reportTypePermissions'] || role_json['reportTypes'] || []
|
2125
2125
|
|
@@ -2273,7 +2273,7 @@ Update default task access for a role.
|
|
2273
2273
|
role = find_role_by_name_or_id(account_id, name)
|
2274
2274
|
return 1 if role.nil?
|
2275
2275
|
|
2276
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
2276
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
2277
2277
|
task_permissions = role_json['taskPermissions'] || role_json['tasks'] || []
|
2278
2278
|
|
2279
2279
|
# hacky, but support name or code lookup via the list returned in the show payload
|
@@ -2425,7 +2425,7 @@ Update default workflow access for a role.
|
|
2425
2425
|
role = find_role_by_name_or_id(account_id, name)
|
2426
2426
|
return 1 if role.nil?
|
2427
2427
|
|
2428
|
-
role_json = @roles_interface.get(account_id, role['id'])
|
2428
|
+
role_json = @roles_interface.get(account_id, role['id'], {'includeDefaultAccess' => true})
|
2429
2429
|
workflow_permissions = role_json['taskSetPermissions'] || role_json['taskSets'] || []
|
2430
2430
|
|
2431
2431
|
# hacky, but support name or code lookup via the list returned in the show payload
|
@@ -871,7 +871,7 @@ EOT
|
|
871
871
|
|
872
872
|
@service_catalog_interface.setopts(options)
|
873
873
|
if options[:dry_run]
|
874
|
-
print_dry_run @service_catalog_interface.dry.checkout(payload)
|
874
|
+
print_dry_run @service_catalog_interface.dry.checkout(params, payload)
|
875
875
|
return
|
876
876
|
end
|
877
877
|
|
@@ -889,7 +889,7 @@ EOT
|
|
889
889
|
unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to checkout and place an order?")
|
890
890
|
return 9, "aborted command"
|
891
891
|
end
|
892
|
-
json_response = @service_catalog_interface.checkout(
|
892
|
+
json_response = @service_catalog_interface.checkout(params, payload)
|
893
893
|
render_response(json_response, options) do
|
894
894
|
print_green_success "Order placed"
|
895
895
|
# ok so this is delayed because list does not return all statuses right now..
|
@@ -158,7 +158,8 @@ EOT
|
|
158
158
|
"Login URL" => lambda {|it| it['loginURL'] },
|
159
159
|
"Default Role" => lambda {|it| it['defaultAccountRole'] ? it['defaultAccountRole']['authority'] : '' },
|
160
160
|
"External Login" => lambda {|it| format_boolean it['externalLogin'] },
|
161
|
-
"
|
161
|
+
"Enable Role Mapping Permission" => lambda {|it| format_boolean it['allowCustomMappings'] },
|
162
|
+
"Manual Role Assignment" => lambda {|it| it['manualRoleAssignment'].nil? ? '' : format_boolean(it['manualRoleAssignment']) },
|
162
163
|
"Active" => lambda {|it| format_boolean it['active'] },
|
163
164
|
}
|
164
165
|
print_description_list(description_cols, user_source)
|
@@ -235,13 +236,27 @@ EOT
|
|
235
236
|
opts.on('--description VALUE', String, "Description") do |val|
|
236
237
|
params['description'] = val
|
237
238
|
end
|
238
|
-
opts.on("--allow-custom-mappings [on|off]", ['on','off'], "
|
239
|
+
opts.on("--allow-custom-mappings [on|off]", ['on','off'], "Enable Role Mapping Permissions") do |val|
|
239
240
|
params['allowCustomMappings'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
240
241
|
end
|
241
|
-
opts.on("--allowCustomMappings [on|off]", ['on','off'], "
|
242
|
+
opts.on("--allowCustomMappings [on|off]", ['on','off'], "Enable Role Mapping Permissions") do |val|
|
242
243
|
params['allowCustomMappings'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
243
244
|
end
|
244
245
|
opts.add_hidden_option('--allowCustomMappings')
|
246
|
+
opts.on("--manual-role-assignment [on|off]", ['on','off'], "Manual Role Assignment") do |val|
|
247
|
+
params['manualRoleAssignment'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
248
|
+
end
|
249
|
+
opts.on("--manualRoleAssignment [on|off]", ['on','off'], "Manual Role Assignment") do |val|
|
250
|
+
params['manualRoleAssignment'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
251
|
+
end
|
252
|
+
opts.add_hidden_option('--manualRoleAssignment')
|
253
|
+
opts.on("--manual-role-assignment [on|off]", ['on','off'], "Manual Role Assignment") do |val|
|
254
|
+
params['manualRoleAssignment'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
255
|
+
end
|
256
|
+
opts.on("--manualRoleAssignment [on|off]", ['on','off'], "Manual Role Assignment") do |val|
|
257
|
+
params['manualRoleAssignment'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
258
|
+
end
|
259
|
+
opts.add_hidden_option('--manualRoleAssignment')
|
245
260
|
opts.on('--role-mappings MAPPINGS', String, "Role Mappings FQN in the format id1:FQN1,id2:FQN2") do |val|
|
246
261
|
role_mappings = {}
|
247
262
|
val.split(',').collect {|it| it.strip.split(':') }.each do |pair|
|
@@ -386,14 +401,22 @@ EOT
|
|
386
401
|
end
|
387
402
|
payload['userSource']['defaultAccountRole'] = {'id' => default_role_id }
|
388
403
|
|
389
|
-
#
|
404
|
+
# Enable Role Mapping Permissions
|
390
405
|
if !params['allowCustomMappings'].nil?
|
391
406
|
payload['userSource']['allowCustomMappings'] = ["on","true"].include?(params['allowCustomMappings'].to_s)
|
392
407
|
else
|
393
|
-
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'allowCustomMappings', 'type' => 'checkbox', 'fieldLabel' => '
|
408
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'allowCustomMappings', 'type' => 'checkbox', 'fieldLabel' => 'Enable Role Mapping Permissions', 'defaultValue' => false}], options[:options])
|
394
409
|
payload['userSource']['allowCustomMappings'] = ["on","true"].include?(v_prompt['allowCustomMappings'].to_s)
|
395
410
|
end
|
396
411
|
|
412
|
+
# Manual Role Assignment
|
413
|
+
if !params['manualRoleAssignment'].nil?
|
414
|
+
payload['userSource']['manualRoleAssignment'] = ["on","true"].include?(params['allowCustomMappings'].to_s)
|
415
|
+
else
|
416
|
+
v_prompt = Morpheus::Cli::OptionTypes.prompt([{'fieldName' => 'manualRoleAssignment', 'type' => 'checkbox', 'fieldLabel' => 'Manual Role Assignment', 'defaultValue' => false}], options[:options])
|
417
|
+
payload['userSource']['manualRoleAssignment'] = ["on","true"].include?(v_prompt['manualRoleAssignment'].to_s)
|
418
|
+
end
|
419
|
+
|
397
420
|
if role_mappings
|
398
421
|
payload['roleMappings'] = role_mappings
|
399
422
|
end
|
@@ -435,10 +458,10 @@ EOT
|
|
435
458
|
opts.on('--description VALUE', String, "Description") do |val|
|
436
459
|
params['description'] = val
|
437
460
|
end
|
438
|
-
opts.on("--allow-custom-mappings [on|off]", ['on','off'], "
|
461
|
+
opts.on("--allow-custom-mappings [on|off]", ['on','off'], "Enable Role Mapping Permissions") do |val|
|
439
462
|
params['allowCustomMappings'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
440
463
|
end
|
441
|
-
opts.on("--allowCustomMappings [on|off]", ['on','off'], "
|
464
|
+
opts.on("--allowCustomMappings [on|off]", ['on','off'], "Enable Role Mapping Permissions") do |val|
|
442
465
|
params['allowCustomMappings'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
|
443
466
|
end
|
444
467
|
opts.add_hidden_option('--allowCustomMappings')
|
@@ -493,11 +516,16 @@ EOT
|
|
493
516
|
payload['userSource']['description'] = params['description']
|
494
517
|
end
|
495
518
|
|
496
|
-
#
|
519
|
+
# Enable Role Mapping Permissions
|
497
520
|
if !params['allowCustomMappings'].nil?
|
498
521
|
payload['userSource']['allowCustomMappings'] = params['allowCustomMappings']
|
499
522
|
end
|
500
523
|
|
524
|
+
# Manual Role Assignment
|
525
|
+
if !params['manualRoleAssignment'].nil?
|
526
|
+
payload['userSource']['manualRoleAssignment'] = params['manualRoleAssignment']
|
527
|
+
end
|
528
|
+
|
501
529
|
if role_mappings
|
502
530
|
payload['roleMappings'] = role_mappings
|
503
531
|
end
|
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: 6.2.
|
4
|
+
version: 6.2.1.1
|
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: 2023-07
|
14
|
+
date: 2023-09-07 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|