Merge "SoftwareDeploymentGroup - make path based attributes work"
This commit is contained in:
commit
bdfd84e19d
@ -638,14 +638,16 @@ class SoftwareDeploymentGroup(resource_group.ResourceGroup):
|
||||
def FnGetAtt(self, key, *path):
|
||||
rg = super(SoftwareDeploymentGroup, self)
|
||||
if key == self.STDOUTS:
|
||||
return rg.FnGetAtt(
|
||||
rg.ATTR_ATTRIBUTES, SoftwareDeployment.STDOUT)
|
||||
if key == self.STDERRS:
|
||||
return rg.FnGetAtt(
|
||||
rg.ATTR_ATTRIBUTES, SoftwareDeployment.STDERR)
|
||||
if key == self.STATUS_CODES:
|
||||
return rg.FnGetAtt(
|
||||
rg.ATTR_ATTRIBUTES, SoftwareDeployment.STATUS_CODE)
|
||||
n_attr = SoftwareDeployment.STDOUT
|
||||
elif key == self.STDERRS:
|
||||
n_attr = SoftwareDeployment.STDERR
|
||||
elif key == self.STATUS_CODES:
|
||||
n_attr = SoftwareDeployment.STATUS_CODE
|
||||
else:
|
||||
return None
|
||||
|
||||
rg_attr = rg.FnGetAtt(rg.ATTR_ATTRIBUTES, n_attr)
|
||||
return attributes.select_from_attribute(rg_attr, path)
|
||||
|
||||
|
||||
class SoftwareDeployments(SoftwareDeploymentGroup):
|
||||
|
@ -1279,6 +1279,60 @@ class SoftwareDeploymentGroupTest(common.HeatTestCase):
|
||||
mock.call('deploy_status_code'),
|
||||
])
|
||||
|
||||
server2.FnGetAtt.assert_has_calls([
|
||||
mock.call('deploy_stdout'),
|
||||
mock.call('deploy_stderr'),
|
||||
mock.call('deploy_status_code'),
|
||||
])
|
||||
|
||||
def test_attributes_path(self):
|
||||
stack = utils.parse_stack(self.template)
|
||||
snip = stack.t.resource_definitions(stack)['deploy_mysql']
|
||||
resg = sd.SoftwareDeploymentGroup('test', snip, stack)
|
||||
nested = self.patchobject(resg, 'nested')
|
||||
server1 = mock.MagicMock()
|
||||
server2 = mock.MagicMock()
|
||||
nested.return_value = {
|
||||
'server1': server1,
|
||||
'server2': server2
|
||||
}
|
||||
|
||||
server1.FnGetAtt.return_value = 'Thing happened on server1'
|
||||
server2.FnGetAtt.return_value = 'ouch'
|
||||
self.assertEqual('Thing happened on server1',
|
||||
resg.FnGetAtt('deploy_stdouts', 'server1'))
|
||||
self.assertEqual('ouch',
|
||||
resg.FnGetAtt('deploy_stdouts', 'server2'))
|
||||
|
||||
server1.FnGetAtt.return_value = ''
|
||||
server2.FnGetAtt.return_value = 'Its gone Pete Tong'
|
||||
self.assertEqual('', resg.FnGetAtt('deploy_stderrs', 'server1'))
|
||||
self.assertEqual('Its gone Pete Tong',
|
||||
resg.FnGetAtt('deploy_stderrs', 'server2'))
|
||||
|
||||
server1.FnGetAtt.return_value = 0
|
||||
server2.FnGetAtt.return_value = 1
|
||||
self.assertEqual(0, resg.FnGetAtt('deploy_status_codes', 'server1'))
|
||||
self.assertEqual(1, resg.FnGetAtt('deploy_status_codes', 'server2'))
|
||||
|
||||
server1.FnGetAtt.assert_has_calls([
|
||||
mock.call('deploy_stdout'),
|
||||
mock.call('deploy_stdout'),
|
||||
mock.call('deploy_stderr'),
|
||||
mock.call('deploy_stderr'),
|
||||
mock.call('deploy_status_code'),
|
||||
mock.call('deploy_status_code'),
|
||||
])
|
||||
|
||||
server2.FnGetAtt.assert_has_calls([
|
||||
mock.call('deploy_stdout'),
|
||||
mock.call('deploy_stdout'),
|
||||
mock.call('deploy_stderr'),
|
||||
mock.call('deploy_stderr'),
|
||||
mock.call('deploy_status_code'),
|
||||
mock.call('deploy_status_code'),
|
||||
])
|
||||
|
||||
def test_validate(self):
|
||||
stack = utils.parse_stack(self.template)
|
||||
snip = stack.t.resource_definitions(stack)['deploy_mysql']
|
||||
|
Loading…
Reference in New Issue
Block a user