class Chef::Knife::OneandoneLoadbalancerCreate

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/oneandone_loadbalancer_create.rb, line 86
def run
  $stdout.sync = true

  validate(config[:name], '-n NAME')
  validate(config[:protocol], 'at least one value for --protocol [PROTOCOL]')

  protocols = split_delimited_input(config[:protocol])
  ports_balancer = split_delimited_input(config[:port_balancer])
  ports_server = split_delimited_input(config[:port_server])
  sources = split_delimited_input(config[:source])

  validate_rules(protocols, ports_balancer, ports_server)

  rules = []

  for i in 0..(protocols.length - 1)
    rule = {
      'protocol' => protocols[i].upcase,
      'port_balancer' => ports_balancer[i].to_i,
      'port_server' => ports_server[i].to_i,
      'source' => sources[i]
    }
    rules << rule
  end

  init_client

  load_balancer = OneAndOne::LoadBalancer.new
  response = load_balancer.create(
    name: config[:name],
    description: config[:description],
    health_check_test: config[:health_check].to_s.upcase,
    health_check_interval: config[:health_int].to_i,
    persistence: config[:persistence],
    persistence_time: config[:persistence_int].to_i,
    method: config[:method].to_s.upcase,
    rules: rules,
    health_check_path: config[:health_path],
    health_check_parse: config[:health_regex],
    datacenter_id: config[:datacenter_id]
  )

  if config[:wait]
    puts ui.color('Creating, wait for the operation to complete...', :cyan).to_s
    load_balancer.wait_for
    formated_output(load_balancer.get, true)
    puts "Load balancer #{response['id']} is #{ui.color('created', :bold)}"
  else
    formated_output(response, true)
    puts "Load balancer #{response['id']} is #{ui.color('being created', :bold)}"
  end
end
validate_rules(protocols, ports_balancer, ports_server) click to toggle source
# File lib/chef/knife/oneandone_loadbalancer_create.rb, line 139
def validate_rules(protocols, ports_balancer, ports_server)
  if (ports_balancer.length != ports_server.length) || (ports_balancer.length != protocols.length)
    ui.error('You must supply equal number of --protocol, --port-balancer and --port-server values!')
    exit 1
  end
end