Adding running checks for neutron.client
The patch adds waiter check for neutron.client in order
to be sure that neutron services are up and running before
execute neutron.client state.
Change-Id: I858c30b2dad81f6b5ee42bda9b3d3379d4265425
Related-PROD: PROD-24685
diff --git a/_modules/neutronv2/common.py b/_modules/neutronv2/common.py
index 7b62122..6f3f56c 100644
--- a/_modules/neutronv2/common.py
+++ b/_modules/neutronv2/common.py
@@ -3,6 +3,8 @@
import os_client_config
import time
+from salt.exceptions import CommandExecutionError
+
log = logging.getLogger(__name__)
NEUTRON_VERSION_HEADER = 'x-openstack-networking-version'
@@ -108,3 +110,32 @@
return resp
return wrapped_f
return wrap
+
+def wait_for_api_ready(cloud_name, retries=1, retry_timeout=10, **kwargs):
+
+ adapter = _get_raw_client(cloud_name)
+ response = None
+ for i in range(1, retries+1):
+ try:
+ response = getattr(adapter, 'get')(
+ '/', connect_retries=retries,
+ **kwargs)
+ except Exception as e:
+ msg = ("Error: %s "
+ "Sleeping for %ss. "
+ "Attempts %s of %s ")
+ log.error(msg % (e, retry_timeout, i, retries))
+ time.sleep(retry_timeout)
+ continue
+ break
+ if not response or not response.content:
+ if e:
+ raise CommandExecutionError(e)
+ else:
+ return {}
+ try:
+ resp = response.json()
+ except ValueError:
+ resp = response.content
+ return resp
+