From 797f0157d63a9543079a3d91347f7a27293629c6 Mon Sep 17 00:00:00 2001 From: Spyros Trigazis Date: Fri, 13 Jul 2018 13:12:17 +0200 Subject: [PATCH] Resolve stack outputs only on COMPLETE While the stack is not COMPLETE, we do not need to resolve the outputs of the stack. Resolving the outputs is expensive for large stacks. story: 2002959 task: 22961 Change-Id: I26861214bba8cc92f4e7f9ecba5ba51df99346cb Signed-off-by: Spyros Trigazis --- magnum/drivers/heat/driver.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/magnum/drivers/heat/driver.py b/magnum/drivers/heat/driver.py index 7d1aff4f04..afec2d4589 100755 --- a/magnum/drivers/heat/driver.py +++ b/magnum/drivers/heat/driver.py @@ -192,8 +192,10 @@ class HeatPoller(object): # TODO(yuanying): temporary implementation to update api_address, # node_addresses and cluster status try: + # Do not resolve outputs by default. Resolving all + # node IPs is expensive on heat. stack = self.openstack_client.heat().stacks.get( - self.cluster.stack_id) + self.cluster.stack_id, resolve_outputs=False) except heatexc.NotFound: self._sync_missing_heat_stack() return @@ -205,6 +207,10 @@ class HeatPoller(object): if stack.stack_status in (fields.ClusterStatus.CREATE_COMPLETE, fields.ClusterStatus.UPDATE_COMPLETE): + # Resolve all outputs if the stack is COMPLETE + stack = self.openstack_client.heat().stacks.get( + self.cluster.stack_id, resolve_outputs=True) + self._sync_cluster_and_template_status(stack) elif stack.stack_status != self.cluster.status: self._sync_cluster_status(stack)