Scalr\Tests\Service\Aws\ElbTest::createLoadBalancerGently PHP Method

createLoadBalancerGently() public method

If loadbalancer does exist this function deletes it at first turn, and then recreates with the required options.
public createLoadBalancerGently ( string $loadBalancerName, array | Scalr\Service\Aws\Elb\DataType\ListenerData | Scalr\Service\Aws\Elb\DataType\ListenerDescriptionData | ListenerList $listenersList, array | string | ListDataType $availabilityZonesList = null, array | string | ListDataType $subnetsList = null, array | string | ListDataType $securityGroupsList = null, string $scheme = null ) : Scalr\Service\Aws\Elb\DataType\LoadBalancerDescriptionData
$loadBalancerName string Load Balancer Name
$listenersList array | Scalr\Service\Aws\Elb\DataType\ListenerData | Scalr\Service\Aws\Elb\DataType\ListenerDescriptionData | ListenerList A list of the Listeners
$availabilityZonesList array | string | ListDataType optional A list of Availability Zones
$subnetsList array | string | ListDataType optional A list of subnet IDs in your VPC to attach to your LoadBalancer.
$securityGroupsList array | string | ListDataType optional The security groups assigned to your LoadBalancer within your VPC.
$scheme string optional The type of LoadBalancer
return Scalr\Service\Aws\Elb\DataType\LoadBalancerDescriptionData Returns LoadBalancerDescriptionData.
    public function createLoadBalancerGently($loadBalancerName, $listenersList, $availabilityZonesList = null, $subnetsList = null, $securityGroupsList = null, $scheme = null)
    {
        $tries = 0;
        do {
            try {
                $dnsName = $this->elb->loadBalancer->create($loadBalancerName, $listenersList, $availabilityZonesList, $subnetsList, $securityGroupsList, $scheme);
                $loadBalancer = $this->elb->loadBalancer->describe($loadBalancerName)->get(0);
                break;
            } catch (QueryClientException $e) {
                if ($e->getErrorData()->getCode() != ErrorData::ERR_DUPLICATE_LOAD_BALANCER_NAME) {
                    throw new QueryClientException($e->getErrorData());
                }
                $this->elb->loadBalancer->delete($loadBalancerName);
                $tries++;
            }
        } while ($tries < 2);
        return isset($loadBalancer) ? $loadBalancer : null;
    }