Skip to content

Commit 8132e13

Browse files
committed
BugFix: support nfs-server.service unit name on SLES 16
SLES 16 ships the upstream nfs-utils unit (nfs-server.service) and no longer provides the legacy SUSE nfsserver.service alias. The Suse branch of NFSServer hard-coded 'nfsserver', causing 'systemctl restart nfsserver' to exit 5 ('Unit nfsserver.service not found') and storage-over-NFS performance tests to fail at the configure step. Probe both service names at runtime and use whichever exists, so SLES 12/15 ('nfsserver') and SLES 16+ ('nfs-server') both work.
1 parent 232f833 commit 8132e13

1 file changed

Lines changed: 19 additions & 4 deletions

File tree

lisa/tools/nfs_server.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@ def command(self) -> str:
1919
def can_install(self) -> bool:
2020
return True
2121

22+
def _get_suse_service_name(self) -> str:
23+
# SLES 15 and older expose the NFS server as ``nfsserver.service``.
24+
# SLES 16 has switched to the upstream ``nfs-server.service`` unit
25+
# name and the legacy alias is no longer shipped. Probe which one
26+
# actually exists so the tool keeps working on both.
27+
service = self.node.tools[Service]
28+
for name in ("nfs-server", "nfsserver"):
29+
if service.check_service_exists(name):
30+
return name
31+
# Fall back to the upstream name; restart will surface a clear
32+
# ``Unit nfs-server.service not found`` error if NFS is missing.
33+
return "nfs-server"
34+
2235
def create_shared_dir(self, client_ips: List[str], dir_name: str) -> None:
2336
# create directory to share
2437
self.node.execute(f"chmod -R a+rwX {dir_name}", sudo=True)
@@ -51,7 +64,7 @@ def create_shared_dir(self, client_ips: List[str], dir_name: str) -> None:
5164
)
5265
elif isinstance(self.node.os, Suse):
5366
self.node.tools[Service].restart_service(
54-
"nfsserver",
67+
self._get_suse_service_name(),
5568
)
5669
else:
5770
raise UnsupportedDistroException(self.node.os)
@@ -63,7 +76,7 @@ def is_running(self) -> bool:
6376
elif isinstance(self.node.os, Debian):
6477
return service.check_service_exists("nfs-kernel-server")
6578
elif isinstance(self.node.os, Suse):
66-
return service.check_service_exists("nfsserver")
79+
return service.check_service_exists(self._get_suse_service_name())
6780
else:
6881
raise UnsupportedDistroException(self.node.os)
6982

@@ -74,7 +87,7 @@ def stop(self) -> None:
7487
elif isinstance(self.node.os, Debian):
7588
service.stop_service("nfs-kernel-server")
7689
elif isinstance(self.node.os, Suse):
77-
service.stop_service("nfsserver")
90+
service.stop_service(self._get_suse_service_name())
7891
else:
7992
raise UnsupportedDistroException(self.node.os)
8093

@@ -96,6 +109,8 @@ def _check_exists(self) -> bool:
96109
elif isinstance(self.node.os, Debian):
97110
return self.node.tools[Service].check_service_exists("nfs-kernel-server")
98111
elif isinstance(self.node.os, Suse):
99-
return self.node.tools[Service].check_service_exists("nfs-server")
112+
return self.node.tools[Service].check_service_exists(
113+
self._get_suse_service_name()
114+
)
100115
else:
101116
raise UnsupportedDistroException(self.node.os)

0 commit comments

Comments
 (0)