Activity log for bug #1534242

Date Who What changed Old value New value Message
2016-01-14 17:49:51 Guy Paz bug added bug
2016-01-14 17:49:51 Guy Paz attachment added outputsAfterCheckstack.rar https://bugs.launchpad.net/bugs/1534242/+attachment/4550001/+files/outputsAfterCheckstack.rar
2016-01-14 17:53:11 Guy Paz description We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack You will see that B will not get the IP/Name from A like it did when we deploy the stack. We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'.
2016-01-14 18:07:52 Guy Paz description We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'.
2016-01-14 18:12:38 Guy Paz description We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception: log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220
2016-01-14 20:46:12 Guy Paz summary Check stack remove output params value for Template Resource Update stack return empty values value for Template Resource after Check Stack
2016-01-14 20:47:23 Guy Paz description We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value or even fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception: log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value and will fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception:  log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220
2016-01-14 20:52:13 Guy Paz description We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value and will fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Create the stack (you can see that B vm name created with the output IP from A) Remove VM B (that has name IP from A) Check stack (at this point you will see that output from A is empty) Update stack with the original template. You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception:  log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value and will fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Scenario 1: - Create the stack (you can see that B vm name created with the output IP from A) - Execute 'Check Stack'(at this point you will see that output value for A is - empty: Horizon-> Resourse A -> Overview -> Outputs) - Update stack with the original template. - Update Failed Scenario 2: - Create the stack - Remove VM B (that has name IP from A) - Execute 'Check Stack' (at this point you will see that output from A is empty) - Update stack with the original template. - You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception:  log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220
2016-01-14 20:54:05 Guy Paz description We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value and will fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Scenario 1: - Create the stack (you can see that B vm name created with the output IP from A) - Execute 'Check Stack'(at this point you will see that output value for A is - empty: Horizon-> Resourse A -> Overview -> Outputs) - Update stack with the original template. - Update Failed Scenario 2: - Create the stack - Remove VM B (that has name IP from A) - Execute 'Check Stack' (at this point you will see that output from A is empty) - Update stack with the original template. - You will see that B will not get the IP/Name from A like it did when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception:  log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 We are seeing some bad behavior of Heat Stack Check->Update . If user do Check Stack he will lost all Outputs params for Resource Type (Template Resource) For example (Hot Templates attached) , we have Resource B that get some param from Resource A and I m doing Check Stack and then Update Stack – Resource B need to get the param from Resource A and now this param is null/empty, So stack update will use empty value and will fail ! I able to create very simple Heat Template that reproduce this problem. Resource B getting the IP from resource A and create a VM with this name. To reproduce: Scenario 1: - Create the stack (you can see that B vm name created with the output IP from A) - Execute 'Check Stack'(at this point you will see that output value for A is - empty: Horizon-> Resourse A -> Overview -> Outputs) - Update stack with the original template. - Update Failed Scenario 2: - Create the stack - Remove VM B (that has name IP from A) - Execute 'Check Stack' (at this point you will see that output from A is empty) - Update stack with the original template. - You will see that B will not get the IP/Name from A like it was when we deploy the stack. My expectation is that B will created with the same values (name in this case) like he had in 'create'. NOTE that If I ll do only check and then update we are getting update failed since now name is null: "resources.resource_B: BadRequest: resources.server: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36)" and this is the exception:  log_http_response /usr/lib/python2.7/site-packages/glanceclient/common/http.py:136 2016-01-14 20:06:16.255 17722 INFO heat.engine.resource [-] UPDATE: Server "server" [b324dac9-6abd-4795-9f4a-b53de09943f1] Stack "test8-resource_B-sa6xqkai65pq" [1b81f309-d8ac-4acb-9583-f9b6dbfe64e3] 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource Traceback (most recent call last): 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 543, in _action_recorder 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource yield 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 811, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource args=[after, tmpl_diff, prop_diff]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/scheduler.py", line 296, in wrapper 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource step = next(subtask) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resource.py", line 584, in action_handler_task 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource handler_data = handler(*args) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/resources/openstack/nova/server.py", line 1115, in handle_update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.client_plugin().rename(server, prop_diff[self.NAME]) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/heat/engine/clients/os/nova.py", line 348, in rename 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource server.update(name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 55, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource self.manager.update(self, name=name) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/v2/servers.py", line 918, in update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._update("/servers/%s" % base.getid(server), body, "server") 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/base.py", line 174, in _update 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource _resp, body = self.api.client.put(url, body=body) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 456, in put 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource return self._cs_request(url, 'PUT', **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 428, in _cs_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self._time_request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 397, in _time_request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource resp, body = self.request(url, method, **kwargs) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource File "/usr/lib/python2.7/site-packages/novaclient/client.py", line 391, in request 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource raise exceptions.from_response(resp, body, url, method) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource BadRequest: Server name has a minimum character requirement of 1. (HTTP 400) (Request-ID: req-3950e5c0-c04f-4292-b93f-b3b9d24a5a36) 2016-01-14 20:06:16.255 17722 TRACE heat.engine.resource 2016-01-14 20:06:16.261 17722 DEBUG heat.engine.scheduler [-] Task update_task from Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220 2016-01-14 20:06:16.262 17722 DEBUG heat.engine.scheduler [-] Task Stack "test8" [1e3411a3-7e6d-4ba9-99e2-055faa394b82] Update running step /usr/lib/python2.7/site-packages/heat/engine/scheduler.py:220
2016-01-19 11:07:27 Thomas Herve marked as duplicate 1505054