diff --git a/heat/engine/resources/instance.py b/heat/engine/resources/instance.py index 9eac3b1beb..e2fc243600 100644 --- a/heat/engine/resources/instance.py +++ b/heat/engine/resources/instance.py @@ -142,14 +142,16 @@ class Instance(resource.Resource): res = self.properties['AvailabilityZone'] elif key == 'PublicIp': res = self._ipaddress() + elif key == 'PrivateIp': + res = self._ipaddress() + elif key == 'PublicDnsName': + res = self._ipaddress() elif key == 'PrivateDnsName': res = self._ipaddress() else: raise exception.InvalidTemplateAttribute(resource=self.name, key=key) - # TODO(asalkeld) PrivateDnsName, PublicDnsName & PrivateIp - logger.info('%s.GetAtt(%s) == %s' % (self.name, key, res)) return unicode(res) diff --git a/heat/tests/test_instance.py b/heat/tests/test_instance.py index 603a85da08..c4243b7769 100644 --- a/heat/tests/test_instance.py +++ b/heat/tests/test_instance.py @@ -122,3 +122,14 @@ class instancesTest(unittest.TestCase): self.assertTrue(instance.resource_id is None) self.assertEqual(instance.state, instance.DELETE_COMPLETE) self.m.VerifyAll() + + AZ = instance.FnGetAtt('AvailabilityZone') + self.assertEqual(AZ, 'nova') + private_ip = instance.FnGetAtt('PublicIp') + self.assertEqual(private_ip, '4.5.6.7') + private_ip = instance.FnGetAtt('PrivateIp') + self.assertEqual(private_ip, '4.5.6.7') + private_ip = instance.FnGetAtt('PrivateDnsName') + self.assertEqual(private_ip, '4.5.6.7') + private_ip = instance.FnGetAtt('PrivateDnsName') + self.assertEqual(private_ip, '4.5.6.7')