Update linters and fix all new issues
[functest.git] / functest / opnfv_tests / sdn / odl / odl.py
index 6c05c01..72c38ce 100644 (file)
@@ -25,11 +25,12 @@ import os
 import re
 import sys
 
+import os_client_config
 from six.moves import urllib
+from xtesting.core import robotframework
 
-from functest.core import robotframework
-from functest.utils import constants
-import functest.utils.openstack_utils as op_utils
+from functest.utils import config
+from functest.utils import env
 
 __author__ = "Cedric Ollivier <cedric.ollivier@orange.com>"
 
@@ -37,7 +38,7 @@ __author__ = "Cedric Ollivier <cedric.ollivier@orange.com>"
 class ODLTests(robotframework.RobotFramework):
     """ODL test runner."""
 
-    odl_test_repo = constants.CONST.__getattribute__('dir_repo_odl_test')
+    odl_test_repo = getattr(config.CONF, 'dir_repo_odl_test')
     neutron_suite_dir = os.path.join(
         odl_test_repo, "csit/suites/openstack/neutron")
     basic_suite_dir = os.path.join(
@@ -48,9 +49,9 @@ class ODLTests(robotframework.RobotFramework):
     __logger = logging.getLogger(__name__)
 
     def __init__(self, **kwargs):
-        super(ODLTests, self).__init__(**kwargs)
+        super().__init__(**kwargs)
         self.res_dir = os.path.join(
-            constants.CONST.__getattribute__('dir_results'), 'odl')
+            getattr(config.CONF, 'dir_results'), 'odl')
         self.xml_file = os.path.join(self.res_dir, 'output.xml')
 
     @classmethod
@@ -65,10 +66,10 @@ class ODLTests(robotframework.RobotFramework):
         try:
             for line in fileinput.input(cls.odl_variables_file,
                                         inplace=True):
-                print(re.sub("@{AUTH}.*",
-                             "@{{AUTH}}           {}    {}".format(
-                                 odlusername, odlpassword),
-                             line.rstrip()))
+                print(re.sub(
+                    "@{AUTH}.*",
+                    f"@{{AUTH}}           {odlusername}    {odlpassword}",
+                    line.rstrip()))
             return True
         except Exception:  # pylint: disable=broad-except
             cls.__logger.exception("Cannot set ODL creds:")
@@ -110,9 +111,8 @@ class ODLTests(robotframework.RobotFramework):
             odlusername = kwargs['odlusername']
             odlpassword = kwargs['odlpassword']
             osauthurl = kwargs['osauthurl']
-            keystoneurl = "{}://{}".format(
-                urllib.parse.urlparse(osauthurl).scheme,
-                urllib.parse.urlparse(osauthurl).netloc)
+            keystoneurl = (f"{urllib.parse.urlparse(osauthurl).scheme}://"
+                           f"{urllib.parse.urlparse(osauthurl).netloc}")
             variable = ['KEYSTONEURL:' + keystoneurl,
                         'NEUTRONURL:' + kwargs['neutronurl'],
                         'OS_AUTH_URL:"' + osauthurl + '"',
@@ -134,12 +134,12 @@ class ODLTests(robotframework.RobotFramework):
         else:
             if not self.set_robotframework_vars(odlusername, odlpassword):
                 return self.EX_RUN_ERROR
-        return super(ODLTests, self).run(variable=variable, suites=suites)
+        return super().run(variable=variable, suites=suites)
 
     def run(self, **kwargs):
         """Run suites in OPNFV environment
 
-        It basically check env vars to call main() with the keywords
+        It basically checks env vars to call main() with the keywords
         required.
 
         Args:
@@ -155,17 +155,19 @@ class ODLTests(robotframework.RobotFramework):
                 suites = kwargs["suites"]
             except KeyError:
                 pass
-            kwargs = {'neutronurl': op_utils.get_endpoint(
-                service_type='network')}
-            kwargs['odlip'] = urllib.parse.urlparse(
-                kwargs['neutronurl']).hostname
-            kwargs['odlwebport'] = '8080'
-            kwargs['odlrestconfport'] = '8181'
-            kwargs['odlusername'] = 'admin'
-            kwargs['odlpassword'] = 'admin'
-            installer_type = None
-            if 'INSTALLER_TYPE' in os.environ:
-                installer_type = os.environ['INSTALLER_TYPE']
+            cloud = os_client_config.make_shade()
+            neutron_id = cloud.search_services('neutron')[0].id
+            endpoint = cloud.search_endpoints(
+                filters={
+                    'interface': os.environ.get(
+                        'OS_INTERFACE', 'public').replace('URL', ''),
+                    'service_id': neutron_id})[0].url
+            kwargs = {'neutronurl': endpoint}
+            kwargs['odlip'] = env.get('SDN_CONTROLLER_IP')
+            kwargs['odlwebport'] = env.get('SDN_CONTROLLER_WEBPORT')
+            kwargs['odlrestconfport'] = env.get('SDN_CONTROLLER_RESTCONFPORT')
+            kwargs['odlusername'] = env.get('SDN_CONTROLLER_USER')
+            kwargs['odlpassword'] = env.get('SDN_CONTROLLER_PASSWORD')
             kwargs['osusername'] = os.environ['OS_USERNAME']
             kwargs['osuserdomainname'] = os.environ.get(
                 'OS_USER_DOMAIN_NAME', 'Default')
@@ -174,27 +176,10 @@ class ODLTests(robotframework.RobotFramework):
                 'OS_PROJECT_DOMAIN_NAME', 'Default')
             kwargs['osauthurl'] = os.environ['OS_AUTH_URL']
             kwargs['ospassword'] = os.environ['OS_PASSWORD']
-            if installer_type == 'fuel':
-                kwargs['odlwebport'] = '8181'
-                kwargs['odlrestconfport'] = '8282'
-            elif installer_type == 'apex' or installer_type == 'netvirt':
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
-                kwargs['odlwebport'] = '8081'
-                kwargs['odlrestconfport'] = '8081'
-            elif installer_type == 'joid':
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER']
-            elif installer_type == 'compass':
-                kwargs['odlrestconfport'] = '8080'
-            elif installer_type == 'daisy':
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
-                kwargs['odlwebport'] = '8181'
-                kwargs['odlrestconfport'] = '8087'
-            else:
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
+            assert kwargs['odlip']
         except KeyError as ex:
-            self.__logger.error("Cannot run ODL testcases. "
-                                "Please check env var: "
-                                "%s", str(ex))
+            self.__logger.error(
+                "Cannot run ODL testcases. Please check env var: %s", str(ex))
             return self.EX_RUN_ERROR
         except Exception:  # pylint: disable=broad-except
             self.__logger.exception("Cannot run ODL testcases.")
@@ -203,7 +188,7 @@ class ODLTests(robotframework.RobotFramework):
         return self.run_suites(suites, **kwargs)
 
 
-class ODLParser(object):  # pylint: disable=too-few-public-methods
+class ODLParser():  # pylint: disable=too-few-public-methods
     """Parser to run ODL test suites."""
 
     def __init__(self):
@@ -274,7 +259,6 @@ def main():
             return result
         if args['pushtodb']:
             return odl.push_to_db()
-        else:
-            return result
+        return result
     except Exception:  # pylint: disable=broad-except
         return robotframework.RobotFramework.EX_RUN_ERROR