diff options
Diffstat (limited to 'promise/test/functest/run_promise_tests.py')
-rw-r--r-- | promise/test/functest/run_promise_tests.py | 90 |
1 files changed, 36 insertions, 54 deletions
diff --git a/promise/test/functest/run_promise_tests.py b/promise/test/functest/run_promise_tests.py index f7e9148..a57918c 100644 --- a/promise/test/functest/run_promise_tests.py +++ b/promise/test/functest/run_promise_tests.py @@ -10,7 +10,6 @@ import argparse import json import logging -import logging.config import os import re import subprocess @@ -29,11 +28,12 @@ parser.add_argument("-r", "--report", args = parser.parse_args() -PROMISE_REPO_DIR = CONST.dir_repo_promise +PROMISE_REPO_DIR = '/src/promise' RESULTS_DIR = CONST.dir_results PROMISE_TENANT_NAME = CONST.promise_tenant_name -TENANT_DESCRIPTION = CONST.promise_tenant_description +PROMISE_PROJECT_NAME = CONST.promise_tenant_name +PROMISE_PROJECT_DESCRIPTION = CONST.promise_tenant_description PROMISE_USER_NAME = CONST.promise_user_name PROMISE_USER_PWD = CONST.promise_user_pwd PROMISE_IMAGE_NAME = CONST.promise_image_name @@ -61,25 +61,8 @@ logger = logging.getLogger('promise') def main(): return_code = -1 - change_keystone_version = False os_auth = os.environ["OS_AUTH_URL"] - # check keystone version - # if keystone v3, for keystone v2 - if os_utils.is_keystone_v3(): - os.environ["OS_IDENTITY_API_VERSION"] = "2" - # the OS_AUTH_URL may have different format according to the installer - # apex: OS_AUTH_URL=http://192.168.37.17:5000/v2.0 - # fuel: OS_AUTH_URL='http://192.168.0.2:5000/' - # OS_AUTH_URL='http://192.168.10.2:5000/v3 - match = re.findall(r'[0-9]+(?:\.[0-9]+){3}:[0-9]+', - os.environ["OS_AUTH_URL"]) - new_url = "http://" + match[0] + "/v2.0" - - os.environ["OS_AUTH_URL"] = new_url - change_keystone_version = True - logger.info("Force Keystone v2") - creds = os_utils.get_credentials() try: @@ -87,27 +70,25 @@ def main(): logger.info("OS_AUTH_URL: %s" % os.environ["OS_AUTH_URL"]) logger.info("OS_IDENTITY_API_VERSION: %s " % os.environ["OS_IDENTITY_API_VERSION"]) + logger.info("OS_USER_DOMAIN_NAME: %s" % + os.environ["OS_USER_DOMAIN_NAME"]) + logger.info("OS_PROJECT_DOMAIN_NAME: %s" % + os.environ["OS_PROJECT_DOMAIN_NAME"]) except KeyError: logger.error("Please set the OS environment variables") keystone_client = os_utils.get_keystone_client() - user_id = os_utils.get_user_id(keystone_client, creds['username']) - if user_id == '': - logger.error("Error : Failed to get id of %s user" % - creds['username']) - return return_code - - logger.info("Creating tenant '%s'..." % PROMISE_TENANT_NAME) - tenant_id = os_utils.create_tenant( - keystone_client, PROMISE_TENANT_NAME, TENANT_DESCRIPTION) - if not tenant_id: - logger.error("Error : Failed to create %s tenant" - % PROMISE_TENANT_NAME) + logger.info("Creating project '%s'..." % PROMISE_PROJECT_NAME) + project_id = os_utils.create_tenant( + keystone_client, PROMISE_PROJECT_NAME, PROMISE_PROJECT_DESCRIPTION) + if not project_id: + logger.error("Error : Failed to create %s project" + % PROMISE_PROJECT_NAME) return return_code - logger.debug("Tenant '%s' created successfully." % PROMISE_TENANT_NAME) + logger.debug("Project '%s' created successfully." % PROMISE_PROJECT_NAME) - roles_name = ["admin", "Admin"] + roles_name = ["_member_", "Member"] role_id = '' for role_name in roles_name: if role_id == '': @@ -117,24 +98,32 @@ def main(): logger.error("Error : Failed to get id for %s role" % role_name) return return_code - logger.info("Adding role '%s' to tenant '%s'..." - % (role_id, PROMISE_TENANT_NAME)) - if not os_utils.add_role_user(keystone_client, user_id, - role_id, tenant_id): - logger.error("Error : Failed to add %s on tenant %s" % - (creds['username'], PROMISE_TENANT_NAME)) + domain_id = '' + domain_id = os_utils.get_domain_id(keystone_client, + os.environ["OS_USER_DOMAIN_NAME"]) + if domain_id == '': + logger.error("Error: Failed to get id for %s domain" % + os.environ["OS_USER_DOMAIN_NAME"]) return return_code - logger.debug("Role added successfully.") logger.info("Creating user '%s'..." % PROMISE_USER_NAME) - user_id = os_utils.create_user( - keystone_client, PROMISE_USER_NAME, PROMISE_USER_PWD, None, tenant_id) - - if not user_id: + try: + user = keystone_client.users.create(name=PROMISE_USER_NAME, + domain=domain_id, + password=PROMISE_USER_PWD) + except Exception as e: logger.error("Error : Failed to create %s user" % PROMISE_USER_NAME) return return_code logger.debug("User '%s' created successfully." % PROMISE_USER_NAME) + try: + keystone_client.roles.grant(role=role_id, user=user.id, + project=project_id) + except Exception as e: + logger.error("Error: Failed to grant member role on project %s" % + project_id) + return return_code + nova_client = os_utils.get_nova_client() glance_client = os_utils.get_glance_client() @@ -188,7 +177,7 @@ def main(): os.environ["OS_TEST_IMAGE"] = image_id os.environ["OS_TEST_FLAVOR"] = flavor_id os.environ["OS_TEST_NETWORK"] = network_dic["net_id"] - os.environ["OS_TENANT_NAME"] = PROMISE_TENANT_NAME + os.environ["OS_PROJECT_NAME"] = PROMISE_PROJECT_NAME os.environ["OS_USERNAME"] = PROMISE_USER_NAME os.chdir(PROMISE_REPO_DIR + '/source/') @@ -239,16 +228,9 @@ def main(): start_time_json, end_time, duration)) end_time = time.time() - # re set default keysone version to 3 if it has been changed for promise - if change_keystone_version: - os.environ["OS_IDENTITY_API_VERSION"] = "3" - os.environ["OS_AUTH_URL"] = os_auth - logger.info("Revert to Keystone v3") - return return_code if __name__ == '__main__': - logging.config.fileConfig( - CONST.__getattribute__('dir_functest_logging_cfg')) + logging.basicConfig(level=logging.INFO) sys.exit(main()) |