create_load_balancer requires port definitions

Throw the appropriate error when defining a loadbalancer with no ports
This commit is contained in:
Jack Danger Canty 2017-06-12 16:42:42 -07:00
commit c8794e842d
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