Merge "Add regression test for custom hostnames"
This commit is contained in:
commit
05049ff966
@ -282,13 +282,16 @@ class PluginHelper(object):
|
||||
mode='ha_compact')
|
||||
return self._cluster_id
|
||||
|
||||
def deploy_cluster(self, nodes_roles, verify_network=False,
|
||||
def deploy_cluster(self, nodes_roles,
|
||||
nodes_hostnames=None, verify_network=False,
|
||||
update_interfaces=True, check_services=True,
|
||||
timeout=getattr(conf, 'DEPLOYMENT_TIMEOUT', 7800)):
|
||||
"""Assign roles to nodes and deploy the cluster.
|
||||
|
||||
:param nodes_roles: nodes to roles mapping.
|
||||
:type nodes_roles: dict
|
||||
:param nodes_hostnames: nodes to hostnames mapping (default: None).
|
||||
:type nodes_hostnames: dict
|
||||
:param verify_network: whether or not network verification should be
|
||||
run before the deployment (default: False).
|
||||
:type verify_network: boolean
|
||||
@ -305,12 +308,63 @@ class PluginHelper(object):
|
||||
"""
|
||||
self.fuel_web.update_nodes(self.cluster_id, nodes_roles,
|
||||
update_interfaces=update_interfaces)
|
||||
if nodes_hostnames:
|
||||
for node in self.fuel_web.client.list_cluster_nodes(
|
||||
self.cluster_id):
|
||||
for k in nodes_hostnames.keys():
|
||||
if node['name'].startswith(k):
|
||||
logger.info(
|
||||
("Setting hostname for Node Id {0} Name {1}" +
|
||||
"to {2}").format(
|
||||
node['id'], k, nodes_hostnames[k]))
|
||||
self.fuel_web.client.set_hostname(
|
||||
node['id'],
|
||||
nodes_hostnames[k])
|
||||
if verify_network:
|
||||
self.fuel_web.verify_network(self.cluster_id)
|
||||
self.fuel_web.deploy_cluster_wait(self.cluster_id,
|
||||
check_services=check_services,
|
||||
timeout=timeout)
|
||||
|
||||
def verify_custom_hostnames(self, nodes_hostnames):
|
||||
"""Verify nodes hostnames after cluster deployment.
|
||||
|
||||
:param nodes_hostnames: nodes to hostnames mapping (default: None).
|
||||
:type nodes_hostnames: dict
|
||||
:returns: None
|
||||
"""
|
||||
# Verify that new hostnames are applied on the nodes
|
||||
for node in self.fuel_web.client.list_cluster_nodes(self.cluster_id):
|
||||
prev_node_name = filter(
|
||||
lambda(x): node['name'].startswith(x),
|
||||
nodes_hostnames.keys())
|
||||
asserts.assert_true(
|
||||
len(prev_node_name) > 0,
|
||||
"Can not retrieve any node for name {0}".format(node['name']))
|
||||
asserts.assert_true(
|
||||
len(prev_node_name) == 1,
|
||||
"Too many match for node name {0}: {1}".format(
|
||||
node['name'], prev_node_name))
|
||||
custom_hostname = nodes_hostnames[prev_node_name[0]]
|
||||
devops_node = self.fuel_web.get_devops_node_by_nailgun_node(
|
||||
node)
|
||||
logger.info("Checking node name: {0} hostname: {1}".format(
|
||||
node['name'], node['hostname']))
|
||||
with self.env.d_env.get_admin_remote() as admin_remote:
|
||||
# Must add SSH options because of cinder node(s)
|
||||
cmd = ("ssh -o StrictHostKeyChecking=no -q {0}" +
|
||||
" hostname -s").format(node['hostname'])
|
||||
logger.debug("Launching ssh cmd: {0}".format(cmd))
|
||||
cmd_ret = admin_remote.execute(cmd)
|
||||
logger.debug("ssh cmd results: {0}".format(cmd_ret))
|
||||
hostname = cmd_ret['stdout'][0].strip()
|
||||
asserts.assert_equal(
|
||||
custom_hostname,
|
||||
hostname,
|
||||
"Failed to apply the new '{0}' hostname to '{1}' node. "
|
||||
"Current hostname is '{2}'".format(
|
||||
custom_hostname, devops_node.name, hostname))
|
||||
|
||||
def run_ostf(self, *args, **kwargs):
|
||||
"""Run the OpenStack health checks."""
|
||||
self.fuel_web.run_ostf(self.cluster_id, *args, **kwargs)
|
||||
|
@ -72,6 +72,7 @@ def import_tests():
|
||||
from stacklight_tests.toolchain import test_system # noqa
|
||||
from stacklight_tests.zabbix import test_destructive # noqa
|
||||
from stacklight_tests.zabbix import test_functional # noqa
|
||||
from stacklight_tests.zabbix import test_regression # noqa
|
||||
from stacklight_tests.zabbix import test_smoke_bvt # noqa
|
||||
from stacklight_tests.zabbix import test_system # noqa
|
||||
|
||||
|
74
stacklight_tests/zabbix/test_regression.py
Normal file
74
stacklight_tests/zabbix/test_regression.py
Normal file
@ -0,0 +1,74 @@
|
||||
# coding=utf-8
|
||||
# Copyright 2017 Mirantis, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from proboscis import test
|
||||
|
||||
from stacklight_tests.zabbix import api
|
||||
|
||||
from fuelweb_test.helpers.decorators import log_snapshot_after_test
|
||||
|
||||
|
||||
@test(groups=["plugins"])
|
||||
class TestZabbixPluginRegression(api.ZabbixApi):
|
||||
"""Class for regression testing the Zabbix plugin."""
|
||||
|
||||
@test(depends_on_groups=["prepare_slaves_5"],
|
||||
groups=["deploy_zabbix_custom_hostnames", "zabbix", "regression",
|
||||
"bugs", "bug_1633701"])
|
||||
@log_snapshot_after_test
|
||||
def deploy_zabbix_custom_hostnames(self):
|
||||
"""Change default nodes hostnames and deploy environment
|
||||
|
||||
Scenario:
|
||||
1. Copy Zabbix plugin to the Fuel Master
|
||||
node and install the plugin.
|
||||
2. Create an environment with enabled plugin in the
|
||||
Fuel Web UI and change nodes default hostnames.
|
||||
3. Deploy environment.
|
||||
4. Check plugin health.
|
||||
|
||||
Duration 60m
|
||||
"""
|
||||
self.env.revert_snapshot("ready_with_5_slaves")
|
||||
|
||||
self.prepare_plugin()
|
||||
|
||||
self.helpers.create_cluster(name=self.__class__.__name__)
|
||||
|
||||
self.activate_plugin()
|
||||
|
||||
nodes_hostnames = {
|
||||
'slave-01': 'controller-A',
|
||||
'slave-02': 'controller-B',
|
||||
'slave-03': 'controller-C',
|
||||
'slave-04': 'compute-A',
|
||||
'slave-05': 'cinder-A'
|
||||
}
|
||||
|
||||
self.helpers.deploy_cluster(
|
||||
{
|
||||
'slave-01': ['controller'],
|
||||
'slave-02': ['controller'],
|
||||
'slave-03': ['controller'],
|
||||
'slave-04': ['compute'],
|
||||
'slave-05': ['cinder']
|
||||
}, timeout=10800,
|
||||
check_services=False,
|
||||
nodes_hostnames=nodes_hostnames
|
||||
)
|
||||
|
||||
self.helpers.verify_custom_hostnames(nodes_hostnames)
|
||||
|
||||
self.check_plugin_online()
|
Loading…
Reference in New Issue
Block a user