From 88a6e3bab5f4af92ea4700580af05f5c20ab64f6 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Tue, 4 Jul 2017 19:24:28 +0100 Subject: [PATCH] Don't poll heat if no stack exists Cluster objects are created asynchronously from their underlying heat stacks, meaning that the periodic update can sometimes end up trying to poll a cluster's heat stack before the stack has been created. This change checks whether the stack_id is None and skips polling heat if so. This has the side effect of resolving bug 1682058, since we don't try to use a trust and trustee that do not exist. Change-Id: I73f039659250f1d5b69b23141835c4602c8e019a Closes-Bug: #1682058 --- magnum/drivers/heat/driver.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/magnum/drivers/heat/driver.py b/magnum/drivers/heat/driver.py index daa7c9bcf6..e9a34ac0ae 100755 --- a/magnum/drivers/heat/driver.py +++ b/magnum/drivers/heat/driver.py @@ -72,6 +72,11 @@ class HeatDriver(driver.Driver): raise NotImplementedError("Must implement 'get_template_definition'") def update_cluster_status(self, context, cluster): + if cluster.stack_id is None: + # NOTE(mgoddard): During cluster creation it is possible to poll + # the cluster before its heat stack has been created. See bug + # 1682058. + return stack_ctx = mag_ctx.make_cluster_context(cluster) poller = HeatPoller(clients.OpenStackClients(stack_ctx), context, cluster, self)