When updating a stack containing a nested stack, the AWS::StackId value expanded in the nested stack is invalid as it ends with '/None' (see logs below). Note that my code is patched with the fix for bug #1240888.
The templates are publicly available:
- stack: http://gitorious.ow2.org/~xlcloud-continuous-integration/xlcloud/heat-resources-ci/blobs/0cc2383eb1e8d19cdf35435d9937df29ac088ca3/templates/stack-blueprints/slurm-stack.yaml
- nested stack: http://gitorious.ow2.org/~xlcloud-continuous-integration/xlcloud/heat-resources-ci/blobs/0cc2383eb1e8d19cdf35435d9937df29ac088ca3/templates/layer-blueprints/slurm-layer.yaml
They are fairly complex so I'll try to come up with simpler ones to demonstrate the bug.
Heat engine logs (with added debug logs):
2013-12-12 11:45:14.088 23557 WARNING heat.engine.resource [-] [update_template_diff_properties] the following keys have raised UpdateReplace for 'Instance "Login"': set([u'Tags'])
2013-12-12 11:45:14.088 23557 WARNING heat.engine.resource [-] [update_template_diff_properties] Properties[Tags]: [{u'Key': u'metering.StackId', u'Value': u'arn:openstack:heat::22f8c2381d104ae7871029e47a956b0c:stacks/HPCVC-Slurm-fh6rvg3g6c2s/None'}]
2013-12-12 11:45:14.649 23557 ERROR heat.engine.resource [-] CREATE : Instance "Login"
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource Traceback (most recent call last):
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/src/heat/heat/engine/resource.py", line 369, in _do_action
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource handle_data = handle()
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/src/heat/heat/engine/resources/instance.py", line 362, in handle_create
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource availability_zone=availability_zone)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/v1_1/servers.py", line 658, in create
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource **boot_kwargs)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/base.py", line 402, in _boot
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource return_raw=return_raw, **kwargs)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/base.py", line 145, in _create
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource _resp, body = self.api.client.post(url, body=body)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/client.py", line 232, in post
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource return self._cs_request(url, 'POST', **kwargs)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/client.py", line 213, in _cs_request
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource **kwargs)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/client.py", line 195, in _time_request
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource File "/usr/local/heat/local/lib/python2.7/site-packages/novaclient/client.py", line 189, in request
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource ClientException: The server has either erred or is incapable of performing the requested operation. (HTTP 500) (Request-ID: req-d5a9a7a1-224c-4a55-9a1e-08e2798ff3ec)
2013-12-12 11:45:14.649 23557 TRACE heat.engine.resource
2013-12-12 11:45:14.708 23557 ERROR heat.engine.resource [-] update NestedStack "Slurm" : Nested stack update failed: ClientException: The server has either erred or is incapable of performing the requested operation. (HTTP 500) (Request-ID: req-d5a9a7a1-224c-4a55-9a1e-08e2798ff3ec)
2013-12-12 11:45:14.708 23557 TRACE heat.engine.resource Traceback (most recent call last):
2013-12-12 11:45:14.708 23557 TRACE heat.engine.resource File "/usr/src/heat/heat/engine/resource.py", line 443, in update
2013-12-12 11:45:14.708 23557 TRACE heat.engine.resource while not self.check_update_complete(handle_data):
2013-12-12 11:45:14.708 23557 TRACE heat.engine.resource File "/usr/src/heat/heat/engine/stack_resource.py", line 174, in check_update_complete
2013-12-12 11:45:14.708 23557 TRACE heat.engine.resource nested_stack.status_reason)
2013-12-12 11:45:14.708 23557 TRACE heat.engine.resource Error: Nested stack update failed: ClientException: The server has either erred or is incapable of performing the requested operation. (HTTP 500) (Request-ID: req-d5a9a7a1-224c-4a55-9a1e-08e2798ff3ec)
Fix proposed to branch: master /review. openstack. org/62388
Review: https:/