Merge pull request #477 from chrishenry/elb-scheme

Implement Elb Scheme
This commit is contained in:
Steve Pulec 2015-12-03 20:34:45 -05:00
commit 420b705a24
3 changed files with 11 additions and 9 deletions

View File

@ -44,13 +44,14 @@ class FakeBackend(object):
class FakeLoadBalancer(object):
def __init__(self, name, zones, ports):
def __init__(self, name, zones, ports, scheme='internet-facing',):
self.name = name
self.health_check = None
self.instance_ids = []
self.zones = zones
self.listeners = []
self.backends = []
self.scheme = scheme
self.attributes = FakeLoadBalancer.get_default_attributes()
self.policies = Policies()
self.policies.other_policies = []
@ -135,8 +136,8 @@ class ELBBackend(BaseBackend):
def __init__(self):
self.load_balancers = {}
def create_load_balancer(self, name, zones, ports):
new_load_balancer = FakeLoadBalancer(name=name, zones=zones, ports=ports)
def create_load_balancer(self, name, zones, ports, scheme='internet-facing'):
new_load_balancer = FakeLoadBalancer(name=name, zones=zones, ports=ports, scheme=scheme)
self.load_balancers[name] = new_load_balancer
return new_load_balancer

View File

@ -21,17 +21,16 @@ class ELBResponse(BaseResponse):
return elb_backends[self.region]
def create_load_balancer(self):
"""
u'Scheme': [u'internet-facing'],
"""
load_balancer_name = self._get_param('LoadBalancerName')
availability_zones = self._get_multi_param("AvailabilityZones.member")
ports = self._get_list_prefix("Listeners.member")
scheme = self._get_param('Scheme')
self.elb_backend.create_load_balancer(
name=load_balancer_name,
zones=availability_zones,
ports=ports,
scheme=scheme
)
template = self.response_template(CREATE_LOAD_BALANCER_TEMPLATE)
return template.render()
@ -325,7 +324,7 @@ DESCRIBE_LOAD_BALANCERS_TEMPLATE = """<DescribeLoadBalancersResponse xmlns="http
</AvailabilityZones>
<CanonicalHostedZoneName>tests.us-east-1.elb.amazonaws.com</CanonicalHostedZoneName>
<CanonicalHostedZoneNameID>Z3ZONEID</CanonicalHostedZoneNameID>
<Scheme>internet-facing</Scheme>
<Scheme>{{ load_balancer.scheme }}</Scheme>
<DNSName>tests.us-east-1.elb.amazonaws.com</DNSName>
<BackendServerDescriptions>
{% for backend in load_balancer.backends %}

View File

@ -25,11 +25,12 @@ def test_create_load_balancer():
zones = ['us-east-1a', 'us-east-1b']
ports = [(80, 8080, 'http'), (443, 8443, 'tcp')]
conn.create_load_balancer('my-lb', zones, ports)
conn.create_load_balancer('my-lb', zones, ports, scheme='internal')
balancers = conn.get_all_load_balancers()
balancer = balancers[0]
balancer.name.should.equal("my-lb")
balancer.scheme.should.equal("internal")
set(balancer.availability_zones).should.equal(set(['us-east-1a', 'us-east-1b']))
listener1 = balancer.listeners[0]
listener1.load_balancer_port.should.equal(80)
@ -66,6 +67,7 @@ def test_create_load_balancer_with_certificate():
balancers = conn.get_all_load_balancers()
balancer = balancers[0]
balancer.name.should.equal("my-lb")
balancer.scheme.should.equal("internet-facing")
set(balancer.availability_zones).should.equal(set(['us-east-1a']))
listener = balancer.listeners[0]
listener.load_balancer_port.should.equal(443)
@ -544,7 +546,7 @@ def test_set_policies_of_backend_server():
# in a real flow, it is necessary first to create a policy,
# then to set that policy to the backend
lb.create_lb_policy(policy_name, 'ProxyProtocolPolicyType', {'ProxyProtocol': True})
lb.create_lb_policy(policy_name, 'ProxyProtocolPolicyType', {'ProxyProtocol': True})
lb.set_policies_of_backend_server(instance_port, [policy_name])
lb = conn.get_all_load_balancers()[0]