From 7024ee5e3e774e391a8f3fa520827755cffd2e74 Mon Sep 17 00:00:00 2001 From: Tomi Juvonen Date: Wed, 19 Dec 2018 12:45:52 +0200 Subject: [PATCH] Bug: We might not be able to use novaclient maximum supported version When building Fenix into container, we use OpenStack master upper constraints. We get latest novaclient, but Nova server might not be the latest. To use latest possible version, we need to figure out the latest version supported by both server and client. Change-Id: Iebb07202b7e742d9281ec9a1f6b8b522be0f6715 Signed-off-by: Tomi Juvonen --- fenix/workflow/workflows/default.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/fenix/workflow/workflows/default.py b/fenix/workflow/workflows/default.py index 8c0d2d8..9fc4919 100644 --- a/fenix/workflow/workflows/default.py +++ b/fenix/workflow/workflows/default.py @@ -37,14 +37,16 @@ class Workflow(BaseWorkflow): def __init__(self, conf, session_id, data): super(Workflow, self).__init__(conf, session_id, data) - nova_version = nova_max_version.get_string() - if float(nova_version) < 2.53: - LOG.error("%s: initialize failed. Nova version %s too old" % - (self.session_id, nova_version)) - raise Exception("%s: initialize failed. Nova version too old" % - self.session_id) - self.nova = novaclient.Client(nova_version, - session=self.auth_session) + self.nova = novaclient.Client(2.53, session=self.auth_session) + max_nova_server_ver = float(self.nova.versions.get_current().version) + max_nova_client_ver = float(nova_max_version.get_string()) + if max_nova_server_ver > 2.53 and max_nova_client_ver > 2.53: + if max_nova_client_ver <= max_nova_server_ver: + nova_version = max_nova_client_ver + else: + nova_version = max_nova_server_ver + self.nova = novaclient.Client(nova_version, + session=self.auth_session) self._init_update_hosts() LOG.info("%s: initialized" % self.session_id)