def create_load_balancer(credentials, opts={})
gogrid = new_client(credentials)
balancer, l_instance = nil, nil
safely do
virtip = get_free_ip_from_realm(credentials, opts['realm_id'])
if opts['instance_id']
l_instance = instance(credentials, :id => opts['instance_id'])
real_ip = {
'realiplist.0.port' => opts['listener_instance_port'].to_i,
'realiplist.0.ip' => l_instance ? l_instance.public_addresses.first : ""
}
else
real_ip = false
end
request = {
'name' => opts['name'],
'virtualip.ip' => virtip,
'virtualip.port' => opts['listener_balancer_port'].to_i,
}
request.merge!(real_ip) if real_ip
balancer = gogrid.request('grid/loadbalancer/add', request)['list'].first
end
balancer = convert_load_balancer(credentials, balancer)
balancer.instances = [l_instance] if l_instance
balancer
end