fix(revpiconfig): Ensure systemd reloads after unit changes
Added systemd reload calls after unit enable/disable to reflect changes. Adjusted DBus method calls to capture and utilize change outputs effectively. This improves reliability in applying unit modifications.
This commit is contained in:
@@ -665,13 +665,29 @@ def simple_systemd(action: ConfigActions, unit: str):
|
|||||||
systemd_manager = systemd["org.freedesktop.systemd1.Manager"]
|
systemd_manager = systemd["org.freedesktop.systemd1.Manager"]
|
||||||
|
|
||||||
if action is ConfigActions.ENABLE:
|
if action is ConfigActions.ENABLE:
|
||||||
systemd_manager.UnmaskUnitFiles([unit], False)
|
# Dbus call: UnmaskUnitFiles(in as files, in b runtime, out a(sss) changes
|
||||||
systemd_manager.EnableUnitFiles([unit], False, False)
|
lst_change_unmask = systemd_manager.UnmaskUnitFiles([unit], False)
|
||||||
|
|
||||||
|
# Dbus call: EnableUnitFiles(in as files, in b runtime, in b force,
|
||||||
|
# out b carries_install_info, out a(sss) changes
|
||||||
|
lst_change_enable = systemd_manager.EnableUnitFiles([unit], False, False)
|
||||||
|
if lst_change_unmask or lst_change_enable:
|
||||||
|
# Reload systemd after modified unit property
|
||||||
|
systemd_manager.Reload()
|
||||||
|
|
||||||
|
# Dbus call: StartUnit(in s name, in s mode, out o job
|
||||||
systemd_manager.StartUnit(unit, "replace")
|
systemd_manager.StartUnit(unit, "replace")
|
||||||
|
|
||||||
elif action is ConfigActions.DISABLE:
|
elif action is ConfigActions.DISABLE:
|
||||||
|
|
||||||
|
# Dbus call: StopUnit(in s name,in s mode, out o job
|
||||||
systemd_manager.StopUnit(unit, "replace")
|
systemd_manager.StopUnit(unit, "replace")
|
||||||
systemd_manager.DisableUnitFiles([unit], False)
|
|
||||||
|
# Dbus call: DisableUnitFiles (in as files, in b runtime, out a(sss) changes)
|
||||||
|
change = systemd_manager.DisableUnitFiles([unit], False)
|
||||||
|
if change:
|
||||||
|
# Reload systemd after modified unit property
|
||||||
|
systemd_manager.Reload()
|
||||||
|
|
||||||
elif action is ConfigActions.STATUS:
|
elif action is ConfigActions.STATUS:
|
||||||
try:
|
try:
|
||||||
@@ -696,6 +712,8 @@ def simple_systemd(action: ConfigActions, unit: str):
|
|||||||
else:
|
else:
|
||||||
raise ValueError(f"action {action} not supported")
|
raise ValueError(f"action {action} not supported")
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
rc = RevPiConfig()
|
rc = RevPiConfig()
|
||||||
|
|||||||
Reference in New Issue
Block a user