class Morpheus::Cli::LoadBalancerVirtualServers

Protected Instance Methods

format_virtual_server_status(virtual_server, return_color=cyan) click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 123
def format_virtual_server_status(virtual_server, return_color=cyan)
  out = ""
  status_string = virtual_server['vipStatus'] || virtual_server['status']
  if status_string.nil? || status_string.empty? || status_string == "unknown"
    out << "#{white}UNKNOWN#{return_color}"
  elsif status_string == 'online'
    out << "#{green}#{status_string.upcase}#{return_color}"
  elsif status_string == 'syncing'
    out << "#{yellow}#{status_string.upcase}#{return_color}"
  else
    out << "#{red}#{status_string ? status_string.upcase : 'N/A'}#{virtual_server['statusMessage'] ? "#{return_color} - #{virtual_server['statusMessage']}" : ''}#{return_color}"
  end
  out
end
load_balancer_virtual_server_column_definitions(options) click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 88
def load_balancer_virtual_server_column_definitions(options)
  {
    "ID" => 'id',
    "Name" => 'vipName',
    "Description" => 'description',
    "LB" => lambda {|it| it['loadBalancer'] ? it['loadBalancer']['name'] : '' },
    "Instance" => lambda {|it| it['instance'] ? it['instance']['name'] : '(Unassigned)' },
    "Hostname" => lambda {|it| it['vipHostname'] },
    "VIP" => lambda {|it| it['vipAddress'] },
    "Protocol" => lambda {|it| it['vipProtocol'] },
    "Port" => lambda {|it| it['vipPort'] },
    "SSL" => lambda {|it| format_boolean(it['sslEnabled']) },
    # todo: more properties to show here
    "Status" => lambda {|it| format_virtual_server_status(it) },
    "Created" => lambda {|it| format_local_dt(it['dateCreated']) },
    "Updated" => lambda {|it| format_local_dt(it['lastUpdated']) }
  }
end
load_balancer_virtual_server_label() click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 115
def load_balancer_virtual_server_label
  'Virtual Server'
end
load_balancer_virtual_server_label_plural() click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 119
def load_balancer_virtual_server_label_plural
  'Virtual Servers'
end
load_balancer_virtual_server_list_column_definitions(options) click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 72
def load_balancer_virtual_server_list_column_definitions(options)
  {
    "ID" => 'id',
    "Name" => 'vipName',
    "LB" => lambda {|it| it['loadBalancer'] ? it['loadBalancer']['name'] : '' },
    # "Description" => 'description',
    "Instance" => lambda {|it| it['instance'] ? it['instance']['name'] : '(Unassigned)' },
    "Hostname" => lambda {|it| it['vipHostname'] },
    "VIP" => lambda {|it| it['vipAddress'] },
    "Protocol" => lambda {|it| it['vipProtocol'] },
    "Port" => lambda {|it| it['vipPort'] },
    "SSL" => lambda {|it| format_boolean(it['sslEnabled']) },
    "Status" => lambda {|it| format_virtual_server_status(it) },
  }
end
load_balancer_virtual_server_list_key() click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 111
def load_balancer_virtual_server_list_key
  'loadBalancerInstances'
end
load_balancer_virtual_server_object_key() click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 107
def load_balancer_virtual_server_object_key
  'loadBalancerInstance'
end
load_option_types_for_load_balancer_virtual_server(type_record, parent_record) click to toggle source
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 138
def load_option_types_for_load_balancer_virtual_server(type_record, parent_record)
  load_balancer = parent_record
  load_balancer_type_id = load_balancer['type']['id']
  load_balancer_type = find_by_id(:load_balancer_type, load_balancer_type_id)
  load_balancer_type['vipOptionTypes']
end
parse_list_options!(args, options, params) click to toggle source

# overridden to provide global list functionality without requiring parent argument

def list(args)
  parent_id, parent_record = nil, nil
  params = {}
  options = {}
  optparse = Morpheus::Cli::OptionParser.new do |opts|
    opts.banner = subcommand_usage("[#{rest_parent_arg}] [search]")
    build_list_options(opts, options, params)
    opts.footer = <<-EOT

List #{rest_label_plural.downcase}.

#{rest_parent_arg}

is optional. This is the #{rest_parent_has_name ? ‘name or id’ : ‘id’} of #{a_or_an(rest_parent_label)} #{rest_parent_label.downcase}.

search

is optional. This is a search phrase to filter the results.

EOT

  end
  optparse.parse!(args)
  parent_id = args[0]
  connect(options)
  if parent_id
    args = args[1..-1]
    parent_record = rest_parent_find_by_name_or_id(parent_id)
    if parent_record.nil?
      return 1, "#{rest_parent_label} not found for '#{parent_id}"
    end
    parent_id = parent_record['id']
  end
  parse_list_options!(args, options, params)
  rest_interface.setopts(options)
  if options[:dry_run]
    print_dry_run rest_interface.dry.list(parent_id, params)
    return
  end
  json_response = rest_interface.list(parent_id, params)
  render_response(json_response, options, rest_list_key) do
    records = json_response[rest_list_key]
    print_h1 "Morpheus #{rest_label_plural}"
    if records.nil? || records.empty?
      print cyan,"No #{rest_label_plural.downcase} found.",reset,"\n"
    else
      print as_pretty_table(records, rest_list_column_definitions(options).upcase_keys!, options)
      print_results_pagination(json_response) if json_response['meta']
    end
    print reset,"\n"
  end
  return 0, nil
end
# File lib/morpheus/cli/commands/load_balancer_virtual_servers.rb, line 67
def parse_list_options!(args, options, params)
  parse_parameter_as_resource_id!(:load_balancer, options, params)
  super
end