Fix reload for services without reload functionality.

This commit is contained in:
r-vdp 2023-06-29 17:10:39 +02:00
parent 9ddb6340d9
commit 1454525760
No known key found for this signature in database
4 changed files with 63 additions and 18 deletions

View file

@ -89,7 +89,7 @@ pub fn activate(
wait_for_jobs(
&service_manager,
&job_monitor,
reload_units(&service_manager, convert_services(&services_to_reload))
reload_or_restart_units(&service_manager, convert_services(&services_to_reload))
+ start_units(&service_manager, ["system-manager.target"]),
&timeout,
)
@ -229,12 +229,15 @@ where
for_each_unit(|s| service_manager.stop_unit(s), units.as_ref(), "stopping")
}
fn reload_units<'a, U>(service_manager: &systemd::ServiceManager, units: U) -> HashSet<JobId>
fn reload_or_restart_units<'a, U>(
service_manager: &systemd::ServiceManager,
units: U,
) -> HashSet<JobId>
where
U: AsRef<[&'a str]>,
{
for_each_unit(
|s| service_manager.reload_unit(s),
|s| service_manager.reload_or_restart_unit(s),
units.as_ref(),
"reloading",
)

View file

@ -235,9 +235,13 @@ impl ServiceManager {
Ok(true)
}
pub fn reload_unit(&self, unit_name: &str) -> Result<Job, Error> {
pub fn reload_or_restart_unit(&self, unit_name: &str) -> Result<Job, Error> {
Ok(Job {
path: OrgFreedesktopSystemd1Manager::reload_unit(&self.proxy, unit_name, "replace")?,
path: OrgFreedesktopSystemd1Manager::reload_or_restart_unit(
&self.proxy,
unit_name,
"replace",
)?,
})
}