Skip to content

Commit e2bc4ab

Browse files
committed
Added support and tests for Sys V service files
1 parent cd62b3a commit e2bc4ab

File tree

3 files changed

+75
-0
lines changed

3 files changed

+75
-0
lines changed

changelog/67888.fixed.md

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added service files for specific rpm packages to /etc/init.d

pkg/rpm/salt.spec

+11
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,13 @@ install -p -m 0644 %{_salt_src}/doc/man/salt-api.1 %{buildroot}%{_mandir}/man1/s
308308
install -p -m 0644 %{_salt_src}/doc/man/salt-cloud.1 %{buildroot}%{_mandir}/man1/salt-cloud.1
309309
install -p -m 0644 %{_salt_src}/doc/man/salt-ssh.1 %{buildroot}%{_mandir}/man1/salt-ssh.1
310310

311+
# Sys V service files
312+
mkdir -p %{buildroot}%{_sysconfdir}/init.d
313+
install -p -m 0755 %{_salt_src}/pkg/rpm/salt-minion %{buildroot}%{_sysconfdir}/init.d/salt-minion
314+
install -p -m 0755 %{_salt_src}/pkg/rpm/salt-master %{buildroot}%{_sysconfdir}/init.d/salt-master
315+
install -p -m 0755 %{_salt_src}/pkg/rpm/salt-syndic %{buildroot}%{_sysconfdir}/init.d/salt-syndic
316+
install -p -m 0755 %{_salt_src}/pkg/rpm/salt-api %{buildroot}%{_sysconfdir}/init.d/salt-api
317+
311318

312319
%clean
313320
rm -rf %{buildroot}
@@ -360,6 +367,7 @@ rm -rf %{buildroot}
360367
%dir %attr(0750, salt, salt) %{_var}/cache/salt/master/roots/
361368
%dir %attr(0750, salt, salt) %{_var}/cache/salt/master/syndics/
362369
%dir %attr(0750, salt, salt) %{_var}/cache/salt/master/tokens/
370+
%{_sysconfdir}/init.d/salt-master
363371

364372

365373
%files minion
@@ -377,19 +385,22 @@ rm -rf %{buildroot}
377385
%config(noreplace) %{_sysconfdir}/salt/pki/minion
378386
%dir %{_sysconfdir}/salt/minion.d
379387
%dir %attr(0750, root, root) %{_var}/cache/salt/minion/
388+
%{_sysconfdir}/init.d/salt-minion
380389

381390

382391
%files syndic
383392
%doc %{_mandir}/man1/salt-syndic.1*
384393
%{_bindir}/salt-syndic
385394
%{_unitdir}/salt-syndic.service
395+
%{_sysconfdir}/init.d/salt-syndic
386396

387397

388398
%files api
389399
%defattr(-,root,root)
390400
%doc %{_mandir}/man1/salt-api.1*
391401
%{_bindir}/salt-api
392402
%{_unitdir}/salt-api.service
403+
%{_sysconfdir}/init.d/salt-api
393404

394405

395406
%files cloud

tests/pytests/pkg/upgrade/test_salt_upgrade.py

+63
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import logging
2+
import os
3+
import subprocess
24
import sys
35
import time
46

@@ -7,6 +9,8 @@
79
import pytest
810
from pytestskipmarkers.utils import platform
911

12+
import salt.utils.path
13+
1014
log = logging.getLogger(__name__)
1115

1216

@@ -126,6 +130,65 @@ def _get_running_named_salt_pid(process_name):
126130
return pids
127131

128132

133+
def test_salt_sysv_service_files(salt_call_cli, install_salt):
134+
"""
135+
Test an upgrade of Salt, Minion and Master
136+
"""
137+
if not install_salt.upgrade:
138+
pytest.skip("Not testing an upgrade, do not run")
139+
140+
if sys.platform != "linux":
141+
pytest.skip("Not testing on a Linux platform, do not run")
142+
143+
if not (salt.utils.path.which("dpkg") or salt.utils.path.which("rpm")):
144+
pytest.skip("Not testing on a Debian or RedHat family platform, do not run")
145+
146+
print(
147+
f"DGM test_salt_sysv_service_files entry install_salt, '{install_salt}'",
148+
flush=True,
149+
)
150+
151+
test_pkgs = install_salt.config_path.pkgs
152+
print(f"DGM test_salt_sysv_service_files test_pkgs, '{test_pkgs}'", flush=True)
153+
for test_pkg_name in test_pkgs:
154+
test_pkg_basename = os.path.bashname(test_pkg_name)
155+
test_pkg_basename_adj = test_pkg_basename.split("_")
156+
print(
157+
f"DGM test_salt_sysv_service_files test_pkg_basename_adj '{test_pkg_basename_adj}' from name test_pkg_basename '{test_pkg_basename}'",
158+
flush=True,
159+
)
160+
if test_pkg_basename_adj in (
161+
"salt-minion",
162+
"salt-master",
163+
"salt-syndic",
164+
"salt-api",
165+
):
166+
test_initd_name = f"/etc/init.d/{test_pkg_basename_adj}"
167+
if salt.utils.path.which("dpkg"):
168+
proc = subprocess.run(
169+
["dpkg", "-q", "-c", f"{test_pkg_name}"],
170+
capture_output=True,
171+
check=True,
172+
)
173+
elif salt.utils.path.which("rpm"):
174+
proc = subprocess.run(
175+
["rpm", "-q", "-l", "-p", f"{test_pkg_name}"],
176+
capture_output=True,
177+
check=True,
178+
)
179+
found_line = False
180+
for line in proc.stdout.decode().splitlines():
181+
# If test_initd_name not present we should fail.
182+
if line == test_initd_name:
183+
found_line = True
184+
print(
185+
f"DGM test_salt_sysv_service_files test_initd_name, '{test_initd_name}' was FOUND",
186+
flush=True,
187+
)
188+
189+
assert found_line
190+
191+
129192
def test_salt_upgrade(salt_call_cli, install_salt):
130193
"""
131194
Test an upgrade of Salt, Minion and Master

0 commit comments

Comments
 (0)