Add proper CFN attribute handling to elbv2.FakeLoadBalancer (#1341)

This commit is contained in:
Hugo Lopes Tavares 2017-11-15 10:11:11 -05:00 committed by Terry Cain
parent 8ee05e22af
commit 7b1ec157b8
2 changed files with 30 additions and 5 deletions

View File

@ -293,11 +293,32 @@ class FakeLoadBalancer(BaseModel):
return load_balancer return load_balancer
def get_cfn_attribute(self, attribute_name): def get_cfn_attribute(self, attribute_name):
attributes = { '''
'DNSName': self.dns_name, Implemented attributes:
'LoadBalancerName': self.name, * DNSName
} * LoadBalancerName
return attributes[attribute_name]
Not implemented:
* CanonicalHostedZoneID
* LoadBalancerFullName
* SecurityGroups
This method is similar to models.py:FakeLoadBalancer.get_cfn_attribute()
'''
from moto.cloudformation.exceptions import UnformattedGetAttTemplateException
not_implemented_yet = [
'CanonicalHostedZoneID',
'LoadBalancerFullName',
'SecurityGroups',
]
if attribute_name == 'DNSName':
return self.dns_name
elif attribute_name == 'LoadBalancerName':
return self.name
elif attribute_name in not_implemented_yet:
raise NotImplementedError('"Fn::GetAtt" : [ "{0}" , "%s" ]"' % attribute_name)
else:
raise UnformattedGetAttTemplateException()
class ELBv2Backend(BaseBackend): class ELBv2Backend(BaseBackend):

View File

@ -2128,6 +2128,10 @@ def test_stack_elbv2_resources_integration():
"Description": "Load balancer name", "Description": "Load balancer name",
"Value": {"Fn::GetAtt": ["alb", "LoadBalancerName"]}, "Value": {"Fn::GetAtt": ["alb", "LoadBalancerName"]},
}, },
"canonicalhostedzoneid": {
"Description": "Load balancer canonical hosted zone ID",
"Value": {"Fn::GetAtt": ["alb", "CanonicalHostedZoneID"]},
},
}, },
"Resources": { "Resources": {
"alb": { "alb": {