From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 165F69084F for ; Thu, 22 Sep 2022 16:13:54 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id EB5CE1A13F for ; Thu, 22 Sep 2022 16:13:23 +0200 (CEST) Received: from lana.proxmox.com (unknown [94.136.29.99]) by firstgate.proxmox.com (Proxmox) with ESMTP for ; Thu, 22 Sep 2022 16:13:22 +0200 (CEST) Received: by lana.proxmox.com (Postfix, from userid 10043) id 42ED92C2197; Thu, 22 Sep 2022 16:13:22 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Date: Thu, 22 Sep 2022 16:13:17 +0200 Message-Id: <20220922141321.1510795-1-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.174 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods NO_DNS_FOR_FROM 0.001 Envelope sender has no MX or A DNS records RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [qemumigratemock.pm, qm.pm, migrate.pm, guest-example-hookscript.pl, qemumigrate.pm, pct.pm, abstractmigrate.pm] Subject: [pve-devel] [PATCH pve-container/qemu-server/pve-guest-common/pve-docs 0/1] Add pre/post-migrate hooks X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Sep 2022 14:13:54 -0000 This patch adds pre/post-migrate hooks when the when the user migrates 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? I have decided to create distinct event types for source/target nodes, since otherwise the same script would run essentially twice on the source/target node. With distinct event types, the hooks should be more flexible in their usage. In my first try I simply ssh'ed into the target nodes and ran a perl script hardcoded as string via perl -e. This seemed very dirty though, which is why I have opted to move those parts into the respective binaries qm/pct. There are other subcommands already that fulfill a similar purpose (qm mtunnel) which is why I figured this might be the better way to implement this. Then I simply need to call the respective subcommand in the hook methods. Would it be better to name the subcommands pre/post-migrate-target? I have added abstract methods to the abstract class, which I implement in the respective backends. Those methods are virtually the same, only the binary that gets executed on the target node is different in the backends (pct vs qm). It might make sense to move both methods to the abstract class and parametrize the string containing the names of the binaries. I have decided against this for now, since usually such methods end up diverging anyway. Still, it might make sense to move the implementation up to the parent class and only have very simple methods in the specific backends that return the necessary name of the binary. What do you think? pve-guest-common: Stefan Hanreich (1): Add abstract methods for pre/post-migrate hooks src/PVE/AbstractMigrate.pm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) pve-container: Stefan Hanreich (1): Add CT hooks for pre/post-migrate on target/source src/PVE/CLI/pct.pm | 51 ++++++++++++++++++++++++++++++++++++++++++ src/PVE/LXC/Migrate.pm | 23 +++++++++++++++++++ 2 files changed, 74 insertions(+) qemu-server: Stefan Hanreich (1): Add VM hooks for pre/post-migrate on target/source PVE/CLI/qm.pm | 50 +++++++++++++++++++++++++++ PVE/QemuMigrate.pm | 23 ++++++++++++ test/MigrationTest/QemuMigrateMock.pm | 4 +++ 3 files changed, 77 insertions(+) pve-docs: Stefan Hanreich (1): Add pre/post-migrate events for target and source to example hookscript examples/guest-example-hookscript.pl | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) -- 2.30.2