class Morpheus::Cli::VdiGatewaysCommand

CLI command VDI Gateway management UI is Tools: VDI Gateways API is /vdi-gateways and returns vdiGateways

Public Instance Methods

_get(id, params, options) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 84
def _get(id, params, options)
  vdi_gateway = nil
  if id.to_s !~ /\A\d{1,}\Z/
    vdi_gateway = find_vdi_gateway_by_name(id)
    return 1, "VDI gateway not found for #{id}" if vdi_gateway.nil?
    id = vdi_gateway['id']
  end
  @vdi_gateways_interface.setopts(options)
  if options[:dry_run]
    print_dry_run @vdi_gateways_interface.dry.get(id, params)
    return
  end
  json_response = @vdi_gateways_interface.get(id, params)
  vdi_gateway = json_response[vdi_gateway_object_key]
  config = vdi_gateway['config'] || {}
  # export just the config as json or yaml (default)
  if options[:show_config]
    unless options[:json] || options[:yaml] || options[:csv]
      options[:yaml] = true
    end
    return render_with_format(config, options)
  end
  render_response(json_response, options, vdi_gateway_object_key) do
    print_h1 "VDI Gateway Details", [], options
    print cyan
    show_columns = vdi_gateway_column_definitions
    show_columns.delete("VDI Apps") unless vdi_gateway['apps']
    show_columns.delete("VDI Gateway") unless vdi_gateway['gateway']
    show_columns.delete("Guest Console Jump Host") unless vdi_gateway['guestConsoleJumpHost']
    show_columns.delete("Guest Console Jump Port") unless vdi_gateway['guestConsoleJumpPort']
    show_columns.delete("Guest Console Jump Username") unless vdi_gateway['guestConsoleJumpUsername']
    show_columns.delete("Guest Console Jump Password") unless vdi_gateway['guestConsoleJumpPassword']
    show_columns.delete("Guest Console Jump Keypair") unless vdi_gateway['guestConsoleJumpKeypair']
    print_description_list(show_columns, vdi_gateway)


    print reset,"\n"
  end
  return 0, nil
end
add(args) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 125
  def add(args)
    options = {}
    params = {}
    optparse = Morpheus::Cli::OptionParser.new do |opts|
      opts.banner = subcommand_usage("[name] [options]")
      build_option_type_options(opts, options, add_vdi_gateway_option_types)
      build_standard_add_options(opts, options)
      opts.footer = <<-EOT
Create a new VDI gateway.
EOT
    end
    optparse.parse!(args)
    verify_args!(args:args, optparse:optparse, min:0, max:1)
    options[:options]['name'] = args[0] if args[0]
    connect(options)
    payload = {}
    if options[:payload]
      payload = options[:payload]
      payload.deep_merge!({vdi_gateway_object_key => parse_passed_options(options)})
    else
      payload.deep_merge!({vdi_gateway_object_key => parse_passed_options(options)})
      v_prompt = Morpheus::Cli::OptionTypes.prompt(add_vdi_gateway_option_types, options[:options], @api_client, options[:params])
      params.deep_merge!(v_prompt)
      params.booleanize!
      payload[vdi_gateway_object_key].deep_merge!(params)
    end
    @vdi_gateways_interface.setopts(options)
    if options[:dry_run]
      print_dry_run @vdi_gateways_interface.dry.create(payload)
      return 0, nil
    end
    json_response = @vdi_gateways_interface.create(payload)
    vdi_gateway = json_response[vdi_gateway_object_key]
    render_response(json_response, options, vdi_gateway_object_key) do
      print_green_success "Added VDI gateway #{vdi_gateway['name']}"
      return _get(vdi_gateway["id"], {}, options)
    end
    return 0, nil
  end
connect(opts) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 16
def connect(opts)
  @api_client = establish_remote_appliance_connection(opts)
  @vdi_gateways_interface = @api_client.vdi_gateways
  @vdi_apps_interface = @api_client.vdi_apps
  @vdi_gateways_interface = @api_client.vdi_gateways
  @option_types_interface = @api_client.option_types
end
get(args) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 63
  def get(args)
    params = {}
    options = {}
    optparse = Morpheus::Cli::OptionParser.new do |opts|
      opts.banner = subcommand_usage("[gateway]")
      build_standard_get_options(opts, options)
      opts.footer = <<-EOT
Get details about a specific VDI gateway.
[gateway] is required. This is the name or id of a VDI gateway.
EOT
    end
    optparse.parse!(args)
    verify_args!(args:args, optparse:optparse, min:1)
    connect(options)
    params.merge!(parse_query_options(options))
    id_list = parse_id_list(args)
    return run_command_for_each_arg(id_list) do |arg|
      _get(arg, params, options)
    end
  end
handle(args) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 24
def handle(args)
  handle_subcommand(args)
end
list(args) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 28
def list(args)
  options = {}
  params = {}
  ref_ids = []
  optparse = Morpheus::Cli::OptionParser.new do |opts|
    opts.banner = subcommand_usage("[search]")
    build_standard_list_options(opts, options)
    opts.footer = "List VDI gateways."
  end
  optparse.parse!(args)
  connect(options)
  if args.count > 0
    options[:phrase] = args.join(" ")
  end
  params.merge!(parse_list_options(options))
  @vdi_gateways_interface.setopts(options)
  if options[:dry_run]
    print_dry_run @vdi_gateways_interface.dry.list(params)
    return
  end
  json_response = @vdi_gateways_interface.list(params)
  render_response(json_response, options, vdi_gateway_list_key) do
    vdi_gateways = json_response[vdi_gateway_list_key]
    print_h1 "Morpheus VDI Gateways", parse_list_subtitles(options), options
    if vdi_gateways.empty?
      print cyan,"No VDI gateways found.",reset,"\n"
    else
      print as_pretty_table(vdi_gateways, vdi_gateway_list_column_definitions.upcase_keys!, options)
      print_results_pagination(json_response)
    end
    print reset,"\n"
  end
  return 0, nil
