From d438bb3e672e9296ee418e26246a2cf822f6459d 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]); };