def update(args)
options = {}
params = {}
optparse = Morpheus::Cli::OptionParser.new do |opts|
opts.banner = opts.banner = subcommand_usage()
opts.on("--allow-cloud [on|off]", ['on','off'], "Allow cloud selection. Default is on") do |val|
params['allowZoneSelection'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--allow-host [on|off]", ['on','off'], "Allow host selection. Default is on") do |val|
params['allowServerSelection'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--require-env [on|off]", ['on','off'], "Require environment selection. Default is on") do |val|
params['requireEnvironments'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--show-pricing [on|off]", ['on','off'], "Show pricing. Default is on") do |val|
params['showPricing'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--ds-hide-stats [on|off]", ['on','off'], "Hide datastore stats on selection. Default is on") do |val|
params['hideDatastoreStats'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--x-tenant-naming [on|off]", ['on','off'], "Cross-tenant naming policies. Default is on") do |val|
params['crossTenantNamingPolicies'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--reuse-name-seq [on|off]", ['on','off'], "Reuse naming sequence numbers. Default is on") do |val|
params['reuseSequence'] = val.to_s == 'on' || val.to_s == 'true' || val.to_s == '1' || val.to_s == ''
end
opts.on("--deploy-bucket BUCKET", String, "Deployment archive storage provider ID or name") do |val|
if val == 'null'
params['deployStorageProvider'] = nil
else
options[:deployBucket] = val
end
end
opts.on("--cloud-username STRING", String, "Cloud-init username") do |val|
params['cloudInitUsername'] = val == 'null' ? nil : val
end
opts.on("--cloud-pwd STRING", String, "Cloud-init password") do |val|
params['cloudInitPassword'] = val == 'null' ? nil : val
end
opts.on("--cloud-keypair KEYPAIR", String, "Cloud-init key pair ID or name") do |val|
if val == 'null'
params['cloudInitKeyPair'] = nil
else
options[:cloudKeyPair] = val
end
end
opts.on("--windows-pwd STRING", String, "Windows administrator password") do |val|
params['windowsPassword'] = val == 'null' ? nil : val
end
opts.on("--pxe-pwd STRING", String, "PXE Boot default root password") do |val|
params['pxeRootPassword'] = val == 'null' ? nil : val
end
opts.on("--blueprint-type TYPE", String, "Default blueprint type ID, name or code") do |val|
if val == 'null'
params['defaultTemplateType'] = nil
else
options[:blueprintType] = val
end
end
build_common_options(opts, options, [:json, :payload, :dry_run, :quiet, :remote])
end
optparse.parse!(args)
connect(options)
if args.count != 0
raise_command_error "wrong number of arguments, expected 0 and got (#{args.count}) #{args}\n#{optparse}"
return 1
end
begin
payload = parse_payload(options)
if !payload
if options[:deployBucket]
bucket = find_storage_provider(options[:deployBucket])
if !bucket
print_red_alert "Storage provider #{options[:deployBucket]} not found"
exit 1
end
params['deployStorageProvider'] = {'id' => bucket['id']}
end
if options[:cloudKeyPair]
key_pair = find_key_pair(options[:cloudKeyPair])
if !key_pair
print_red_alert "Key pair #{options[:cloudKeyPair]} not found"
exit 1
end
params['cloudInitKeyPair'] = {'id' => key_pair['id']}
end
if options[:blueprintType]
template_type = find_template_type(options[:blueprintType])
if !template_type
print_red_alert "Blueprint type #{options[:blueprintType]} not found"
end
params['defaultTemplateType'] = {'id' => template_type['id']}
end
payload = {'provisioningSettings' => params}
end
@provisioning_settings_interface.setopts(options)
if options[:dry_run]
print_dry_run @provisioning_settings_interface.dry.update(payload)
return
end
json_response = @provisioning_settings_interface.update(payload)
if options[:json]
puts as_json(json_response, options)
elsif !options[:quiet]
if json_response['success']
print_green_success "Updated provisioning settings"
get([] + (options[:remote] ? ["-r",options[:remote]] : []))
else
print_red_alert "Error updating provisioning settings: #{json_response['msg'] || json_response['errors']}"
end
end
return 0
rescue RestClient::Exception => e
print_rest_exception(e, options)
exit 1
end
end