summaryrefslogtreecommitdiffstats
path: root/testcases/features/promise.py
diff options
context:
space:
mode:
authorjose.lausuch <jose.lausuch@ericsson.com>2016-01-21 13:58:48 +0100
committerjose.lausuch <jose.lausuch@ericsson.com>2016-01-22 11:25:12 +0100
commit76b49b8c1eefcebe69d798157cb7742152a57155 (patch)
tree44f2827b10e9fb1dba28e20a330d58635f5060f2 /testcases/features/promise.py
parent2520c3221bdbb5ca75ad0c2d70f30388528d01de (diff)
Add support for Promise test cases
JIRA: FUNCTEST-68 Change-Id: I80f8e587e53c7242f8bfa666f2ac450e73c8294f Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
Diffstat (limited to 'testcases/features/promise.py')
-rw-r--r--testcases/features/promise.py212
1 files changed, 212 insertions, 0 deletions
diff --git a/testcases/features/promise.py b/testcases/features/promise.py
new file mode 100644
index 000000000..cc7cf0ab8
--- /dev/null
+++ b/testcases/features/promise.py
@@ -0,0 +1,212 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2015 All rights reserved
+# This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Maintainer : jose.lausuch@ericsson.com
+#
+import argparse
+import logging
+import os
+import time
+import sys
+import yaml
+import keystoneclient.v2_0.client as ksclient
+import glanceclient.client as glclient
+import novaclient.client as nvclient
+
+parser = argparse.ArgumentParser()
+
+parser.add_argument("-d", "--debug", help="Debug mode", action="store_true")
+parser.add_argument("-r", "--report",
+ help="Create json result file",
+ action="store_true")
+args = parser.parse_args()
+
+with open('/home/opnfv/functest/conf/config_functest.yaml') as f:
+ functest_yaml = yaml.safe_load(f)
+
+dirs = functest_yaml.get('general').get('directories')
+FUNCTEST_REPO = dirs.get('dir_repo_functest')
+PROMISE_REPO = dirs.get('dir_repo_promise')
+TEST_DB_URL = functest_yaml.get('results').get('test_db_url')
+
+TENANT_NAME = functest_yaml.get('promise').get('general').get('tenant_name')
+TENANT_DESCRIPTION = functest_yaml.get('promise').get(
+ 'general').get('tenant_description')
+USER_NAME = functest_yaml.get('promise').get('general').get('user_name')
+USER_PWD = functest_yaml.get('promise').get('general').get('user_pwd')
+IMAGE_NAME = functest_yaml.get('promise').get('general').get('image_name')
+FLAVOR_NAME = functest_yaml.get('promise').get('general').get('flavor_name')
+FLAVOR_VCPUS = functest_yaml.get('promise').get('general').get('flavor_vcpus')
+FLAVOR_RAM = functest_yaml.get('promise').get('general').get('flavor_ram')
+FLAVOR_DISK = functest_yaml.get('promise').get('general').get('flavor_disk')
+
+
+GLANCE_IMAGE_FILENAME = functest_yaml.get('general'). \
+ get('openstack').get('image_file_name')
+GLANCE_IMAGE_FORMAT = functest_yaml.get('general'). \
+ get('openstack').get('image_disk_format')
+GLANCE_IMAGE_PATH = functest_yaml.get('general'). \
+ get('directories').get('dir_functest_data') + "/" + GLANCE_IMAGE_FILENAME
+
+sys.path.append('%s/testcases' % FUNCTEST_REPO)
+import functest_utils
+
+""" logging configuration """
+logger = logging.getLogger('Promise')
+logger.setLevel(logging.DEBUG)
+
+ch = logging.StreamHandler()
+
+if args.debug:
+ ch.setLevel(logging.DEBUG)
+else:
+ ch.setLevel(logging.INFO)
+
+formatter = logging.Formatter('%(asctime)s - %(name)s'
+ '- %(levelname)s - %(message)s')
+
+ch.setFormatter(formatter)
+logger.addHandler(ch)
+
+
+
+def create_image(glance_client, name):
+
+ return image_id
+
+
+def main():
+ ks_creds = functest_utils.get_credentials("keystone")
+ nv_creds = functest_utils.get_credentials("nova")
+ nt_creds = functest_utils.get_credentials("neutron")
+
+ keystone = ksclient.Client(**ks_creds)
+
+ user_id = functest_utils.get_user_id(keystone, ks_creds['username'])
+ if user_id == '':
+ logger.error("Error : Failed to get id of %s user" %
+ ks_creds['username'])
+ exit(-1)
+
+ logger.info("Creating tenant '%s'..." % TENANT_NAME)
+ tenant_id = functest_utils.create_tenant(
+ keystone, TENANT_NAME, TENANT_DESCRIPTION)
+ if tenant_id == '':
+ logger.error("Error : Failed to create %s tenant" % TENANT_NAME)
+ exit(-1)
+ logger.debug("Tenant '%s' created successfully." % TENANT_NAME)
+
+ roles_name = ["admin", "Admin"]
+ role_id = ''
+ for role_name in roles_name:
+ if role_id == '':
+ role_id = functest_utils.get_role_id(keystone, role_name)
+
+ if role_id == '':
+ logger.error("Error : Failed to get id for %s role" % role_name)
+ exit(-1)
+
+ logger.info("Adding role '%s' to tenant '%s'..." % (role_id,TENANT_NAME))
+ if not functest_utils.add_role_user(keystone, user_id, role_id, tenant_id):
+ logger.error("Error : Failed to add %s on tenant %s" %
+ (ks_creds['username'],TENANT_NAME))
+ exit(-1)
+ logger.debug("Role added successfully.")
+
+ logger.info("Creating user '%s'..." % USER_NAME)
+ user_id = functest_utils.create_user(
+ keystone, USER_NAME, USER_PWD, None, tenant_id)
+
+ if user_id == '':
+ logger.error("Error : Failed to create %s user" % USER_NAME)
+ exit(-1)
+ logger.debug("User '%s' created successfully." % USER_NAME)
+
+ logger.info("Updating OpenStack credentials...")
+ ks_creds.update({
+ "username": TENANT_NAME,
+ "password": TENANT_NAME,
+ "tenant_name": TENANT_NAME,
+ })
+
+ nt_creds.update({
+ "tenant_name": TENANT_NAME,
+ })
+
+ nv_creds.update({
+ "project_id": TENANT_NAME,
+ })
+
+ glance_endpoint = keystone.service_catalog.url_for(service_type='image',
+ endpoint_type='publicURL')
+ glance = glclient.Client(1, glance_endpoint, token=keystone.auth_token)
+ nova = nvclient.Client("2", **nv_creds)
+
+
+ logger.info("Creating image '%s' from '%s'..." % (IMAGE_NAME,
+ GLANCE_IMAGE_PATH))
+ image_id = functest_utils.create_glance_image(glance,
+ IMAGE_NAME,
+ GLANCE_IMAGE_PATH)
+ if not image_id:
+ logger.error("Failed to create the Glance image...")
+ exit(-1)
+ logger.debug("Image '%s' with ID '%s' created successfully." % (IMAGE_NAME,
+ image_id))
+
+ flavor_id = functest_utils.create_flavor(nova,
+ FLAVOR_NAME,
+ FLAVOR_RAM,
+ FLAVOR_DISK,
+ FLAVOR_VCPUS)
+ if not flavor_id:
+ logger.error("Failed to create the Flavor...")
+ exit(-1)
+ logger.debug("Flavor '%s' with ID '%s' created successfully." % (FLAVOR_NAME,
+ flavor_id))
+
+ logger.info("Exporting environment variables...")
+ os.environ["NODE_ENV"] = "functest"
+ os.environ["OS_TENANT_NAME"] = TENANT_NAME
+ os.environ["OS_USERNAME"] = USER_NAME
+ os.environ["OS_PASSWORD"] = USER_PWD
+ os.environ["OS_TEST_IMAGE"] = image_id
+ os.environ["OS_TEST_FLAVOR"] = flavor_id
+
+ cmd = 'DEBUG=1 npm run -s test'
+ start_time_ts = time.time()
+
+ logger.info("Running command: %s" % cmd)
+ os.chdir(PROMISE_REPO)
+ ret = functest_utils.execute_command(cmd, exit_on_error=False)
+
+ end_time_ts = time.time()
+ duration = round(end_time_ts - start_time_ts, 1)
+ test_status = 'Failed'
+ if ret:
+ test_status = 'OK'
+
+ logger.info("Test status: %s" % test_status)
+ details = {
+ 'timestart': start_time_ts,
+ 'duration': duration,
+ 'status': test_status,
+ }
+ pod_name = functest_utils.get_pod_name()
+ git_version = functest_utils.get_git_branch(PROMISE_REPO)
+ #functest_utils.push_results_to_db(TEST_DB_URL,
+ # 'promise',
+ # None,
+ # pod_name,
+ # git_version,
+ # details)
+ #
+
+if __name__ == '__main__':
+ main()