def FnGetRefId(self):
return unicode(self.name)
+ def FnGetAtt(self, key):
+ '''
+ heat extension: "InstanceList" returns comma delimited list of server
+ ip addresses.
+ '''
+ if key == 'InstanceList':
+ if self.resource_id is None:
+ return ''
+ name_list = sorted(self.resource_id.split(','))
+ inst_list = []
+ for name in name_list:
+ inst = self._make_instance(name)
+ inst_list.append(inst.FnGetAtt('PublicIp'))
+ return unicode(','.join(inst_list))
+
class AutoScalingGroup(InstanceGroup, CooldownMixin):
tags_schema = {'Key': {'Type': 'String',
# start with min then delete
self._stub_create(1)
+ self.m.StubOutWithMock(instance.Instance, 'FnGetAtt')
+ instance.Instance.FnGetAtt('PublicIp').AndReturn('1.2.3.4')
+
self.m.ReplayAll()
resource = self.create_instance_group(t, stack, 'JobServerGroup')
self.assertEqual('JobServerGroup', resource.FnGetRefId())
+ self.assertEqual('1.2.3.4', resource.FnGetAtt('InstanceList'))
self.assertEqual('JobServerGroup-0', resource.resource_id)
self.assertEqual(asc.InstanceGroup.UPDATE_REPLACE,
resource.handle_update({}))
self.m.VerifyAll()
- def test_upate_size(self):
+ def test_update_size(self):
t = self.load_template()
properties = t['Resources']['JobServerGroup']['Properties']
properties['Size'] = '2'
# Increase min size to 5
self._stub_create(3)
+ self.m.StubOutWithMock(instance.Instance, 'FnGetAtt')
+ instance.Instance.FnGetAtt('PublicIp').AndReturn('10.0.0.2')
+ instance.Instance.FnGetAtt('PublicIp').AndReturn('10.0.0.3')
+ instance.Instance.FnGetAtt('PublicIp').AndReturn('10.0.0.4')
+ instance.Instance.FnGetAtt('PublicIp').AndReturn('10.0.0.5')
+ instance.Instance.FnGetAtt('PublicIp').AndReturn('10.0.0.6')
+
self.m.ReplayAll()
update_snippet = copy.deepcopy(resource.parsed_template())
assert_str = ','.join(['JobServerGroup-%s' % x for x in range(5)])
self.assertEqual(assert_str,
resource.resource_id)
+ self.assertEqual('10.0.0.2,10.0.0.3,10.0.0.4,10.0.0.5,10.0.0.6',
+ resource.FnGetAtt('InstanceList'))
resource.delete()
self.m.VerifyAll()