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
+