pve-manager/bin/pve-startall-delay
Thomas Lamprecht ca0fc07dd4 fix #844: allow to pre-delay start-all-marked guests on boot
Add a simple ExecStartPre command which reads the local node config,
and if a delay is set the helper sleeps that long then exists.

The systemd-unit approach was chosen as this ensures that we really
only delay when doing the startall on node boot. The pve-guests
service does not allows manual stops, starts or restarts, it can only
be pulled in by the multi-user.target

Mark this command with "-" to tell systemd that errors of it should
not cause an abort, it's a best-effort approach.

The journal from a 2 second delay would look like:
> Nov 19 13:13:48 dev6 systemd[1]: Starting PVE guests...
> Nov 19 13:13:48 dev6 pve-startall-delay[2318]: Delaying on-boot 'startall' command for 2 second(s).
> ...
> Nov 19 13:13:50 dev6 pve-guests[2339]: <root@pam> starting task UPID:dev6:00000924:00000529:5DD3DC7E:startall::root@pam:

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
2019-11-20 20:20:58 +01:00

19 lines
412 B
Perl
Executable File

#!/usr/bin/perl
use strict;
use warnings;
use PVE::INotify;
use PVE::NodeConfig;
my $local_node = PVE::INotify::nodename();
my $node_config = eval { PVE::NodeConfig::load_config($local_node) } // {};
if (my $delay = $node_config->{'startall-onboot-delay'}) {
warn "Delaying on-boot 'startall' command for $delay second(s).\n";
sleep($delay); # don't care for interrupts, best effort only
}
exit 0;