aboutsummaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
authorjose.lausuch <jose.lausuch@ericsson.com>2016-06-30 14:12:54 +0200
committerJose Lausuch <jose.lausuch@ericsson.com>2016-07-04 07:27:32 +0000
commitbbc47d487f06da2906116e5ade134e11c4221786 (patch)
treed52c4ded1b3774b449c8d89b961ab17b0d28e7c5 /utils
parent7388d059ff9f4efed594582ded843f795e56c9fa (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.py33
-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 2e7a12238..285f887cf 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 70eced62c..3eb39a260 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 35b9ed305..704ef5053 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__':