Merge "Improve the pylint score of functest-core"
[functest.git] / functest / ci / check_deployment.py
index e1ad137..ffea6be 100644 (file)
@@ -19,32 +19,36 @@ import logging
 import logging.config
 import os
 import pkg_resources
+from six.moves import urllib
 import socket
-from urlparse import urlparse
 
 from functest.opnfv_tests.openstack.snaps import snaps_utils
 
+from snaps.openstack.tests import openstack_tests
 from snaps.openstack.utils import glance_utils
 from snaps.openstack.utils import keystone_utils
 from snaps.openstack.utils import neutron_utils
 from snaps.openstack.utils import nova_utils
-from snaps.openstack.tests import openstack_tests
 
 __author__ = "Jose Lausuch <jose.lausuch@ericsson.com>"
 
 LOGGER = logging.getLogger(__name__)
 
 
-def verify_connectivity(adress, port):
-    """ Returns true if an ip/port is reachable"""
+def verify_connectivity(endpoint):
+    """ Returns true if an hostname/port is reachable"""
     connection = socket.socket()
     connection.settimeout(10)
+    hostname = urllib.parse.urlparse(endpoint).hostname
+    port = urllib.parse.urlparse(endpoint).port
+    if not port:
+        port = 443 if urllib.parse.urlparse(endpoint).scheme == "https" else 80
     try:
-        connection.connect((adress, port))
-        LOGGER.debug('%s:%s is reachable!', adress, port)
+        connection.connect((hostname, port))
+        LOGGER.debug('%s:%s is reachable!', hostname, port)
         return True
     except socket.error:
-        LOGGER.error('%s:%s is not reachable.', adress, port)
+        LOGGER.exception('%s:%s is not reachable.', hostname, port)
     return False
 
 
@@ -67,8 +71,7 @@ class CheckDeployment(object):
     def check_auth_endpoint(self):
         """ Verifies connectivity to the OS_AUTH_URL given in the RC file """
         rc_endpoint = self.os_creds.auth_url
-        if not (verify_connectivity(urlparse(rc_endpoint).hostname,
-                                    urlparse(rc_endpoint).port)):
+        if not verify_connectivity(rc_endpoint):
             raise Exception("OS_AUTH_URL {} is not reachable.".
                             format(rc_endpoint))
         LOGGER.info("Connectivity to OS_AUTH_URL %s ...OK", rc_endpoint)
@@ -78,8 +81,7 @@ class CheckDeployment(object):
         public_endpoint = keystone_utils.get_endpoint(self.os_creds,
                                                       'identity',
                                                       interface='public')
-        if not (verify_connectivity(urlparse(public_endpoint).hostname,
-                                    urlparse(public_endpoint).port)):
+        if not verify_connectivity(public_endpoint):
             raise Exception("Public endpoint {} is not reachable.".
                             format(public_endpoint))
         LOGGER.info("Connectivity to the public endpoint %s ...OK",
@@ -90,8 +92,7 @@ class CheckDeployment(object):
         endpoint = keystone_utils.get_endpoint(self.os_creds,
                                                service,
                                                interface='public')
-        if not (verify_connectivity(urlparse(endpoint).hostname,
-                                    urlparse(endpoint).port)):
+        if not verify_connectivity(endpoint):
             raise Exception("{} endpoint {} is not reachable.".
                             format(service, endpoint))
         LOGGER.info("Connectivity to endpoint '%s' %s ...OK",
@@ -131,14 +132,14 @@ class CheckDeployment(object):
         """ checks if external network exists """
         ext_net = snaps_utils.get_ext_net_name(self.os_creds)
         if ext_net:
-            LOGGER.info("External network found: %s" % ext_net)
+            LOGGER.info("External network found: %s", ext_net)
         else:
             raise Exception("ERROR: No external networks in the deployment.")
 
     def check_all(self):
         """
         Calls all the class functions and returns 0 if all of them succeed.
-        This is the method called by prepare_env or CLI
+        This is the method called by CLI
         """
         self.check_rc()
         try: