class Idcf::Cli::Service::Ilb::BaseServerForProtocol

add/delete

server for protocol

Attributes

api[R]
options[R]

Public Instance Methods

do(api, o, lb_id, protocol, protocol_port, params) click to toggle source

do

@param api [Idcf::Ilb::Lib::Api] @param o [Hash] options @param lb_id [String] @param protocol [Stirng] http @param protocol_port [int] 80 @param params [Hash] {ipaddress: '0.0.0.0', port: 80}

# File lib/idcf/cli/service/ilb/base_server_for_protocol.rb, line 19
def do(api, o, lb_id, protocol, protocol_port, params)
  @api     = api
  @options = o
  lb       = search_lb(lbs, lb_id)
  config   = search_config(lb['configs'], protocol, protocol_port)

  if config.nil?
    not_param = o[:protocol].nil? ? 'conf_id' : 'protocol'
    cli_error "A target isn't found(#{not_param})"
  end

  set_last_command(lb_id, config, params)
  config['servers']
end

Protected Instance Methods

lbs() click to toggle source

get lb list

@return Array in Hash @raise

# File lib/idcf/cli/service/ilb/base_server_for_protocol.rb, line 44
def lbs
  @api.do(:list_loadbalancers)
end
search_config(configs, protocol, p_port) click to toggle source

config search

@param configs [Hash] @param protocol [String] @param p_port [String] @return Hash @raise

# File lib/idcf/cli/service/ilb/base_server_for_protocol.rb, line 72
def search_config(configs, protocol, p_port)
  result = nil
  configs.each do |v|
    next unless target_config?(v, protocol, p_port)
    result = v
    break
  end
  result
end
search_lb(list, id) click to toggle source

search lb target

@param list @param id @return [Hash] @raise

# File lib/idcf/cli/service/ilb/base_server_for_protocol.rb, line 54
def search_lb(list, id)
  lbs = list.select do |v|
    v['id'] == id
  end

  msg = "Target lb_id not found ( #{id} )"
  cli_error msg if lbs.empty?

  lbs[0]
end
set_last_command(_lb_id, _config, _target) click to toggle source
# File lib/idcf/cli/service/ilb/base_server_for_protocol.rb, line 36
def set_last_command(_lb_id, _config, _target)
  cli_error 'override required'
end
target_config?(config, protocol, p_port) click to toggle source

is target config

@param config [Hash] @param protocol [String] @param p_port [String] @return boolean @raise

# File lib/idcf/cli/service/ilb/base_server_for_protocol.rb, line 89
def target_config?(config, protocol, p_port)
  unless config['frontend_protocol'] == protocol && config['port'].to_s == p_port.to_s
    return false
  end
  return true if config['state'].casecmp('running').zero?
  msg = 'The operation is impossible because the target is currently being processed'
  cli_error msg
end