diff --git a/vmware_nsx/plugins/nsx_v/vshield/common/VcnsApiClient.py b/vmware_nsx/plugins/nsx_v/vshield/common/VcnsApiClient.py index 2d95623357..ff5bd8cf67 100644 --- a/vmware_nsx/plugins/nsx_v/vshield/common/VcnsApiClient.py +++ b/vmware_nsx/plugins/nsx_v/vshield/common/VcnsApiClient.py @@ -170,6 +170,9 @@ class VcnsApiHelper(object): except requests.exceptions.Timeout: raise exceptions.ResourceTimedOut(uri=uri) + except requests.exceptions.ConnectionError: + raise exceptions.ResourceConnectionError(uri=uri) + status = response.status_code if 200 <= status < 300: diff --git a/vmware_nsx/plugins/nsx_v/vshield/common/exceptions.py b/vmware_nsx/plugins/nsx_v/vshield/common/exceptions.py index 4ffdfeea88..b2165444a1 100644 --- a/vmware_nsx/plugins/nsx_v/vshield/common/exceptions.py +++ b/vmware_nsx/plugins/nsx_v/vshield/common/exceptions.py @@ -80,3 +80,7 @@ class ServiceConflict(VcnsApiException): class AlreadyExists(VcnsApiException): message = _("Resource %(resource)s already exists") + + +class ResourceConnectionError(VcnsApiException): + message = _("Resource %(uri)s connection error") diff --git a/vmware_nsx/plugins/nsx_v/vshield/vcns.py b/vmware_nsx/plugins/nsx_v/vshield/vcns.py index 3244efbc9e..b0a22ae61b 100644 --- a/vmware_nsx/plugins/nsx_v/vshield/vcns.py +++ b/vmware_nsx/plugins/nsx_v/vshield/vcns.py @@ -125,6 +125,7 @@ class Vcns(object): self._normalized_global_objects = None @retry_upon_exception(exceptions.ServiceConflict) + @retry_upon_exception(exceptions.ResourceConnectionError) def _client_request(self, client, method, uri, params, headers, encodeParams, timeout=None): return client(method, uri, params, headers, encodeParams,