From 211beead8f199e41b4a175bc323ef32fc6af470a Mon Sep 17 00:00:00 2001 From: Christophe Varoqui Date: Mon, 9 Nov 2020 16:04:38 +0100 Subject: [PATCH] Fix the apirequest decorator of the hcs array driver --- opensvc/drivers/array/hcs.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/opensvc/drivers/array/hcs.py b/opensvc/drivers/array/hcs.py index cb7ea72001..b700def358 100644 --- a/opensvc/drivers/array/hcs.py +++ b/opensvc/drivers/array/hcs.py @@ -321,15 +321,19 @@ def _func(self, *args, **kwargs): return _func def apiretry(func): - def _func(self, retry=None, **kwargs): - retry = retry or {} + def _func(self, *args, **kwargs): + try: + retry = kwargs["retry"] + del kwargs["retry"] + except KeyError: + retry = {} count = retry.get("count", 5) delay = retry.get("delay", 5) msg = retry.get("message") common_condition = lambda x: x.get("error", {}).get("messageId") in RETRYABLE_ERROR_MSG_IDS condition = retry.get("condition", lambda: False) for _ in range(count): - data = func(**kwargs) + data = func(self, *args, **kwargs) try: cc = common_condition(data) except Exception: @@ -487,7 +491,7 @@ def proxies(self): return data @apiretry - def delete(self, uri=None, data=None, base="device", retry=None): + def delete(self, uri, data=None, base="device", retry=None): if base == "device": base_path = self.urlpath_device() else: @@ -504,7 +508,7 @@ def delete(self, uri=None, data=None, base="device", retry=None): @apiretry - def put(self, uri=None, data=None, base="device", retry=None): + def put(self, uri, data=None, base="device", retry=None): if base == "device": base_path = self.urlpath_device() else: @@ -519,7 +523,7 @@ def put(self, uri=None, data=None, base="device", retry=None): return result @apiretry - def post(self, uri=None, data=None, auth=True, base="device", retry=None): + def post(self, uri, data=None, auth=True, base="device", retry=None): if base == "device": base_path = self.urlpath_device() else: @@ -537,7 +541,7 @@ def post(self, uri=None, data=None, auth=True, base="device", retry=None): return result @apiretry - def get(self, uri=None, params=None, base="device", retry=None): + def get(self, uri, params=None, base="device", retry=None): if base == "device": base_path = self.urlpath_device() else: