Use correct pcs resource name for rabbitmq-server resource
1) introduce additional pacemaker helper to get correct resource name for multi-state resources 2) alter strength tests to use the correct name Change-Id: Ibe97e2d7cadf475354e1ed77b41deff6faf68151 Closes-bug: #1551708
This commit is contained in:
parent
cd9c3d2913
commit
34d1ac7fec
|
@ -13,7 +13,7 @@
|
|||
# under the License.
|
||||
from xml.etree import ElementTree
|
||||
|
||||
from fuelweb_test.helpers.utils import run_on_remote_get_results
|
||||
from fuelweb_test.helpers.ssh_manager import SSHManager
|
||||
|
||||
|
||||
def get_pacemaker_nodes_attributes(cibadmin_status_xml):
|
||||
|
@ -98,11 +98,32 @@ def get_pcs_nodes(pcs_status_xml):
|
|||
return nodes
|
||||
|
||||
|
||||
def parse_pcs_status_xml(remote):
|
||||
def parse_pcs_status_xml(remote_ip):
|
||||
"""Parse 'pcs status xml'. <Nodes> section
|
||||
:param remote: SSHClient instance
|
||||
:param remote_ip: remote IP address
|
||||
:return: nested dictionary with node-fqdn and attribute name as keys
|
||||
"""
|
||||
pcs_status_dict = run_on_remote_get_results(
|
||||
remote, 'pcs status xml')['stdout_str']
|
||||
pcs_status_dict = SSHManager().execute_on_remote(
|
||||
remote_ip, 'pcs status xml')['stdout_str']
|
||||
return pcs_status_dict
|
||||
|
||||
|
||||
def get_pacemaker_resource_name(remote_ip, resource_name):
|
||||
""" Parse 'cibadmin -Q --scope resources' and check whether the resource
|
||||
is multistate. Return parent resource name if it is, resource name
|
||||
otherwise
|
||||
:param remote_ip: remote IP address
|
||||
:param resource_name: resource name string
|
||||
:return: string with proper resource name
|
||||
"""
|
||||
cib = SSHManager().execute_on_remote(
|
||||
remote_ip, 'cibadmin -Q --scope resources')['stdout_str']
|
||||
root = ElementTree.fromstring(cib)
|
||||
|
||||
resource_parent = root.find(
|
||||
".//primitive[@id='{0}']/..".format(resource_name))
|
||||
|
||||
if resource_parent.tag in ['master', 'clone']:
|
||||
return resource_parent.attrib['id']
|
||||
else:
|
||||
return resource_name
|
||||
|
|
|
@ -39,6 +39,13 @@ class TestBasic(object):
|
|||
self.__env = None
|
||||
self.__current_log_step = 0
|
||||
self.__test_program = None
|
||||
self.__fuel_constants = {
|
||||
'rabbit_pcs_name': 'p_rabbitmq-server'
|
||||
}
|
||||
|
||||
@property
|
||||
def fuel_constants(self):
|
||||
return self.__fuel_constants
|
||||
|
||||
@property
|
||||
def ssh_manager(self):
|
||||
|
|
|
@ -38,6 +38,7 @@ from fuelweb_test.helpers.checkers import check_public_ping
|
|||
from fuelweb_test.helpers.utils import get_file_size
|
||||
from fuelweb_test.helpers.utils import RunLimit
|
||||
from fuelweb_test.helpers.utils import TimeStat
|
||||
from fuelweb_test.helpers.pacemaker import get_pacemaker_resource_name
|
||||
from fuelweb_test.helpers.utils import run_on_remote
|
||||
from fuelweb_test.settings import DEPLOYMENT_MODE
|
||||
from fuelweb_test.settings import DNS
|
||||
|
@ -1353,6 +1354,9 @@ class TestHaFailoverBase(TestBasic):
|
|||
|
||||
# get rabbit slaves
|
||||
rabbit_slaves = self.fuel_web.get_rabbit_slaves_node(p_d_ctrl.name)
|
||||
rabbit_resource_name = get_pacemaker_resource_name(
|
||||
self.fuel_web.get_node_ip_by_devops_name(p_d_ctrl.name),
|
||||
self.fuel_constants['rabbit_pcs_name'])
|
||||
assert_true(rabbit_slaves,
|
||||
'Can not find rabbit slaves. On count {0} '
|
||||
'current result is {1}'.format(count, rabbit_slaves))
|
||||
|
@ -1375,32 +1379,45 @@ class TestHaFailoverBase(TestBasic):
|
|||
|
||||
logger.info('Slaves rabbit fqdn {0} '
|
||||
'on count {1}'.format(slaves_rabbit_fqdn, count))
|
||||
with self.fuel_web.get_ssh_for_node(
|
||||
master_rabbit.name) as remote_master_rabbit:
|
||||
cmd = ('pcs constraint delete '
|
||||
'location-p_rabbitmq-server 2>&1 >/dev/null| true')
|
||||
remote_master_rabbit.execute(cmd)
|
||||
|
||||
self.show_step(5, details='Run count: {0}'.format(count))
|
||||
# Move resource to rabbit slave
|
||||
cmd_move = ('pcs constraint location p_rabbitmq-server '
|
||||
'rule role=master score=-INFINITY \#uname '
|
||||
'ne {0}').format(slaves_rabbit_fqdn[0])
|
||||
result = remote_master_rabbit.execute(cmd_move)
|
||||
assert_equal(
|
||||
result['exit_code'], 0,
|
||||
'Fail to move p_rabbitmq-server with {0} on '
|
||||
'count {1}'.format(result, count))
|
||||
master_rabbit_ip = self.fuel_web.get_node_ip_by_devops_name(
|
||||
master_rabbit.name)
|
||||
|
||||
cmd = (
|
||||
'pcs constraint delete '
|
||||
'location-{0} 2>&1 >/dev/null| true'.format(
|
||||
rabbit_resource_name))
|
||||
|
||||
self.ssh_manager.execute_on_remote(master_rabbit_ip, cmd)
|
||||
|
||||
self.show_step(5, details='Run count: {0}'.format(count))
|
||||
# Move resource to rabbit slave
|
||||
cmd_move = ('pcs constraint location {0} '
|
||||
'rule role=master score=-INFINITY \#uname '
|
||||
'ne {1}').format(rabbit_resource_name,
|
||||
slaves_rabbit_fqdn[0])
|
||||
|
||||
result = self.ssh_manager.execute_on_remote(
|
||||
master_rabbit_ip, cmd_move, raise_on_assert=False)
|
||||
|
||||
assert_equal(
|
||||
result['exit_code'], 0,
|
||||
'Fail to move p_rabbitmq-server with {0} on '
|
||||
'count {1}'.format(result, count))
|
||||
|
||||
# Clear all
|
||||
self.show_step(6, details='Run count: {0}'.format(count))
|
||||
cmd_clear = ('pcs constraint delete '
|
||||
'location-{0}').format(rabbit_resource_name)
|
||||
|
||||
result = self.ssh_manager.execute_on_remote(
|
||||
master_rabbit_ip, cmd_clear, raise_on_assert=False)
|
||||
|
||||
assert_equal(
|
||||
result['exit_code'], 0,
|
||||
'Fail to delete pcs constraint using {0} on '
|
||||
'count {1}'.format(cmd_clear, count))
|
||||
|
||||
# Clear all
|
||||
self.show_step(6, details='Run count: {0}'.format(count))
|
||||
cmd_clear = ('pcs constraint delete '
|
||||
'location-p_rabbitmq-server')
|
||||
result = remote_master_rabbit.execute(cmd_clear)
|
||||
assert_equal(
|
||||
result['exit_code'], 0,
|
||||
'Fail to delete pcs constraint using {0} on '
|
||||
'count {1}'.format(cmd_clear, count))
|
||||
# check ha
|
||||
self.show_step(7)
|
||||
self.fuel_web.assert_ha_services_ready(cluster_id, timeout=700)
|
||||
|
|
Loading…
Reference in New Issue