end
remove(args) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 212
  def remove(args)
    options = {}
    params = {}
    optparse = Morpheus::Cli::OptionParser.new do |opts|
      opts.banner = subcommand_usage("[gateway] [options]")
      build_standard_remove_options(opts, options)
      opts.footer = <<-EOT
Delete a VDI gateway.
[gateway] is required. This is the name or id of a VDI gateway.
EOT
    end
    optparse.parse!(args)
    verify_args!(args:args, optparse:optparse, count:1)
    connect(options)
    vdi_gateway = find_vdi_gateway_by_name_or_id(args[0])
    return 1 if vdi_gateway.nil?
    @vdi_gateways_interface.setopts(options)
    if options[:dry_run]
      print_dry_run @vdi_gateways_interface.dry.destroy(vdi_gateway['id'], params)
      return
    end
    unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to delete the VDI gateway #{vdi_gateway['name']}?")
      return 9, "aborted command"
    end
    json_response = @vdi_gateways_interface.destroy(vdi_gateway['id'], params)
    render_response(json_response, options) do
      print_green_success "Removed VDI gateway #{vdi_gateway['name']}"
    end
    return 0, nil
  end
update(args) click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 165
  def update(args)
    options = {}
    params = {}
    payload = {}
    optparse = Morpheus::Cli::OptionParser.new do |opts|
      opts.banner = subcommand_usage("[gateway] [options]")
      build_option_type_options(opts, options, update_vdi_gateway_option_types)
      build_standard_update_options(opts, options)
      opts.footer = <<-EOT
Update a VDI gateway.
[gateway] is required. This is the name or id of a VDI gateway.
EOT
    end
    optparse.parse!(args)
    verify_args!(args:args, optparse:optparse, count:1)
    connect(options)
    vdi_gateway = find_vdi_gateway_by_name_or_id(args[0])
    return 1 if vdi_gateway.nil?
    payload = {}
    if options[:payload]
      payload = options[:payload]
      payload.deep_merge!({vdi_gateway_object_key => parse_passed_options(options)})
    else
      payload.deep_merge!({vdi_gateway_object_key => parse_passed_options(options)})
      v_prompt = Morpheus::Cli::OptionTypes.no_prompt(update_vdi_gateway_option_types, options[:options], @api_client, options[:params])
      v_prompt.deep_compact!
      params.deep_merge!(v_prompt)
      params.booleanize!
      payload.deep_merge!({vdi_gateway_object_key => params})
      if payload[vdi_gateway_object_key].empty? # || options[:no_prompt]
        raise_command_error "Specify at least one option to update.\n#{optparse}"
      end
    end
    @vdi_gateways_interface.setopts(options)
    if options[:dry_run]
      print_dry_run @vdi_gateways_interface.dry.update(vdi_gateway['id'], payload)
      return
    end
    json_response = @vdi_gateways_interface.update(vdi_gateway['id'], payload)
    vdi_gateway = json_response[vdi_gateway_object_key]
    render_response(json_response, options, vdi_gateway_object_key) do
      print_green_success "Updated VDI gateway #{vdi_gateway['name']}"
      return _get(vdi_gateway["id"], {}, options)
    end
    return 0, nil
  end

Private Instance Methods

add_vdi_gateway_option_types() click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 270
def add_vdi_gateway_option_types
  [
    {'fieldName' => 'name', 'fieldLabel' => 'Name', 'type' => 'text', 'required' => true, 'description' => 'Choose a unique name for the VDI Gateway'},
    {'fieldName' => 'description', 'fieldLabel' => 'Description', 'type' => 'text', 'description' => 'Description'},
    {'fieldName' => 'gatewayUrl', 'fieldLabel' => 'Gateway URL', 'type' => 'text', 'required' => true, 'description' => 'URL of the VDI Gateway'},
  ]
end
update_vdi_gateway_option_types() click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 278
def update_vdi_gateway_option_types
  list = add_vdi_gateway_option_types.collect {|it|
    it.delete('required')
    it.delete('defaultValue')
    it
  }
  list = list.reject {|it| ["type"].include? it['fieldName'] }
  list
end
vdi_gateway_column_definitions() click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 258
def vdi_gateway_column_definitions()
  {
    "ID" => 'id',
    "Name" => 'name',
    "Description" => 'description',
    "Gateway URL" => 'gatewayUrl',
    "API Key" => 'apiKey',
    "Created" => lambda {|it| format_local_dt(it['dateCreated']) },
    "Updated" => lambda {|it| format_local_dt(it['lastUpdated']) },
  }
end
vdi_gateway_list_column_definitions() click to toggle source
# File lib/morpheus/cli/commands/vdi_gateways_command.rb, line 245
def vdi_gateway_list_column_definitions()

  {
    "ID" => 'id',
    "Name" => 'name',
    # "Description" => 'description',
    "Gateway URL" => 'gatewayUrl',
    "API Key" => 'apiKey',
    # "Created" => lambda {|it| format_local_dt(it['dateCreated']) },
    # "Updated" => lambda {|it| format_local_dt(it['lastUpdated']) },
  }
end