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 73D42715BD for ; Thu, 8 Apr 2021 12:33:22 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 2D9EB19F6A for ; Thu, 8 Apr 2021 12:33:22 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 8E38F19F41 for ; Thu, 8 Apr 2021 12:33:20 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 55F6745A0F for ; Thu, 8 Apr 2021 12:33:20 +0200 (CEST) From: Fabian Ebner To: pve-devel@lists.proxmox.com Date: Thu, 8 Apr 2021 12:33:12 +0200 Message-Id: <20210408103316.7619-3-f.ebner@proxmox.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210408103316.7619-1-f.ebner@proxmox.com> References: <20210408103316.7619-1-f.ebner@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.007 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches 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. [qemuserver.pm] Subject: [pve-devel] [POC qemu-server 2/6] create savevm_monitor helper 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, 08 Apr 2021 10:33:22 -0000 Signed-off-by: Fabian Ebner --- PVE/QemuServer.pm | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 5a89853..983fb2f 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -5621,6 +5621,27 @@ sub vm_reboot { }); } +sub savevm_monitor { + my ($vmid) = @_; + + for(;;) { + my $state = mon_cmd($vmid, "query-savevm"); + if (!$state->{status}) { + die "savevm not active\n"; + } elsif ($state->{status} eq 'active') { + sleep(1); + next; + } elsif ($state->{status} eq 'completed') { + print "State saved, quitting\n"; + return; + } elsif ($state->{status} eq 'failed' && $state->{error}) { + die "query-savevm failed with error '$state->{error}'\n" + } else { + die "query-savevm returned status '$state->{status}'\n"; + } + } +} + # note: if using the statestorage parameter, the caller has to check privileges sub vm_suspend { my ($vmid, $skiplock, $includestate, $statestorage) = @_; @@ -5672,22 +5693,7 @@ sub vm_suspend { eval { set_migration_caps($vmid, 1); mon_cmd($vmid, "savevm-start", statefile => $path); - for(;;) { - my $state = mon_cmd($vmid, "query-savevm"); - if (!$state->{status}) { - die "savevm not active\n"; - } elsif ($state->{status} eq 'active') { - sleep(1); - next; - } elsif ($state->{status} eq 'completed') { - print "State saved, quitting\n"; - last; - } elsif ($state->{status} eq 'failed' && $state->{error}) { - die "query-savevm failed with error '$state->{error}'\n" - } else { - die "query-savevm returned status '$state->{status}'\n"; - } - } + savevm_monitor($vmid); }; my $err = $@; -- 2.20.1