class Morpheus::Cli::ProvisioningSettingsCommand
Public Instance Methods
connect(opts)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 14 def connect(opts) @api_client = establish_remote_appliance_connection(opts) @provisioning_settings_interface = @api_client.provisioning_settings @storage_providers_interface = @api_client.storage_providers @key_pairs_interface = @api_client.key_pairs @blueprints_interface = @api_client.blueprints end
get(args)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 26 def get(args) options = {} optparse = Morpheus::Cli::OptionParser.new do |opts| opts.banner = subcommand_usage() build_common_options(opts, options, [:query, :json, :yaml, :csv, :fields, :dry_run, :remote]) opts.footer = "Get provisioning settings." 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 @provisioning_settings_interface.setopts(options) if options[:dry_run] print_dry_run @provisioning_settings_interface.dry.get() return end json_response = @provisioning_settings_interface.get() if options[:json] puts as_json(json_response, options, "provisioningSettings") return 0 elsif options[:yaml] puts as_yaml(json_response, options, "provisioningSettings") return 0 elsif options[:csv] puts records_as_csv([json_response['provisioningSettings']], options) return 0 end settings = json_response['provisioningSettings'] print_h1 "Provisioning Settings" print cyan description_cols = { "Allow Cloud Selection" => lambda {|it| format_boolean(it['allowZoneSelection'])}, "Allow Host Selection" => lambda {|it| format_boolean(it['allowServerSelection'])}, "Require Environment Selection" => lambda {|it| format_boolean(it['requireEnvironments'])}, "Show Pricing" => lambda {|it| format_boolean(it['showPricing'])}, "Hide Datastore Stats On Selection" => lambda {|it| format_boolean(it['hideDatastoreStats'])}, "Cross-Tenant Naming Policies" => lambda {|it| format_boolean(it['crossTenantNamingPolicies'])}, "Reuse Naming Sequence Numbers" => lambda {|it| format_boolean(it['reuseSequence'])}, "Show Console Keyboard Layout Settings" => lambda {|it| format_boolean(it['showConsoleKeyboardSettings'])}, "Deployment Archive Store" => lambda {|it| it['deployStorageProvider'] ? it['deployStorageProvider']['name'] : nil}, # Cloud-Init Settings "Cloud-Init Username" => lambda {|it| it['cloudInitUsername']}, "Cloud-Init Password" => lambda {|it| it['cloudInitPassword']}, "Cloud-Init Key Pair" => lambda {|it| it['cloudInitKeyPair'] ? it['cloudInitKeyPair']['name'] : nil}, # Windows Settings "Windows Adminstrator Password" => lambda {|it| it['windowsPassword']}, # PXE Boot Settings "Default Root Password" => lambda {|it| it['pxeRootPassword']}, # App Blueprint Settings "Default Blueprint Type" => lambda {|it| it['defaultTemplateType'] ? it['defaultTemplateType']['name'].capitalize : 'Morpheus'} } print_description_list(description_cols, settings) print reset, "\n" return 0 rescue RestClient::Exception => e print_rest_exception(e, options) return 1 end end
handle(args)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 22 def handle(args) handle_subcommand(args) end
update(args)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 94 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
Private Instance Methods
find_key_pair(val)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 230 def find_key_pair(val) (val.to_s =~ /\A\d{1,}\Z/) ? @key_pairs_interface.get(current_account['id'], val.to_i)['keyPair'] : @key_pairs_interface.list(current_account['id'], {'name' => val})["keyPairs"].first end
find_storage_provider(val)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 226 def find_storage_provider(val) (val.to_s =~ /\A\d{1,}\Z/) ? @storage_providers_interface.get(val.to_i)['storageBucket'] : @storage_providers_interface.list({'name' => val})["storageBuckets"].first end
find_template_type(val)
click to toggle source
# File lib/morpheus/cli/commands/provisioning_settings_command.rb, line 234 def find_template_type(val) template_types = @provisioning_settings_interface.template_types['templateTypes'] (val.to_s =~ /\A\d{1,}\Z/) ? template_types.find {|it| it['id'] == val.to_i} : template_types.find {|it| it['name'].casecmp(val) == 0 || it['code'].casecmp(val) == 0} end