aboutsummaryrefslogtreecommitdiffstats
path: root/testcases/OpenStack
diff options
context:
space:
mode:
authorDimitri Mazmanov <dimitri.mazmanov@ericsson.com>2016-07-20 13:42:30 +0200
committerDimitri Mazmanov <dimitri.mazmanov@ericsson.com>2016-07-20 13:51:01 +0200
commit28fd0fabedf3a36f9285b2a55f61e1b27fc5daab (patch)
tree2f204dea1eee599d5cc4ca08cc8438c03412f067 /testcases/OpenStack
parent76a691ab6bba6bf0eca9e04ebb5632647ccf8ba6 (diff)
Add kingbird endpoint information to functest.
The patch multihops to the fuel node and dynamically retrieves kingbird endpoint information. It also resolves the controller ip instead of using the hardcoded value from the config ONLY if the installer type is Fuel. Signed-off-by: Dimitri Mazmanov <dimitri.mazmanov@ericsson.com> Change-Id: I5161df5df3da7283f6374efa6bd1108246c1095a
Diffstat (limited to 'testcases/OpenStack')
-rwxr-xr-xtestcases/OpenStack/tempest/run_tempest.py59
1 files changed, 52 insertions, 7 deletions
diff --git a/testcases/OpenStack/tempest/run_tempest.py b/testcases/OpenStack/tempest/run_tempest.py
index 452e1fdd8..d48dde663 100755
--- a/testcases/OpenStack/tempest/run_tempest.py
+++ b/testcases/OpenStack/tempest/run_tempest.py
@@ -27,7 +27,6 @@ import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
import yaml
-
modes = ['full', 'smoke', 'baremetal', 'compute', 'data_processing',
'identity', 'image', 'network', 'object_storage', 'orchestration',
'telemetry', 'volume', 'custom', 'defcore', 'feature_multisite']
@@ -57,7 +56,6 @@ logger = ft_logger.Logger("run_tempest").getLogger()
REPO_PATH = os.environ['repos_dir'] + '/functest/'
-
with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
functest_yaml = yaml.safe_load(f)
f.close()
@@ -120,7 +118,6 @@ def get_info(file_result):
def create_tempest_resources():
-
keystone_client = os_utils.get_keystone_client()
neutron_client = os_utils.get_neutron_client()
glance_client = os_utils.get_glance_client()
@@ -224,13 +221,61 @@ def configure_tempest_feature(deployment_dir, mode):
config.set('service_available', 'kingbird', 'true')
cmd = "openstack endpoint show kingbird | grep publicurl |\
awk '{print $4}' | awk -F '/' '{print $3}'"
- kingbird_endpoint_url = os.popen(cmd).read()
- cmd = "openstack endpoint show kingbird | grep publicurl |\
- awk '{print $4}' | awk -F '/' '{print $4}'"
kingbird_api_version = os.popen(cmd).read()
+ if os.environ.get("INSTALLER_TYPE") == 'fuel':
+ # For MOS based setup, the service is accessible
+ # via bind host
+ kingbird_conf_path = "/etc/kingbird/kingbird.conf"
+ installer_type = os.getenv('INSTALLER_TYPE', 'Unknown')
+ installer_ip = os.getenv('INSTALLER_IP', 'Unknown')
+ installer_username = ft_utils.get_parameter_from_yaml(
+ "multisite." + installer_type +
+ "_environment.installer_username")
+ installer_password = ft_utils.get_parameter_from_yaml(
+ "multisite." + installer_type +
+ "_environment.installer_password")
+ multisite_controller_ip = ft_utils.get_parameter_from_yaml(
+ "multisite." + installer_type +
+ "_environment.multisite_controller_ip")
+
+ ssh_options = "-o UserKnownHostsFile=/dev/null -o \
+ StrictHostKeyChecking=no"
+
+ # Get the controller IP from the fuel node
+ cmd = 'sshpass -p %s ssh 2>/dev/null %s %s@%s \
+ \'fuel node --env 1| grep controller | grep "True\| 1" \
+ | awk -F\| "{print \$5}"\'' % (installer_password,
+ ssh_options,
+ installer_username,
+ installer_ip)
+ multisite_controller_ip = \
+ "".join(os.popen(cmd).reawd().split())
+
+ # Login to controller and get bind host details
+ cmd = 'sshpass -p %s ssh 2>/dev/null %s %s@%s "ssh %s \\" \
+ grep -e "^bind_" %s \\""' % (installer_password,
+ ssh_options,
+ installer_username,
+ installer_ip,
+ multisite_controller_ip,
+ kingbird_conf_path)
+ bind_details = os.popen(cmd).read()
+ bind_details = "".join(bind_details.split())
+ # Extract port number from the bind details
+ bind_port = re.findall(r"\D(\d{4})", bind_details)[0]
+ # Extract ip address from the bind details
+ bind_host = re.findall(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",
+ bind_details)[0]
+ kingbird_endpoint_url = "http://" + bind_host + ":" + bind_port + \
+ "/"
+ else:
+ cmd = "openstack endpoint show kingbird | grep publicurl |\
+ awk '{print $4}' | awk -F '/' '{print $3}'"
+ kingbird_endpoint_url = os.popen(cmd).read()
+
try:
config.add_section("kingbird")
- except:
+ except Exception:
logger.info('kingbird section exist')
config.set('kingbird', 'endpoint_type', 'publicURL')
config.set('kingbird', 'TIME_TO_SYNC', '20')