Raise error on duplicate elbv1 listener
AWS returns an error condition when a listener is defined that interferes with an existing listener on the same load balancer port.
This commit is contained in:
parent
7e4a1d0887
commit
98342bfcc3
3 changed files with 24 additions and 0 deletions
|
|
@ -40,6 +40,15 @@ class BadHealthCheckDefinition(ELBClientError):
|
|||
"HealthCheck Target must begin with one of HTTP, TCP, HTTPS, SSL")
|
||||
|
||||
|
||||
class DuplicateListenerError(ELBClientError):
|
||||
|
||||
def __init__(self, name, port):
|
||||
super(DuplicateListenerError, self).__init__(
|
||||
"DuplicateListener",
|
||||
"A listener already exists for {0} with LoadBalancerPort {1}, but with a different InstancePort, Protocol, or SSLCertificateId"
|
||||
.format(name, port))
|
||||
|
||||
|
||||
class DuplicateLoadBalancerName(ELBClientError):
|
||||
|
||||
def __init__(self, name):
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ from moto.ec2.models import ec2_backends
|
|||
from .exceptions import (
|
||||
BadHealthCheckDefinition,
|
||||
DuplicateLoadBalancerName,
|
||||
DuplicateListenerError,
|
||||
EmptyListenersError,
|
||||
LoadBalancerNotFoundError,
|
||||
TooManyTagsError,
|
||||
|
|
@ -257,6 +258,12 @@ class ELBBackend(BaseBackend):
|
|||
ssl_certificate_id = port.get('sslcertificate_id')
|
||||
for listener in balancer.listeners:
|
||||
if lb_port == listener.load_balancer_port:
|
||||
if protocol != listener.protocol:
|
||||
raise DuplicateListenerError(name, lb_port)
|
||||
if instance_port != listener.instance_port:
|
||||
raise DuplicateListenerError(name, lb_port)
|
||||
if ssl_certificate_id != listener.ssl_certificate_id:
|
||||
raise DuplicateListenerError(name, lb_port)
|
||||
break
|
||||
else:
|
||||
balancer.listeners.append(FakeListener(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue