refstack: bugfix of testcase failure
[functest.git] / functest / core / vnf_base.py
index 44b4ae0..f5e8605 100644 (file)
@@ -40,7 +40,8 @@ class VnfOnBoardingBase(base.TestcaseBase):
             self.tenant_description = CONST.__getattribute__(
                 'vnf_{}_tenant_description'.format(self.case_name))
         except:
-            raise Exception("Unknown VNF case=" + self.case_name)
+            # raise Exception("Unknown VNF case=" + self.case_name)
+            self.logger.error("Unknown VNF case={}".format(self.case_name))
 
         try:
             self.images = CONST.__getattribute__(
@@ -51,8 +52,13 @@ class VnfOnBoardingBase(base.TestcaseBase):
     def execute(self):
         self.start_time = time.time()
         # Prepare the test (Create Tenant, User, ...)
-        self.logger.info("Create VNF Onboarding environment")
-        self.prepare()
+        try:
+            self.logger.info("Create VNF Onboarding environment")
+            self.prepare()
+        except Exception:
+            self.logger.error("Error during VNF Onboarding environment" +
+                              "creation", exc_info=True)
+            return base.TestcaseBase.EX_TESTCASE_FAILED
 
         # Deploy orchestrator
         try:
@@ -67,8 +73,8 @@ class VnfOnBoardingBase(base.TestcaseBase):
                     res_orchestrator['result'])
                 self.details['orchestrator']['duration'] = round(
                     orchestrator_ready_time - self.start_time, 1)
-        except:
-            self.logger.warn("Problem with the Orchestrator")
+        except Exception:
+            self.logger.warn("Problem with the Orchestrator", exc_info=True)
 
         # Deploy VNF
         try:
@@ -79,8 +85,9 @@ class VnfOnBoardingBase(base.TestcaseBase):
             self.details['vnf']['result'] = res_deploy_vnf['result']
             self.details['vnf']['duration'] = round(
                 vnf_ready_time - orchestrator_ready_time, 1)
-        except:
-            raise Exception("Error during VNF deployment")
+        except Exception:
+            self.logger.error("Error during VNF deployment", exc_info=True)
+            return base.TestcaseBase.EX_TESTCASE_FAILED
 
         # Test VNF
         try:
@@ -91,8 +98,9 @@ class VnfOnBoardingBase(base.TestcaseBase):
             self.details['test_vnf']['result'] = res_test_vnf['result']
             self.details['test_vnf']['duration'] = round(
                 test_vnf_done_time - vnf_ready_time, 1)
-        except:
-            raise Exception("Error when running VNF tests")
+        except Exception:
+            self.logger.error("Error when running VNF tests", exc_info=True)
+            return base.TestcaseBase.EX_TESTCASE_FAILED
 
         # Clean the system
         self.clean()
@@ -111,9 +119,9 @@ class VnfOnBoardingBase(base.TestcaseBase):
         self.keystone_client = os_utils.get_keystone_client()
 
         self.logger.info("Prepare OpenStack plateform(create tenant and user)")
-        user_id = os_utils.get_user_id(self.keystone_client,
-                                       self.creds['username'])
-        if user_id == '':
+        admin_user_id = os_utils.get_user_id(self.keystone_client,
+                                             self.creds['username'])
+        if admin_user_id == '':
             self.step_failure("Failed to get id of " +
                               self.creds['username'])
 
@@ -133,7 +141,7 @@ class VnfOnBoardingBase(base.TestcaseBase):
             self.logger.error("Failed to get id for %s role" % role_name)
             self.step_failure("Failed to get role id of " + role_name)
 
-        if not os_utils.add_role_user(self.keystone_client, user_id,
+        if not os_utils.add_role_user(self.keystone_client, admin_user_id,
                                       role_id, tenant_id):
             self.logger.error("Failed to add %s on tenant" %
                               self.creds['username'])
@@ -149,13 +157,22 @@ class VnfOnBoardingBase(base.TestcaseBase):
             self.logger.error("Failed to create %s user" % self.tenant_name)
             self.step_failure("Failed to create user ")
 
+        if not os_utils.add_role_user(self.keystone_client, user_id,
+                                      role_id, tenant_id):
+            self.logger.error("Failed to add %s on tenant" %
+                              self.tenant_name)
+            self.step_failure("Failed to add %s on tenant" %
+                              self.tenant_name)
+
         self.logger.info("Update OpenStack creds informations")
-        self.creds.update({
-            "tenant": self.tenant_name,
+        self.admin_creds = self.creds.copy()
+        self.admin_creds.update({
+            "tenant": self.tenant_name
         })
-        self.neutron_client = os_utils.get_neutron_client(self.creds)
-        self.nova_client = os_utils.get_nova_client(self.creds)
+        self.neutron_client = os_utils.get_neutron_client(self.admin_creds)
+        self.nova_client = os_utils.get_nova_client(self.admin_creds)
         self.creds.update({
+            "tenant": self.tenant_name,
             "username": self.tenant_name,
             "password": self.tenant_name,
         })
@@ -219,4 +236,5 @@ class VnfOnBoardingBase(base.TestcaseBase):
         part = inspect.stack()[1][3]
         self.details[part]['status'] = 'FAIL'
         self.details[part]['result'] = error_msg
+        self.logger.error("Step failure:{}".format(error_msg))
         raise Exception(error_msg)