* [pve-devel] [PATCH qemu-server/pve-container/pve-docs 0/1] Add pre/post-clone hooks
@ 2022-09-23 9:55 Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-container 1/1] Add CT hooks for pre/post-clone Stefan Hanreich
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Stefan Hanreich @ 2022-09-23 9:55 UTC (permalink / raw)
To: pve-devel
This patch adds pre/post-clone hooks when the when the user clones a CT/VM
from the Web UI / CLI. I have tested this with both VMs/CTs via Web UI and CLI.
Are there any other places where the hook should get triggered that I missed?
Clone is a bit special since it can either target the same node or a different
node. In the second case, we could also add additional events that fire on the
respective target machine (pre/post-clone-target). In this case the other events
should also be called (pre/post-clone-source) I think. Not sure if there is a
use case for this though. For now we only run the hooks on the source machine, I
think this should suffice. What do you think?
pve-container:
Stefan Hanreich (1):
Add CT hooks for pre/post-clone
src/PVE/API2/LXC.pm | 4 ++++
1 file changed, 4 insertions(+)
pve-docs:
Stefan Hanreich (1):
add pre/post-clone events to example hookscript
examples/guest-example-hookscript.pl | 12 ++++++++++++
1 file changed, 12 insertions(+)
qemu-server:
Stefan Hanreich (1):
Add VM hooks for pre/post-clone
PVE/API2/Qemu.pm | 4 ++++
1 file changed, 4 insertions(+)
--
2.30.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pve-devel] [PATCH pve-container 1/1] Add CT hooks for pre/post-clone
2022-09-23 9:55 [pve-devel] [PATCH qemu-server/pve-container/pve-docs 0/1] Add pre/post-clone hooks Stefan Hanreich
@ 2022-09-23 9:55 ` Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-docs 1/1] add pre/post-clone events to example hookscript Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH qemu-server 1/1] Add VM hooks for pre/post-clone Stefan Hanreich
2 siblings, 0 replies; 5+ messages in thread
From: Stefan Hanreich @ 2022-09-23 9:55 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
src/PVE/API2/LXC.pm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 589f96f..d6ebc08 100644
--- a/src/PVE/API2/LXC.pm
+++ b/src/PVE/API2/LXC.pm
@@ -1609,6 +1609,8 @@ __PACKAGE__->register_method({
local $SIG{QUIT} =
local $SIG{HUP} = sub { die "interrupted by signal\n"; };
+ PVE::GuestHelpers::exec_hookscript($newconf, $newid, "pre-clone", 1);
+
PVE::Storage::activate_volumes($storecfg, $vollist, $snapname);
my $bwlimit = extract_param($param, 'bwlimit');
@@ -1690,6 +1692,8 @@ __PACKAGE__->register_method({
}
});
+ PVE::GuestHelpers::exec_hookscript($newconf, $newid, "post-clone");
+
return;
};
--
2.30.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pve-devel] [PATCH pve-docs 1/1] add pre/post-clone events to example hookscript
2022-09-23 9:55 [pve-devel] [PATCH qemu-server/pve-container/pve-docs 0/1] Add pre/post-clone hooks Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-container 1/1] Add CT hooks for pre/post-clone Stefan Hanreich
@ 2022-09-23 9:55 ` Stefan Hanreich
2022-09-23 10:01 ` Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH qemu-server 1/1] Add VM hooks for pre/post-clone Stefan Hanreich
2 siblings, 1 reply; 5+ messages in thread
From: Stefan Hanreich @ 2022-09-23 9:55 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
examples/guest-example-hookscript.pl | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/examples/guest-example-hookscript.pl b/examples/guest-example-hookscript.pl
index adeed59..345b5d9 100755
--- a/examples/guest-example-hookscript.pl
+++ b/examples/guest-example-hookscript.pl
@@ -54,6 +54,18 @@ if ($phase eq 'pre-start') {
print "$vmid stopped. Doing cleanup.\n";
+} elsif ($phase eq 'pre-clone') {
+
+ # Phase 'pre-clone' will run on the source machine before cloning a VM/CT
+
+ print "$vmid will be cloned.\n";
+
+} elsif ($phase eq 'post-clone') {
+
+ # Phase 'post-clone' will run on the source machine before cloning a VM/CT
+
+ print "$vmid successfully cloned.\n";
+
} else {
die "got unknown phase '$phase'\n";
}
--
2.30.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [pve-devel] [PATCH qemu-server 1/1] Add VM hooks for pre/post-clone
2022-09-23 9:55 [pve-devel] [PATCH qemu-server/pve-container/pve-docs 0/1] Add pre/post-clone hooks Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-container 1/1] Add CT hooks for pre/post-clone Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-docs 1/1] add pre/post-clone events to example hookscript Stefan Hanreich
@ 2022-09-23 9:55 ` Stefan Hanreich
2 siblings, 0 replies; 5+ messages in thread
From: Stefan Hanreich @ 2022-09-23 9:55 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
PVE/API2/Qemu.pm | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm
index 3ec31c2..23a7658 100644
--- a/PVE/API2/Qemu.pm
+++ b/PVE/API2/Qemu.pm
@@ -3417,6 +3417,8 @@ __PACKAGE__->register_method({
my ($conffile, $newconf, $oldconf, $vollist, $drives, $fullclone) = $load_and_check->();
my $storecfg = PVE::Storage::config();
+ PVE::GuestHelpers::exec_hookscript($newconf, $newid, "pre-clone", 1);
+
# auto generate a new uuid
my $smbios1 = PVE::QemuServer::parse_smbios1($newconf->{smbios1} || '');
$smbios1->{uuid} = PVE::QemuServer::generate_uuid();
@@ -3545,6 +3547,8 @@ __PACKAGE__->register_method({
die "clone failed: $err";
}
+ PVE::GuestHelpers::exec_hookscript($newconf, $newid, "post-clone");
+
return;
};
--
2.30.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [pve-devel] [PATCH pve-docs 1/1] add pre/post-clone events to example hookscript
2022-09-23 9:55 ` [pve-devel] [PATCH pve-docs 1/1] add pre/post-clone events to example hookscript Stefan Hanreich
@ 2022-09-23 10:01 ` Stefan Hanreich
0 siblings, 0 replies; 5+ messages in thread
From: Stefan Hanreich @ 2022-09-23 10:01 UTC (permalink / raw)
To: pve-devel
On 9/23/22 11:55, Stefan Hanreich wrote:
> Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
> ---
> examples/guest-example-hookscript.pl | 12 ++++++++++++
> 1 file changed, 12 insertions(+)
>
> diff --git a/examples/guest-example-hookscript.pl b/examples/guest-example-hookscript.pl
> index adeed59..345b5d9 100755
> --- a/examples/guest-example-hookscript.pl
> +++ b/examples/guest-example-hookscript.pl
> @@ -54,6 +54,18 @@ if ($phase eq 'pre-start') {
>
> print "$vmid stopped. Doing cleanup.\n";
>
> +} elsif ($phase eq 'pre-clone') {
> +
> + # Phase 'pre-clone' will run on the source machine before cloning a VM/CT
> +
> + print "$vmid will be cloned.\n";
> +
> +} elsif ($phase eq 'post-clone') {
> +
> + # Phase 'post-clone' will run on the source machine before cloning a VM/CT
> +
copy/paste error. I'll fix in v2 after a review?
> + print "$vmid successfully cloned.\n";
> +
> } else {
> die "got unknown phase '$phase'\n";
> }
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-09-23 10:11 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-23 9:55 [pve-devel] [PATCH qemu-server/pve-container/pve-docs 0/1] Add pre/post-clone hooks Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-container 1/1] Add CT hooks for pre/post-clone Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH pve-docs 1/1] add pre/post-clone events to example hookscript Stefan Hanreich
2022-09-23 10:01 ` Stefan Hanreich
2022-09-23 9:55 ` [pve-devel] [PATCH qemu-server 1/1] Add VM hooks for pre/post-clone Stefan Hanreich
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox