From 71d85bca9549348b0c2f486bac58923f299e5a88 Mon Sep 17 00:00:00 2001 From: "jose.lausuch" Date: Wed, 30 Sep 2015 15:29:04 +0200 Subject: Dockerfile for Functest Includes also: - script to trigger Functest automatically within the container - common requirements file to install python modules - added new parameters in the config_functest.yaml - other small adjustements JIRA: FUNCTEST-29 Change-Id: I230631e43e5f7e14938b35903ecec1b17db0f88a Signed-off-by: jose.lausuch --- testcases/config_functest.py | 61 +++++++++--------------------------------- testcases/config_functest.yaml | 23 +++++++++++----- testcases/functest_utils.py | 2 +- 3 files changed, 30 insertions(+), 56 deletions(-) (limited to 'testcases') diff --git a/testcases/config_functest.py b/testcases/config_functest.py index e209a3b94..8bc632c71 100755 --- a/testcases/config_functest.py +++ b/testcases/config_functest.py @@ -51,35 +51,31 @@ f.close() """ global variables """ # Directories -HOME = os.environ['HOME']+"/" REPO_PATH = args.repo_path RALLY_DIR = REPO_PATH + functest_yaml.get("general").get("directories").get("dir_rally") -RALLY_REPO_DIR = HOME + functest_yaml.get("general").get("directories").get("dir_rally_repo") -RALLY_INSTALLATION_DIR = HOME + functest_yaml.get("general").get("directories").get("dir_rally_inst") -RALLY_RESULT_DIR = HOME + functest_yaml.get("general").get("directories").get("dir_rally_res") +RALLY_REPO_DIR = functest_yaml.get("general").get("directories").get("dir_repo_rally") +RALLY_INSTALLATION_DIR = functest_yaml.get("general").get("directories").get("dir_rally_inst") +RALLY_RESULT_DIR = functest_yaml.get("general").get("directories").get("dir_rally_res") VPING_DIR = REPO_PATH + functest_yaml.get("general").get("directories").get("dir_vping") ODL_DIR = REPO_PATH + functest_yaml.get("general").get("directories").get("dir_odl") +IMAGE_DIR = functest_yaml.get("general").get("directories").get("dir_functest_data") # Tempest/Rally configuration details DEPLOYMENT_MAME = "opnfv-rally" +RALLY_COMMIT = functest_yaml.get("general").get("openstack").get("rally_stable_commit") #GLANCE image parameters IMAGE_URL = functest_yaml.get("general").get("openstack").get("image_url") IMAGE_DISK_FORMAT = functest_yaml.get("general").get("openstack").get("image_disk_format") IMAGE_NAME = functest_yaml.get("general").get("openstack").get("image_name") IMAGE_FILE_NAME = IMAGE_URL.rsplit('/')[-1] -IMAGE_DIR = HOME + functest_yaml.get("general").get("openstack").get("image_download_path") -IMAGE_PATH = IMAGE_DIR + IMAGE_FILE_NAME +IMAGE_PATH = IMAGE_DIR + "/" + IMAGE_FILE_NAME def action_start(): """ Start the functest environment installation """ - if not check_permissions(): - logger.error("Bad Python cache directory ownership.") - exit(-1) - if not functest_utils.check_internet_connectivity(): logger.error("There is no Internet connectivity. Please check the network configuration.") exit(-1) @@ -93,11 +89,6 @@ def action_start(): logger.debug("Cleaning possible functest environment leftovers.") action_clean() - logger.info("Installing needed libraries on the host") - cmd = "sudo yum -y install gcc libffi-devel python-devel openssl-devel gmp-devel libxml2-devel libxslt-devel postgresql-devel git wget crudini" - if not functest_utils.execute_command(cmd, logger): - logger.error("There has been a problem while installing software packages.") - exit(-1) logger.info("Installing ODL environment...") if not install_odl(): @@ -142,11 +133,11 @@ def action_check(): Check if the functest environment is properly installed """ errors_all = False - + errors = False logger.info("Checking current functest configuration...") logger.debug("Checking script directories...") - errors = False + dirs = [RALLY_DIR, RALLY_INSTALLATION_DIR, VPING_DIR, ODL_DIR] for dir in dirs: if not os.path.exists(dir): @@ -197,11 +188,7 @@ def action_check(): logger.debug("...FAIL") #TODO: check OLD environment setup - if errors_all: - return False - else: - return True - + return not errors_all @@ -214,11 +201,6 @@ def action_clean(): logger.debug("Removing Rally installation directory %s" % RALLY_INSTALLATION_DIR) shutil.rmtree(RALLY_INSTALLATION_DIR,ignore_errors=True) - if os.path.exists(RALLY_REPO_DIR): - logger.debug("Removing Rally repository %s" % RALLY_REPO_DIR) - cmd = "sudo rm -rf " + RALLY_REPO_DIR #need to be sudo, not possible with rmtree - functest_utils.execute_command(cmd,logger) - if os.path.exists(IMAGE_PATH): logger.debug("Deleting image") os.remove(IMAGE_PATH) @@ -240,30 +222,12 @@ def action_clean(): -def check_permissions(): - current_user = getpass.getuser() - cache_dir = HOME+".cache/pip" - logger.info("Checking permissions of '%s'..." %cache_dir) - logger.debug("Current user is '%s'" %current_user) - cache_user = getpwuid(stat(cache_dir).st_uid).pw_name - logger.debug("Cache directory owner is '%s'" %cache_user) - if cache_user != current_user: - logger.info("The owner of '%s' is '%s'. Please run 'sudo chown -R %s %s'." %(cache_dir, cache_user, current_user, cache_dir)) - return False - - return True - - def install_rally(): if check_rally(): logger.info("Rally is already installed.") else: - logger.debug("Cloning repository...") - url = "https://git.openstack.org/openstack/rally" - Repo.clone_from(url, RALLY_REPO_DIR) - logger.debug("Executing %s./install_rally.sh..." %RALLY_REPO_DIR) - install_script = RALLY_REPO_DIR + "install_rally.sh --yes" + install_script = RALLY_REPO_DIR + "/install_rally.sh --yes" cmd = 'sudo ' + install_script functest_utils.execute_command(cmd,logger) @@ -311,7 +275,7 @@ def configure_tempest(): return False logger.debug("Finding tempest.conf file...") - tempest_conf_file = RALLY_INSTALLATION_DIR+"tempest/for-deployment-" \ + tempest_conf_file = RALLY_INSTALLATION_DIR+"/tempest/for-deployment-" \ +deployment_uuid+"/tempest.conf" logger.debug(" Updating fixed_network_name...") @@ -359,7 +323,8 @@ def create_glance_image(path,name,disk_format): """ Create a glance image given the absolute path of the image, its name and the disk format """ - cmd = "glance image-create --name "+name+" --is-public true --disk-format "+disk_format+" --container-format bare --file "+path + cmd = ("glance image-create --name "+name+" --visibility public " + "--disk-format "+disk_format+" --container-format bare --file "+path) functest_utils.execute_command(cmd,logger) return True diff --git a/testcases/config_functest.yaml b/testcases/config_functest.yaml index e8ee6d9c6..e5a6a937d 100644 --- a/testcases/config_functest.yaml +++ b/testcases/config_functest.yaml @@ -6,17 +6,26 @@ general: dir_rally: testcases/VIM/OpenStack/CI/libraries/ dir_rally_scn: testcases/VIM/OpenStack/CI/suites/ dir_vIMS: testcases/vIMS/CI/ - # Relative to $HOME: - dir_vIMS_data: functest/vIMS_data/ # $HOME/functest/vIMS_data/ - dir_rally_res: functest/results/ # $HOME/functest/results - dir_rally_repo: functest/Rally_repo/ # $HOME/Rally_repo/ - dir_rally_inst: .rally/ # $HOME/.rally/ usually + + # Absolute path + dir_repos: /home/opnfv/repos + dir_repo_functest: /home/opnfv/repos/functest + dir_repo_rally: /home/opnfv/repos/rally + dir_repo_releng: /home/opnfv/repos/releng + dir_functest: /home/opnfv/functest + dir_results: /home/opnfv/functest/results + dir_functest_conf: /home/opnfv/functest/conf + dir_rally_res: /home/opnfv/functest/results/rally + dir_functest_data: /home/opnfv/functest/data + dir_vIMS_data: /home/opnfv/functest/data/vIMS + dir_rally_inst: /root/.rally openstack: image_name: functest-img image_url: http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img image_disk_format: qcow2 - image_download_path: functest/ # $HOME/functest/ + rally_stable_commit: 9a17d8490e7fb4afee2f5629e6db41eabe4bc4d4 + #Public network. Optional neutron_public_net_name: net04_ext neutron_public_subnet_name: net04_ext__subnet @@ -88,4 +97,4 @@ vIMS: external_network_name: '' public_domain: clearwater.opnfv results: - test_db_url: http://213.77.62.197 \ No newline at end of file + test_db_url: http://213.77.62.197 diff --git a/testcases/functest_utils.py b/testcases/functest_utils.py index 6d60fbce3..c2e4bc6d5 100644 --- a/testcases/functest_utils.py +++ b/testcases/functest_utils.py @@ -344,7 +344,7 @@ def download_url(url, dest_path): Download a file to a destination path given a URL """ name = url.rsplit('/')[-1] - dest = dest_path + name + dest = dest_path + "/" + name try: response = urllib2.urlopen(url) except (urllib2.HTTPError, urllib2.URLError): -- cgit 1.2.3-korg