X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Fopenstack%2Fopenstack_api_endpoint.py;h=f554f0c505b7b4f21bcb44386af109325e068210;hb=d5c82188ee752265fc6271430f8dbb4dde242b29;hp=127c3e846d845d034ffedc08fd9b6c9946e28b55;hpb=f88a31dacf0bfa8dba7357d866c3e5bdece8c05c;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/openstack/openstack_api_endpoint.py b/src/emuvim/api/openstack/openstack_api_endpoint.py old mode 100644 new mode 100755 index 127c3e8..f554f0c --- a/src/emuvim/api/openstack/openstack_api_endpoint.py +++ b/src/emuvim/api/openstack/openstack_api_endpoint.py @@ -4,6 +4,8 @@ import logging import threading import compute import requests +import socket +import time class OpenstackApiEndpoint(): @@ -55,7 +57,7 @@ class OpenstackApiEndpoint(): logging.info("Connected DCNetwork to API endpoint %s(%s:%d)" % ( self.__class__.__name__, self.ip, self.port)) - def start(self): + def start(self, wait_for_port=False): """ Start all connected OpenStack endpoints that are connected to this API endpoint. """ @@ -66,6 +68,9 @@ class OpenstackApiEndpoint(): thread.daemon = True thread.name = component.__class__ thread.start() + if wait_for_port: + self._wait_for_port(component.ip, component.port) + def stop(self): """ @@ -78,3 +83,14 @@ class OpenstackApiEndpoint(): except: # seems to be stopped pass + + def _wait_for_port(self, ip, port): + for i in range(0, 10): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + s.settimeout(1) # 1 Second Timeout + r = s.connect_ex((ip, port)) + if r == 0: + break # port is open proceed + else: + logging.warning("Waiting for {}:{} ... ({}/10)".format(ip, port, i + 1)) + time.sleep(1)