aboutsummaryrefslogtreecommitdiffstats
path: root/utils
diff options
context:
space:
mode:
Diffstat (limited to 'utils')
-rw-r--r--utils/functest_utils.py52
-rwxr-xr-xutils/openstack_clean.py6
-rwxr-xr-xutils/openstack_snapshot.py4
-rwxr-xr-xutils/openstack_utils.py29
4 files changed, 59 insertions, 32 deletions
diff --git a/utils/functest_utils.py b/utils/functest_utils.py
index 644ad1a1b..717e4b2ce 100644
--- a/utils/functest_utils.py
+++ b/utils/functest_utils.py
@@ -7,23 +7,21 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
#
-from datetime import datetime as dt
import json
import os
import re
-import requests
import shutil
import subprocess
import sys
import urllib2
-
-import functest.ci.tier_builder as tb
-import functest.utils.functest_logger as ft_logger
+from datetime import datetime as dt
import dns.resolver
-from git import Repo
+import requests
import yaml
+from git import Repo
+import functest.utils.functest_logger as ft_logger
logger = ft_logger.Logger("functest_utils").getLogger()
@@ -152,9 +150,7 @@ def get_db_url():
"""
Returns DB URL
"""
- functest_yaml = get_functest_yaml()
- db_url = functest_yaml.get("results").get("test_db_url")
- return db_url
+ return get_functest_config('results.test_db_url')
def logger_test_results(project, case_name, status, details):
@@ -331,10 +327,8 @@ def get_deployment_dir():
"""
Returns current Rally deployment directory
"""
- functest_yaml = get_functest_yaml()
- deployment_name = functest_yaml.get("rally").get("deployment_name")
- rally_dir = functest_yaml.get("general").get("directories").get(
- "dir_rally_inst")
+ deployment_name = get_functest_config('rally.deployment_name')
+ rally_dir = get_functest_config('general.directories.dir_rally_inst')
cmd = ("rally deployment list | awk '/" + deployment_name +
"/ {print $2}'")
p = subprocess.Popen(cmd, shell=True,
@@ -350,15 +344,16 @@ def get_deployment_dir():
def get_criteria_by_test(testname):
- criteria = ""
- file = get_testcases_file()
- tiers = tb.TierBuilder("", "", file)
- for tier in tiers.get_tiers():
- for test in tier.get_tests():
- if test.get_name() == testname:
- criteria = test.get_criteria()
+ with open(get_testcases_file()) as f:
+ testcases_yaml = yaml.safe_load(f)
+
+ for dic_tier in testcases_yaml.get("tiers"):
+ for dic_testcase in dic_tier['testcases']:
+ if dic_testcase['name'] == testname:
+ return dic_testcase['criteria']
- return criteria
+ logger.error('Project %s is not defined in testcases.yaml' % testname)
+ return None
# ----------------------------------------------------------
@@ -366,18 +361,16 @@ def get_criteria_by_test(testname):
# YAML UTILS
#
# -----------------------------------------------------------
-def get_parameter_from_yaml(parameter, file=None):
+def get_parameter_from_yaml(parameter, file):
"""
- Returns the value of a given parameter in config_functest.yaml
+ Returns the value of a given parameter in file.yaml
parameter must be given in string format with dots
Example: general.openstack.image_name
"""
- if file is None:
- file = os.environ["CONFIG_FUNCTEST_YAML"]
with open(file) as f:
- functest_yaml = yaml.safe_load(f)
+ file_yaml = yaml.safe_load(f)
f.close()
- value = functest_yaml
+ value = file_yaml
for element in parameter.split("."):
value = value.get(element)
if value is None:
@@ -386,6 +379,11 @@ def get_parameter_from_yaml(parameter, file=None):
return value
+def get_functest_config(parameter):
+ yaml_ = os.environ["CONFIG_FUNCTEST_YAML"]
+ return get_parameter_from_yaml(parameter, yaml_)
+
+
def check_success_rate(case_name, success_rate):
success_rate = float(success_rate)
criteria = get_criteria_by_test(case_name)
diff --git a/utils/openstack_clean.py b/utils/openstack_clean.py
index 3b937c917..bf582dea2 100755
--- a/utils/openstack_clean.py
+++ b/utils/openstack_clean.py
@@ -29,8 +29,8 @@ import yaml
logger = ft_logger.Logger("openstack_clean").getLogger()
-OS_SNAPSHOT_FILE = ft_utils.get_parameter_from_yaml(
- "general.openstack.snapshot_file")
+OS_SNAPSHOT_FILE = \
+ ft_utils.get_functest_config("general.openstack.snapshot_file")
def separator():
@@ -233,7 +233,7 @@ def remove_ports(neutron_client, ports, network_ids):
except:
logger.debug(" > WARNING: Port %s does not contain fixed_ips"
% port_id)
- print port
+ logger.info(port)
router_id = port['device_id']
if len(port['fixed_ips']) == 0 and router_id == '':
logger.debug("Removing port %s ..." % port_id)
diff --git a/utils/openstack_snapshot.py b/utils/openstack_snapshot.py
index 236cf74e5..560cadbdb 100755
--- a/utils/openstack_snapshot.py
+++ b/utils/openstack_snapshot.py
@@ -29,8 +29,8 @@ import yaml
logger = ft_logger.Logger("openstack_snapshot").getLogger()
-OS_SNAPSHOT_FILE = ft_utils.get_parameter_from_yaml(
- "general.openstack.snapshot_file")
+OS_SNAPSHOT_FILE = \
+ ft_utils.get_functest_config("general.openstack.snapshot_file")
def separator():
diff --git a/utils/openstack_utils.py b/utils/openstack_utils.py
index ff9b54a58..5a4775d3a 100755
--- a/utils/openstack_utils.py
+++ b/utils/openstack_utils.py
@@ -16,6 +16,7 @@ import time
from cinderclient import client as cinderclient
import functest.utils.functest_logger as ft_logger
+import functest.utils.functest_utils as ft_utils
from glanceclient import client as glanceclient
from keystoneclient.v2_0 import client as keystoneclient
from neutronclient.v2_0 import client as neutronclient
@@ -235,6 +236,14 @@ def get_hypervisors(nova_client):
def create_flavor(nova_client, flavor_name, ram, disk, vcpus):
try:
flavor = nova_client.flavors.create(flavor_name, ram, vcpus, disk)
+ try:
+ extra_specs = ft_utils.get_functest_config(
+ 'general.flavor_extra_specs')
+ flavor.update(extra_specs)
+ except ValueError:
+ # flavor extra specs are not configured, therefore skip the update
+ pass
+
except Exception, e:
logger.error("Error [create_flavor(nova_client, '%s', '%s', '%s', "
"'%s')]: %s" % (flavor_name, ram, disk, vcpus, e))
@@ -718,6 +727,18 @@ def update_bgpvpn(neutron_client, bgpvpn_id, **kwargs):
def delete_bgpvpn(neutron_client, bgpvpn_id):
return neutron_client.delete_bgpvpn(bgpvpn_id)
+
+def get_bgpvpn(neutron_client, bgpvpn_id):
+ return neutron_client.show_bgpvpn(bgpvpn_id)
+
+
+def get_bgpvpn_routers(neutron_client, bgpvpn_id):
+ return get_bgpvpn(neutron_client, bgpvpn_id)['bgpvpn']['routers']
+
+
+def get_bgpvpn_networks(neutron_client, bgpvpn_id):
+ return get_bgpvpn(neutron_client, bgpvpn_id)['bgpvpn']['networks']
+
# *********************************************
# SEC GROUPS
# *********************************************
@@ -902,11 +923,19 @@ def create_glance_image(glance_client, image_name, file_path, disk="qcow2",
if logger:
logger.info("Creating image '%s' from '%s'..." % (image_name,
file_path))
+ try:
+ properties = ft_utils.get_functest_config(
+ 'general.image_properties')
+ except ValueError:
+ # image properties are not configured
+ # therefore don't add any properties
+ properties = {}
with open(file_path) as fimage:
image = glance_client.images.create(name=image_name,
is_public=public,
disk_format=disk,
container_format=container,
+ properties=properties,
data=fimage)
image_id = image.id
return image_id