class Morpheus::Cli::CloudTypes
Public Instance Methods
connect(opts)
click to toggle source
# File lib/morpheus/cli/commands/clouds_types.rb, line 12 def connect(opts) @api_client = establish_remote_appliance_connection(opts) @clouds_interface = @api_client.clouds end
get(args)
click to toggle source
# File lib/morpheus/cli/commands/clouds_types.rb, line 68 def get(args) options={} params = {} optparse = Morpheus::Cli::OptionParser.new do |opts| opts.banner = subcommand_usage("[type]") build_standard_get_options(opts, options) opts.footer = <<-EOT Get details about a cloud type. [type] is required. This is the name or id of cloud type. EOT end optparse.parse!(args) verify_args!(args:args, optparse:optparse, count:1) connect(options) # construct request params.merge!(parse_query_options(options)) id = args[0] cloud_type = nil if id.to_s !~ /\A\d{1,}\Z/ cloud_type = cloud_type_for_name_or_id(id) if cloud_type.nil? raise_command_error "cloud type not found for name or code '#{id}'" end id = cloud_type['id'] end # execute request @clouds_interface.setopts(options) if options[:dry_run] print_dry_run @clouds_interface.dry.cloud_type(id.to_i) return 0 end json_response = @clouds_interface.cloud_type(id.to_i) # render response render_response(json_response, options, 'zoneType') do cloud_type = json_response['zoneType'] print_h1 "Cloud Type", [], options print cyan #columns = rest_type_column_definitions(options) columns = { "ID" => 'id', "Name" => 'name', "Code" => 'code', "Enabled" => lambda {|it| format_boolean it['enabled'] }, "Provision" => lambda {|it| format_boolean it['provision'] }, "Auto Capacity" => lambda {|it| format_boolean it['autoCapacity'] }, # "Migration Target" => lambda {|it| format_boolean it['migrationTarget'] }, "Datastores" => lambda {|it| format_boolean it['hasDatastores'] }, "Networks" => lambda {|it| format_boolean it['hasNetworks'] }, "Resource Pools" => lambda {|it| format_boolean it['hasResourcePools'] }, "Security Groups" => lambda {|it| format_boolean it['hasSecurityGroups'] }, "Containers" => lambda {|it| format_boolean it['hasContainers'] }, "Bare Metal" => lambda {|it| format_boolean it['hasBareMetal'] }, "Services" => lambda {|it| format_boolean it['hasServices'] }, "Functions" => lambda {|it| format_boolean it['hasFunctions'] }, "Jobs" => lambda {|it| format_boolean it['hasJobs'] }, "Discovery" => lambda {|it| format_boolean it['hasDiscovery'] }, "Cloud Init" => lambda {|it| format_boolean it['hasCloudInit'] }, "Folders" => lambda {|it| format_boolean it['hasFolders'] }, "Floating Ips" => lambda {|it| format_boolean it['hasFloatingIps'] }, # "Marketplace" => lambda {|it| format_boolean it['hasMarketplace'] }, "Public Cloud" => lambda {|it| format_boolean(it['cloud'] == 'public') }, } print_description_list(columns, cloud_type, options) # Option Types option_types = cloud_type['optionTypes'] if option_types && option_types.size > 0 print_h2 "Option Types", options print format_option_types_table(option_types, options, "zone") end print reset,"\n" end end
handle(args)
click to toggle source
# File lib/morpheus/cli/commands/clouds_types.rb, line 17 def handle(args) handle_subcommand(args) end
list(args)
click to toggle source
# File lib/morpheus/cli/commands/clouds_types.rb, line 21 def list(args) options={} params = {} optparse = Morpheus::Cli::OptionParser.new do |opts| opts.banner = subcommand_usage("[search]") build_standard_list_options(opts, options) opts.footer = <<-EOT List cloud types. EOT end optparse.parse!(args) connect(options) if args.count > 0 options[:phrase] = args.join(" ") end params.merge!(parse_list_options(options)) @clouds_interface.setopts(options) if options[:dry_run] print_dry_run @clouds_interface.dry.cloud_types({}) return 0 end json_response = @clouds_interface.cloud_types(params) render_response(json_response, options, 'zoneTypes') do cloud_types = json_response['zoneTypes'] subtitles = [] subtitles += parse_list_subtitles(options) print_h1 "Morpheus Cloud Types", subtitles, options if cloud_types.empty? print cyan,"No cloud types found.",reset,"\n" else print cyan cloud_types = cloud_types.select {|it| it['enabled'] } rows = cloud_types.collect do |cloud_type| {id: cloud_type['id'], name: cloud_type['name'], code: cloud_type['code']} end #print "\n" columns = [:id, :name, :code] columns = options[:include_fields] if options[:include_fields] print as_pretty_table(rows, columns, options) print_results_pagination(json_response) print reset,"\n" end end end