]>
git.proxmox.com Git - pve-guest-common.git/blob - PVE/GuestHelpers.pm
1 package PVE
::GuestHelpers
;
9 # We use a separate lock to block migration while a replication job
12 our $lockdir = '/var/lock/pve-manager';
14 sub guest_migration_lock
{
15 my ($vmid, $timeout, $func, @param) = @_;
17 my $lockid = "pve-migrate-$vmid";
21 my $res = PVE
::Tools
::lock_file
("$lockdir/$lockid", $timeout, $func, @param);
27 sub check_hookscript
{
28 my ($volid, $storecfg) = @_;
30 $storecfg = PVE
::Storage
::config
() if !defined($storecfg);
31 my ($path, undef, $type) = PVE
::Storage
::path
($storecfg, $volid);
33 die "'$volid' is not in the snippets directory\n"
34 if $type ne 'snippets';
36 die "script '$volid' does not exists\n"
39 die "script '$volid' is not executable\n"
46 my ($conf, $vmid, $phase, $stop_on_error) = @_;
48 return if !$conf->{hookscript
};
49 my $hookscript = eval { check_hookscript
($conf->{hookscript
}) };
60 PVE
::Tools
::run_command
([$hookscript, $vmid, $phase]);
64 my $errmsg = "hookscript error for $vmid on $phase: $err\n";