diff options
author | jose.lausuch <jose.lausuch@ericsson.com> | 2016-06-30 14:12:54 +0200 |
---|---|---|
committer | Jose Lausuch <jose.lausuch@ericsson.com> | 2016-07-04 07:27:32 +0000 |
commit | bbc47d487f06da2906116e5ade134e11c4221786 (patch) | |
tree | d52c4ded1b3774b449c8d89b961ab17b0d28e7c5 /utils | |
parent | 7388d059ff9f4efed594582ded843f795e56c9fa (diff) |
Change OpenStack clean behaviour
JIRA: FUNCTEST-236
The openstack snapshot generation is now triggered before running
a test case and removed from prepare_env
Change-Id: I4d1bc95dedd7f59d4b1d5866f288e1c1a70ec69e
Signed-off-by: jose.lausuch <jose.lausuch@ericsson.com>
Diffstat (limited to 'utils')
-rw-r--r-- | utils/functest_utils.py | 33 | ||||
-rw-r--r-- | utils/openstack_clean.py (renamed from utils/clean_openstack.py) | 44 | ||||
-rw-r--r-- | utils/openstack_snapshot.py (renamed from utils/generate_defaults.py) | 55 |
3 files changed, 80 insertions, 52 deletions
diff --git a/utils/functest_utils.py b/utils/functest_utils.py index 2e7a1223..285f887c 100644 --- a/utils/functest_utils.py +++ b/utils/functest_utils.py @@ -8,23 +8,25 @@ # http://www.apache.org/licenses/LICENSE-2.0 # +""" global variables """ + from datetime import datetime as dt import json import os import os.path import re -import requests import shutil import socket import subprocess import sys import urllib2 -import yaml -from git import Repo + import functest.ci.tier_builder as tb +from git import Repo +import requests +import yaml -""" global variables """ REPOS_DIR = os.getenv('repos_dir') FUNCTEST_REPO = ("%s/functest/" % REPOS_DIR) @@ -300,3 +302,26 @@ def get_criteria_by_test(testname): criteria = test.get_criteria() return criteria + + +# ---------------------------------------------------------- +# +# YAML UTILS +# +# ----------------------------------------------------------- +def get_parameter_from_yaml(parameter): + """ + Returns the value of a given parameter in config_functest.yaml + parameter must be given in string format with dots + Example: general.openstack.image_name + """ + with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f: + functest_yaml = yaml.safe_load(f) + f.close() + value = functest_yaml + for element in parameter.split("."): + value = value.get(element) + if value is None: + raise ValueError("The parameter %s is not defined in" + " config_functest.yaml" % parameter) + return value diff --git a/utils/clean_openstack.py b/utils/openstack_clean.py index 70eced62..3eb39a26 100644 --- a/utils/clean_openstack.py +++ b/utils/openstack_clean.py @@ -20,24 +20,24 @@ # http://www.apache.org/licenses/LICENSE-2.0 # -import os +""" logging configuration """ + import time -import yaml -from novaclient import client as novaclient -from neutronclient.v2_0 import client as neutronclient -from keystoneclient.v2_0 import client as keystoneclient from cinderclient import client as cinderclient - import functest.utils.functest_logger as ft_logger +import functest.utils.functest_utils as ft_utils import functest.utils.openstack_utils as os_utils +from keystoneclient.v2_0 import client as keystoneclient +from neutronclient.v2_0 import client as neutronclient +from novaclient import client as novaclient +import yaml -""" logging configuration """ -logger = ft_logger.Logger("clean_openstack").getLogger() +logger = ft_logger.Logger("openstack_clean").getLogger() -REPO_PATH = os.environ['repos_dir'] + '/functest/' -DEFAULTS_FILE = '/home/opnfv/functest/conf/os_defaults.yaml' +OS_SNAPSHOT_FILE = ft_utils.get_parameter_from_yaml( + "general.openstack.snapshot_file") def separator(): @@ -365,22 +365,22 @@ def main(): logger.info("+++++++++++++++++++++++++++++++") try: - with open(DEFAULTS_FILE) as f: - defaults_yaml = yaml.safe_load(f) + with open(OS_SNAPSHOT_FILE) as f: + snapshot_yaml = yaml.safe_load(f) except Exception: logger.info("The file %s does not exist. The OpenStack snapshot must" - " be created first. Aborting cleanup." % DEFAULTS_FILE) + " be created first. Aborting cleanup." % OS_SNAPSHOT_FILE) exit(0) - default_images = defaults_yaml.get('images') - default_instances = defaults_yaml.get('instances') - default_volumes = defaults_yaml.get('volumes') - default_networks = defaults_yaml.get('networks') - default_routers = defaults_yaml.get('routers') - default_security_groups = defaults_yaml.get('secgroups') - default_floatingips = defaults_yaml.get('floatingips') - default_users = defaults_yaml.get('users') - default_tenants = defaults_yaml.get('tenants') + default_images = snapshot_yaml.get('images') + default_instances = snapshot_yaml.get('instances') + default_volumes = snapshot_yaml.get('volumes') + default_networks = snapshot_yaml.get('networks') + default_routers = snapshot_yaml.get('routers') + default_security_groups = snapshot_yaml.get('secgroups') + default_floatingips = snapshot_yaml.get('floatingips') + default_users = snapshot_yaml.get('users') + default_tenants = snapshot_yaml.get('tenants') creds_nova = os_utils.get_credentials("nova") nova_client = novaclient.Client('2', **creds_nova) diff --git a/utils/generate_defaults.py b/utils/openstack_snapshot.py index 35b9ed30..704ef505 100644 --- a/utils/generate_defaults.py +++ b/utils/openstack_snapshot.py @@ -20,19 +20,21 @@ # http://www.apache.org/licenses/LICENSE-2.0 # +""" logging configuration """ + import os -import yaml -from novaclient import client as novaclient -from neutronclient.v2_0 import client as neutronclient -from keystoneclient.v2_0 import client as keystoneclient from cinderclient import client as cinderclient - -import functest.utils.openstack_utils as os_utils import functest.utils.functest_logger as ft_logger +import functest.utils.functest_utils as ft_utils +import functest.utils.openstack_utils as os_utils +from keystoneclient.v2_0 import client as keystoneclient +from neutronclient.v2_0 import client as neutronclient +from novaclient import client as novaclient +import yaml -""" logging configuration """ -logger = ft_logger.Logger("generate_defaults").getLogger() + +logger = ft_logger.Logger("openstack_snapshot").getLogger() REPO_PATH = os.environ['repos_dir'] + '/functest/' if not os.path.exists(REPO_PATH): @@ -40,7 +42,8 @@ if not os.path.exists(REPO_PATH): exit(-1) -DEFAULTS_FILE = '/home/opnfv/functest/conf/os_defaults.yaml' +OS_SNAPSHOT_FILE = ft_utils.get_parameter_from_yaml( + "general.openstack.snapshot_file") def separator(): @@ -129,7 +132,7 @@ def get_users(keystone_client): def get_tenants(keystone_client): - logger.debug("Getting users...") + logger.debug("Getting tenants...") dic_tenants = {} tenants = os_utils.get_tenants(keystone_client) if not (tenants is None or len(tenants) == 0): @@ -161,24 +164,24 @@ def main(): "script again.") exit(-1) - defaults = {} - defaults.update(get_instances(nova_client)) - defaults.update(get_images(nova_client)) - defaults.update(get_volumes(cinder_client)) - defaults.update(get_networks(neutron_client)) - defaults.update(get_routers(neutron_client)) - defaults.update(get_security_groups(neutron_client)) - defaults.update(get_floatinips(nova_client)) - defaults.update(get_users(keystone_client)) - defaults.update(get_tenants(keystone_client)) - - with open(DEFAULTS_FILE, 'w+') as yaml_file: - yaml_file.write(yaml.safe_dump(defaults, default_flow_style=False)) + snapshot = {} + snapshot.update(get_instances(nova_client)) + snapshot.update(get_images(nova_client)) + snapshot.update(get_volumes(cinder_client)) + snapshot.update(get_networks(neutron_client)) + snapshot.update(get_routers(neutron_client)) + snapshot.update(get_security_groups(neutron_client)) + snapshot.update(get_floatinips(nova_client)) + snapshot.update(get_users(keystone_client)) + snapshot.update(get_tenants(keystone_client)) + + with open(OS_SNAPSHOT_FILE, 'w+') as yaml_file: + yaml_file.write(yaml.safe_dump(snapshot, default_flow_style=False)) yaml_file.seek(0) - logger.info("Openstack Defaults found in the deployment:\n%s" - % yaml_file.read()) + logger.debug("Openstack Snapshot found in the deployment:\n%s" + % yaml_file.read()) logger.debug("NOTE: These objects will NOT be deleted after " + - "running the tests.") + "running the test.") if __name__ == '__main__': |