File 0002-Test-cts-temporarily-disable-any-enabled-cluster-ser.patch of Package pacemaker.19404
9394c8a58 Test: cts: temporarily disable any enabled cluster serivces when running remote tests
cts/CTStests.py | 27 +++++++++++++++++++++++++++
cts/environment.py | 18 ++++++++++++++++++
2 files changed, 45 insertions(+)
Index: pacemaker-1.1.18+20180430.b12c320f5/cts/CTStests.py
===================================================================
--- pacemaker-1.1.18+20180430.b12c320f5.orig/cts/CTStests.py
+++ pacemaker-1.1.18+20180430.b12c320f5/cts/CTStests.py
@@ -2685,6 +2685,22 @@ class RemoteDriver(CTSTest):
if not self.failed:
self.remote_node_added = 1
+ def disable_services(self, node):
+ self.corosync_enabled = self.Env.service_is_enabled(node, "corosync")
+ if self.corosync_enabled:
+ self.Env.disable_service(node, "corosync")
+
+ self.pacemaker_enabled = self.Env.service_is_enabled(node, "pacemaker")
+ if self.pacemaker_enabled:
+ self.Env.disable_service(node, "pacemaker")
+
+ def restore_services(self, node):
+ if self.corosync_enabled:
+ self.Env.enable_service(node, "corosync")
+
+ if self.pacemaker_enabled:
+ self.Env.enable_service(node, "pacemaker")
+
def stop_pcmk_remote(self, node):
# disable pcmk remote
for i in range(10):
@@ -2714,6 +2730,15 @@ class RemoteDriver(CTSTest):
self.rsh(node, "killall -CONT pacemaker_remoted")
def start_metal(self, node):
+ # Cluster nodes are reused as remote nodes in remote tests. If cluster
+ # services were enabled at boot, in case the remote node got fenced, the
+ # cluster node would join instead of the expected remote one. Meanwhile
+ # pacemaker_remote would not be able to start. Depending on the chances,
+ # the situations might not be able to be orchestrated gracefully any more.
+ #
+ # Temporarily disable any enabled cluster serivces.
+ self.disable_services(node)
+
pcmk_started = 0
# make sure the resource doesn't already exist for some reason
@@ -2886,6 +2911,8 @@ class RemoteDriver(CTSTest):
return
def cleanup_metal(self, node):
+ self.restore_services(node)
+
if self.pcmk_started == 0:
return
Index: pacemaker-1.1.18+20180430.b12c320f5/cts/environment.py
===================================================================
--- pacemaker-1.1.18+20180430.b12c320f5.orig/cts/environment.py
+++ pacemaker-1.1.18+20180430.b12c320f5/cts/environment.py
@@ -198,6 +198,24 @@ class Environment(object):
# default
self["syslogd"] = "rsyslog"
+ def disable_service(self, node, service):
+ if self["have_systemd"]:
+ # Systemd
+ return self.rsh(node, "systemctl disable %s" % service)
+
+ else:
+ # SYS-V
+ return self.rsh(node, "chkconfig %s off" % service)
+
+ def enable_service(self, node, service):
+ if self["have_systemd"]:
+ # Systemd
+ return self.rsh(node, "systemctl enable %s" % service)
+
+ else:
+ # SYS-V
+ return self.rsh(node, "chkconfig %s on" % service)
+
def service_is_enabled(self, node, service):
if self["have_systemd"]:
# Systemd