Merge "Do not return None when get_attr if res is in SNAPSHOT/CHECK"
This commit is contained in:
commit
709f53bd10
@ -191,7 +191,7 @@ class GetAtt(function.Function):
|
|||||||
|
|
||||||
r = self._resource()
|
r = self._resource()
|
||||||
if r.action in (r.CREATE, r.ADOPT, r.SUSPEND, r.RESUME,
|
if r.action in (r.CREATE, r.ADOPT, r.SUSPEND, r.RESUME,
|
||||||
r.UPDATE, r.ROLLBACK):
|
r.UPDATE, r.ROLLBACK, r.SNAPSHOT, r.CHECK):
|
||||||
return r.FnGetAtt(attribute)
|
return r.FnGetAtt(attribute)
|
||||||
# NOTE(sirushtim): Add r.INIT to states above once convergence
|
# NOTE(sirushtim): Add r.INIT to states above once convergence
|
||||||
# is the default.
|
# is the default.
|
||||||
|
@ -157,7 +157,7 @@ class GetAtt(GetAttThenSelect):
|
|||||||
r = self._resource()
|
r = self._resource()
|
||||||
if (r.status in (r.IN_PROGRESS, r.COMPLETE) and
|
if (r.status in (r.IN_PROGRESS, r.COMPLETE) and
|
||||||
r.action in (r.CREATE, r.ADOPT, r.SUSPEND, r.RESUME,
|
r.action in (r.CREATE, r.ADOPT, r.SUSPEND, r.RESUME,
|
||||||
r.UPDATE)):
|
r.UPDATE, r.CHECK, r.SNAPSHOT)):
|
||||||
return r.FnGetAtt(attribute, *path_components)
|
return r.FnGetAtt(attribute, *path_components)
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
@ -66,6 +66,13 @@ resources:
|
|||||||
type: GenericResourceType
|
type: GenericResourceType
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
hot_tpl_generic_resource_20141016 = template_format.parse('''
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
resources:
|
||||||
|
resource1:
|
||||||
|
type: GenericResourceType
|
||||||
|
''')
|
||||||
|
|
||||||
hot_tpl_generic_resource_all_attrs = template_format.parse('''
|
hot_tpl_generic_resource_all_attrs = template_format.parse('''
|
||||||
heat_template_version: 2015-10-15
|
heat_template_version: 2015-10-15
|
||||||
resources:
|
resources:
|
||||||
@ -87,6 +94,13 @@ resources:
|
|||||||
type: ResourceWithComplexAttributesType
|
type: ResourceWithComplexAttributesType
|
||||||
''')
|
''')
|
||||||
|
|
||||||
|
hot_tpl_complex_attrs_20141016 = template_format.parse('''
|
||||||
|
heat_template_version: 2014-10-16
|
||||||
|
resources:
|
||||||
|
resource1:
|
||||||
|
type: ResourceWithComplexAttributesType
|
||||||
|
''')
|
||||||
|
|
||||||
hot_tpl_mapped_props = template_format.parse('''
|
hot_tpl_mapped_props = template_format.parse('''
|
||||||
heat_template_version: 2013-05-23
|
heat_template_version: 2013-05-23
|
||||||
resources:
|
resources:
|
||||||
@ -1291,6 +1305,7 @@ class StackAttributesTest(common.HeatTestCase):
|
|||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
|
|
||||||
scenarios = [
|
scenarios = [
|
||||||
|
# for hot template 2013-05-23, get_attr: hot_funcs.GetAttThenSelect
|
||||||
('get_flat_attr',
|
('get_flat_attr',
|
||||||
dict(hot_tpl=hot_tpl_generic_resource,
|
dict(hot_tpl=hot_tpl_generic_resource,
|
||||||
snippet={'Value': {'get_attr': ['resource1', 'foo']}},
|
snippet={'Value': {'get_attr': ['resource1', 'foo']}},
|
||||||
@ -1337,6 +1352,59 @@ class StackAttributesTest(common.HeatTestCase):
|
|||||||
nested_dict['dict']['a']})),
|
nested_dict['dict']['a']})),
|
||||||
('get_attr_none',
|
('get_attr_none',
|
||||||
dict(hot_tpl=hot_tpl_complex_attrs,
|
dict(hot_tpl=hot_tpl_complex_attrs,
|
||||||
|
snippet={'Value': {'get_attr': ['resource1',
|
||||||
|
'none',
|
||||||
|
'who_cares']}},
|
||||||
|
resource_name='resource1',
|
||||||
|
expected={'Value': None})),
|
||||||
|
# for hot template version 2014-10-16 and 2015-04-30,
|
||||||
|
# get_attr: hot_funcs.GetAtt
|
||||||
|
('get_flat_attr',
|
||||||
|
dict(hot_tpl=hot_tpl_generic_resource_20141016,
|
||||||
|
snippet={'Value': {'get_attr': ['resource1', 'foo']}},
|
||||||
|
resource_name='resource1',
|
||||||
|
expected={'Value': 'resource1'})),
|
||||||
|
('get_list_attr',
|
||||||
|
dict(hot_tpl=hot_tpl_complex_attrs_20141016,
|
||||||
|
snippet={'Value': {'get_attr': ['resource1', 'list', 0]}},
|
||||||
|
resource_name='resource1',
|
||||||
|
expected={
|
||||||
|
'Value':
|
||||||
|
generic_rsrc.ResourceWithComplexAttributes.list[0]})),
|
||||||
|
('get_flat_dict_attr',
|
||||||
|
dict(hot_tpl=hot_tpl_complex_attrs_20141016,
|
||||||
|
snippet={'Value': {'get_attr': ['resource1',
|
||||||
|
'flat_dict',
|
||||||
|
'key2']}},
|
||||||
|
resource_name='resource1',
|
||||||
|
expected={
|
||||||
|
'Value':
|
||||||
|
generic_rsrc.ResourceWithComplexAttributes.
|
||||||
|
flat_dict['key2']})),
|
||||||
|
('get_nested_attr_list',
|
||||||
|
dict(hot_tpl=hot_tpl_complex_attrs_20141016,
|
||||||
|
snippet={'Value': {'get_attr': ['resource1',
|
||||||
|
'nested_dict',
|
||||||
|
'list',
|
||||||
|
0]}},
|
||||||
|
resource_name='resource1',
|
||||||
|
expected={
|
||||||
|
'Value':
|
||||||
|
generic_rsrc.ResourceWithComplexAttributes.
|
||||||
|
nested_dict['list'][0]})),
|
||||||
|
('get_nested_attr_dict',
|
||||||
|
dict(hot_tpl=hot_tpl_complex_attrs_20141016,
|
||||||
|
snippet={'Value': {'get_attr': ['resource1',
|
||||||
|
'nested_dict',
|
||||||
|
'dict',
|
||||||
|
'a']}},
|
||||||
|
resource_name='resource1',
|
||||||
|
expected={
|
||||||
|
'Value':
|
||||||
|
generic_rsrc.ResourceWithComplexAttributes.
|
||||||
|
nested_dict['dict']['a']})),
|
||||||
|
('get_attr_none',
|
||||||
|
dict(hot_tpl=hot_tpl_complex_attrs_20141016,
|
||||||
snippet={'Value': {'get_attr': ['resource1',
|
snippet={'Value': {'get_attr': ['resource1',
|
||||||
'none',
|
'none',
|
||||||
'who_cares']}},
|
'who_cares']}},
|
||||||
@ -1360,8 +1428,16 @@ class StackAttributesTest(common.HeatTestCase):
|
|||||||
(rsrc.CREATE, rsrc.COMPLETE),
|
(rsrc.CREATE, rsrc.COMPLETE),
|
||||||
(rsrc.RESUME, rsrc.IN_PROGRESS),
|
(rsrc.RESUME, rsrc.IN_PROGRESS),
|
||||||
(rsrc.RESUME, rsrc.COMPLETE),
|
(rsrc.RESUME, rsrc.COMPLETE),
|
||||||
|
(rsrc.SUSPEND, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.SUSPEND, rsrc.COMPLETE),
|
||||||
(rsrc.UPDATE, rsrc.IN_PROGRESS),
|
(rsrc.UPDATE, rsrc.IN_PROGRESS),
|
||||||
(rsrc.UPDATE, rsrc.COMPLETE)):
|
(rsrc.UPDATE, rsrc.COMPLETE),
|
||||||
|
(rsrc.SNAPSHOT, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.SNAPSHOT, rsrc.COMPLETE),
|
||||||
|
(rsrc.CHECK, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.CHECK, rsrc.COMPLETE),
|
||||||
|
(rsrc.ADOPT, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.ADOPT, rsrc.COMPLETE)):
|
||||||
rsrc.state_set(action, status)
|
rsrc.state_set(action, status)
|
||||||
|
|
||||||
resolved = function.resolve(self.stack.t.parse(self.stack,
|
resolved = function.resolve(self.stack.t.parse(self.stack,
|
||||||
@ -2001,8 +2077,16 @@ class TestGetAttAllAttributes(common.HeatTestCase):
|
|||||||
(rsrc.CREATE, rsrc.COMPLETE),
|
(rsrc.CREATE, rsrc.COMPLETE),
|
||||||
(rsrc.RESUME, rsrc.IN_PROGRESS),
|
(rsrc.RESUME, rsrc.IN_PROGRESS),
|
||||||
(rsrc.RESUME, rsrc.COMPLETE),
|
(rsrc.RESUME, rsrc.COMPLETE),
|
||||||
|
(rsrc.SUSPEND, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.SUSPEND, rsrc.COMPLETE),
|
||||||
(rsrc.UPDATE, rsrc.IN_PROGRESS),
|
(rsrc.UPDATE, rsrc.IN_PROGRESS),
|
||||||
(rsrc.UPDATE, rsrc.COMPLETE)):
|
(rsrc.UPDATE, rsrc.COMPLETE),
|
||||||
|
(rsrc.SNAPSHOT, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.SNAPSHOT, rsrc.COMPLETE),
|
||||||
|
(rsrc.CHECK, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.CHECK, rsrc.COMPLETE),
|
||||||
|
(rsrc.ADOPT, rsrc.IN_PROGRESS),
|
||||||
|
(rsrc.ADOPT, rsrc.COMPLETE)):
|
||||||
rsrc.state_set(action, status)
|
rsrc.state_set(action, status)
|
||||||
|
|
||||||
if self.raises is not None:
|
if self.raises is not None:
|
||||||
|
Loading…
Reference in New Issue
Block a user