Merge pull request #978 from JackDanger/loadbalancers-require-ports

create_load_balancer requires port definitions
This commit is contained in:
Steve Pulec 2017-06-14 20:39:29 -04:00 committed by GitHub
commit 3ce2e4777b
3 changed files with 27 additions and 2 deletions

View File

@ -47,3 +47,11 @@ class DuplicateLoadBalancerName(ELBClientError):
"DuplicateLoadBalancerName",
"The specified load balancer name already exists for this account: {0}"
.format(name))
class EmptyListenersError(ELBClientError):
def __init__(self):
super(EmptyListenersError, self).__init__(
"ValidationError",
"Listeners cannot be empty")

View File

@ -16,10 +16,11 @@ from moto.compat import OrderedDict
from moto.core import BaseBackend, BaseModel
from moto.ec2.models import ec2_backends
from .exceptions import (
LoadBalancerNotFoundError,
TooManyTagsError,
BadHealthCheckDefinition,
DuplicateLoadBalancerName,
EmptyListenersError,
LoadBalancerNotFoundError,
TooManyTagsError,
)
@ -239,6 +240,8 @@ class ELBBackend(BaseBackend):
vpc_id = subnet.vpc_id
if name in self.load_balancers:
raise DuplicateLoadBalancerName(name)
if not ports:
raise EmptyListenersError()
new_load_balancer = FakeLoadBalancer(
name=name, zones=zones, ports=ports, scheme=scheme, subnets=subnets, vpc_id=vpc_id)
self.load_balancers[name] = new_load_balancer

View File

@ -15,7 +15,9 @@ from boto.ec2.elb.policies import (
LBCookieStickinessPolicy,
OtherPolicy,
)
from botocore.exceptions import ClientError
from boto.exception import BotoServerError
from nose.tools import assert_raises
import sure # noqa
from moto import mock_elb, mock_ec2, mock_elb_deprecated, mock_ec2_deprecated
@ -109,6 +111,18 @@ def test_create_and_delete_boto3_support():
'LoadBalancerDescriptions']).should.have.length_of(0)
@mock_elb
def test_create_load_balancer_with_no_listeners_defined():
client = boto3.client('elb', region_name='us-east-1')
with assert_raises(ClientError):
client.create_load_balancer(
LoadBalancerName='my-lb',
Listeners=[],
AvailabilityZones=['us-east-1a', 'us-east-1b']
)
@mock_elb
def test_describe_paginated_balancers():
client = boto3.client('elb', region_name='us-east-1')