From f1f64d9e7440fef782d937895e0093d196412ba2 Mon Sep 17 00:00:00 2001 From: Matus Brandys Date: Mon, 19 Aug 2024 22:27:57 +0200 Subject: [PATCH] HPE 3par: getWsApiVersion login/logout After logging in to WSAPI with getWsApiVersion(), ensure you call logout() to prevent exhausting the server's connection limit. This patch corrects a regression introduced by I30f105ee619386f52bc907f5115c08e0fafb9e42 Change-Id: Iec30d048b4b18cb2013005fb36484b2808030690 --- cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py | 2 ++ cinder/volume/drivers/hpe/hpe_3par_common.py | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py b/cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py index 3079dea5cc0..064545147f9 100644 --- a/cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py +++ b/cinder/tests/unit/volume/drivers/hpe/test_hpe3par.py @@ -698,7 +698,9 @@ class HPE3PARBaseDriver(test.TestCase): mock.call.login(HPE3PAR_USER_NAME, HPE3PAR_USER_PASS)] get_id_login = [ + mock.call.login(HPE3PAR_USER_NAME, HPE3PAR_USER_PASS), mock.call.getWsApiVersion(), + mock.call.logout(), mock.call.login(HPE3PAR_USER_NAME, HPE3PAR_USER_PASS), mock.call.getStorageSystemInfo()] diff --git a/cinder/volume/drivers/hpe/hpe_3par_common.py b/cinder/volume/drivers/hpe/hpe_3par_common.py index 14de0fd17a9..9b78ed77af9 100644 --- a/cinder/volume/drivers/hpe/hpe_3par_common.py +++ b/cinder/volume/drivers/hpe/hpe_3par_common.py @@ -310,11 +310,12 @@ class HPE3PARCommon(object): 4.0.20 - Use small QoS Latency value. Bug #2018994 4.0.21 - Fix issue seen during retype/migrate. Bug #2026718 4.0.22 - Fixed clone of replicated volume. Bug #2021941 + 4.0.23 - Fixed login/logout while accessing wsapi. Bug #2068795 """ - VERSION = "4.0.22" + VERSION = "4.0.23" stats = {} @@ -436,8 +437,9 @@ class HPE3PARCommon(object): raise exception.InvalidInput(reason=msg) def client_logout(self): - LOG.debug("Disconnect from 3PAR REST and SSH %s", self.uuid) - self.client.logout() + if self.client is not None: + LOG.debug("Disconnect from 3PAR REST and SSH %s", self.uuid) + self.client.logout() def _create_replication_client(self, remote_array): try: @@ -492,6 +494,8 @@ class HPE3PARCommon(object): if self._replication_enabled: self.client = None raise exception.InvalidInput(ex) + finally: + self.client_logout() if context: # The context is None except at driver startup.