Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP4:GA
pacemaker.14737
0002-Test-cts-temporarily-disable-any-enabled-c...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0002-Test-cts-temporarily-disable-any-enabled-cluster-ser-1.1.patch of Package pacemaker.14737
From ee8046503c9c9d699dd2f24d8b509f3743358825 Mon Sep 17 00:00:00 2001 From: "Gao,Yan" <ygao@suse.com> Date: Fri, 18 Jan 2019 18:14:13 +0100 Subject: [PATCH 2/2] Test: cts: temporarily disable any enabled cluster serivces when running remote tests 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. --- cts/CTStests.py | 34 ++++++++++++++++++++++++++++++++++ cts/environment.py | 18 ++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/cts/CTStests.py b/cts/CTStests.py index 4e3fda019..b6cb31d5c 100644 --- a/cts/CTStests.py +++ b/cts/CTStests.py @@ -2721,6 +2721,29 @@ class RemoteDriver(CTSTest): if not self.failed: self.remote_node_added = 1 + def disable_services(self, node): + self.heartbeat_enabled = self.Env.service_is_enabled(node, "heartbeat") + if self.heartbeat_enabled: + self.Env.disable_service(node, "heartbeat") + + 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.heartbeat_enabled: + self.Env.enable_service(node, "heartbeat") + + 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): @@ -2750,6 +2773,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 services. + self.disable_services(node) + pcmk_started = 0 # make sure the resource doesn't already exist for some reason @@ -2922,6 +2954,8 @@ class RemoteDriver(CTSTest): return def cleanup_metal(self, node): + self.restore_services(node) + if self.pcmk_started == 0: return diff --git a/cts/environment.py b/cts/environment.py index 67b0f6426..02b962ce6 100644 --- a/cts/environment.py +++ b/cts/environment.py @@ -224,6 +224,24 @@ class Environment: # 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 -- 2.16.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor