From 9cbb142c2e5b189b8a04073d97087706fa5489b9 Mon Sep 17 00:00:00 2001 From: Danil Golov Date: Tue, 27 Dec 2016 13:04:26 +0300 Subject: [PATCH] Add cluster record to db right after API request This commit changes the incorrect behavior of cluster create workflow. Now db record with status CREATE_IN_PROGRESS is created right after related API request. Change-Id: I11692c4126823d49672ba5172fa45774bf0ce544 Closes-bug: #1640729 --- magnum/conductor/handlers/cluster_conductor.py | 11 +++++++---- .../unit/conductor/handlers/test_cluster_conductor.py | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/magnum/conductor/handlers/cluster_conductor.py b/magnum/conductor/handlers/cluster_conductor.py index 76bf3a0f6b..c531e78ea6 100644 --- a/magnum/conductor/handlers/cluster_conductor.py +++ b/magnum/conductor/handlers/cluster_conductor.py @@ -47,6 +47,10 @@ class Handler(object): osc = clients.OpenStackClients(context) + cluster.status = fields.ClusterStatus.CREATE_IN_PROGRESS + cluster.status_reason = None + cluster.create() + try: # Create trustee/trust and set them to cluster trust_manager.create_trustee_and_trust(osc, cluster) @@ -60,12 +64,12 @@ class Handler(object): cluster) # Create cluster cluster_driver.create_cluster(context, cluster, create_timeout) - cluster.status = fields.ClusterStatus.CREATE_IN_PROGRESS - cluster.status_reason = None + cluster.save() + except Exception as e: cluster.status = fields.ClusterStatus.CREATE_FAILED cluster.status_reason = six.text_type(e) - cluster.create() + cluster.save() conductor_utils.notify_about_cluster_operation( context, taxonomy.ACTION_CREATE, taxonomy.OUTCOME_FAILURE) @@ -75,7 +79,6 @@ class Handler(object): raise e raise - cluster.create() return cluster def cluster_update(self, context, cluster, rollback=False): diff --git a/magnum/tests/unit/conductor/handlers/test_cluster_conductor.py b/magnum/tests/unit/conductor/handlers/test_cluster_conductor.py index e5f1d99ca0..b527b49433 100644 --- a/magnum/tests/unit/conductor/handlers/test_cluster_conductor.py +++ b/magnum/tests/unit/conductor/handlers/test_cluster_conductor.py @@ -396,6 +396,7 @@ class TestHandler(db_base.DbTestCase): mock_heat_poller_class): timeout = 15 self.cluster.cluster_template_id = self.cluster_template.uuid + self.cluster.name = 'cluster1' cluster_name = self.cluster.name mock_poller = mock.MagicMock() mock_poller.poll_and_check.return_value = loopingcall.LoopingCallDone()