From cae3d3273238b98a9d89709b616a53fa8234d5c4 Mon Sep 17 00:00:00 2001 From: Thomas Lamprecht Date: Fri, 24 Jul 2020 13:48:42 +0200 Subject: [PATCH] api/services: improve essential service check, allow reload and start reload is actually preferred, and even if most of the time this even won't reach the API, allowing to start them is still definitively fine! Signed-off-by: Thomas Lamprecht --- PVE/API2/Services.pm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/PVE/API2/Services.pm b/PVE/API2/Services.pm index a504dcd5..e5b3c3da 100644 --- a/PVE/API2/Services.pm +++ b/PVE/API2/Services.pm @@ -34,6 +34,11 @@ my $service_name_list = [ 'ksmtuned', 'systemd-timesyncd', ]; +my $essential_services = { + pveproxy => 1, + pvedaemon => 1, + 'pve-cluster' => 1, +}; # since postfix package 3.1.0-3.1 the postfix unit is only here to # manage subinstances, of which the default is called "-". @@ -92,17 +97,12 @@ my $service_cmd = sub { my $initd_cmd; - die "unknown service command '$cmd'\n" - if $cmd !~ m/^(start|stop|restart|reload)$/; + die "unknown service command '$cmd'\n" if $cmd !~ m/^(start|stop|restart|reload|try-reload-or-restart)$/; - if ($service eq 'pvecluster' || $service eq 'pvedaemon' || $service eq 'pveproxy') { - if ($cmd eq 'restart') { - # OK - } else { - die "invalid service cmd '$service $cmd': ERROR"; - } + if ($essential_services->{$service} && $cmd eq 'stop') { + die "invalid service cmd '$service $cmd': refusing to stop essential service!\n"; } - + PVE::Tools::run_command(['systemctl', $cmd, $service]); }; -- 2.39.5