# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
-import os
import time
import inspect
-
import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as os_utils
import functest.utils.functest_utils as ft_utils
self.details['orchestrator'] = {}
self.details['vnf'] = {}
self.details['test_vnf'] = {}
+ self.images = {}
try:
self.tenant_name = CONST.__getattribute__(
'vnf_{}_tenant_name'.format(self.case_name))
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.tenant_images = CONST.__getattribute__(
+ self.images = CONST.__getattribute__(
'vnf_{}_tenant_images'.format(self.case_name))
except:
self.logger.warn("No tenant image defined for this VNF")
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:
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:
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:
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()
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'])
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'])
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.admin_creds = self.creds.copy()
+ self.admin_creds.update({
+ "tenant": self.tenant_name
+ })
+ 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,
- "tenant": self.tenant_name,
})
- self.glance_client = os_utils.get_glance_client(self.creds)
- self.neutron_client = os_utils.get_neutron_client(self.creds)
- self.nova_client = os_utils.get_nova_client(self.creds)
-
- self.logger.info("Upload some OS images if it doesn't exist")
-
- temp_dir = os.path.join(self.data_dir, "tmp/")
- for image_name, image_url in self.images.iteritems():
- image_id = os_utils.get_image_id(self.glance_client, image_name)
-
- if image_id == '':
- self.logger.info("""%s image doesn't exist on glance repository. Try
- downloading this image and upload on glance !""" % image_name)
- image_id = os_utils.download_and_add_image_on_glance(
- self.glance_client, image_name, image_url, temp_dir)
-
- if image_id == '':
- self.step_failure(
- "Failed to find or upload required OS "
- "image for this deployment")
-
- self.logger.info("Update security group quota for this tenant")
-
- if not os_utils.update_sg_quota(self.neutron_client,
- tenant_id, 50, 100):
- self.step_failure("Failed to update security group quota" +
- " for tenant " + self.tenant_name)
# orchestrator is not mandatory to dpeloy and test VNF
def deploy_orchestrator(self, **kwargs):
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)