From: Alexandre Derumier <aderumier@odiso.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v2 qemu-server 6/9] ipam : add snapshot rollback support
Date: Mon, 12 Jul 2021 00:47:04 +0200 [thread overview]
Message-ID: <20210711224707.63089-7-aderumier@odiso.com> (raw)
In-Reply-To: <20210711224707.63089-1-aderumier@odiso.com>
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
PVE/QemuConfig.pm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/PVE/QemuConfig.pm b/PVE/QemuConfig.pm
index 7ee8876..6627e2f 100644
--- a/PVE/QemuConfig.pm
+++ b/PVE/QemuConfig.pm
@@ -12,6 +12,7 @@ use PVE::QemuServer::Helpers;
use PVE::QemuServer::Monitor qw(mon_cmd);
use PVE::QemuServer;
use PVE::QemuServer::Machine;
+use PVE::QemuServer::Ipam;
use PVE::Storage;
use PVE::Tools;
use PVE::Format qw(render_bytes render_duration);
@@ -397,6 +398,7 @@ sub __snapshot_rollback_hook {
if ($prepare) {
# we save the machine of the current config
$data->{oldmachine} = $conf->{machine};
+ $data->{oldconf} = $conf;
} else {
# if we have a 'runningmachine' entry in the snapshot we use that
# for the forcemachine parameter, else we use the old logic
@@ -424,6 +426,36 @@ sub __snapshot_rollback_hook {
# re-initializing its random number generator
$conf->{vmgenid} = PVE::QemuServer::generate_uuid();
}
+
+ my $oldconf = $data->{oldconf};
+ my $pendingoldconf = $oldconf->{pending};
+
+ #remove ip from current pending net interfaces
+ foreach my $opt (keys %$pendingoldconf) {
+ next if $opt !~ m/^net(\d+)$/;
+ my $net = PVE::QemuServer::parse_net($pendingoldconf->{$opt});
+ PVE::QemuServer::vmconfig_delete_net_ip($conf, $net);
+ }
+
+ #remove ip from net current conf
+ foreach my $opt (keys %$oldconf) {
+ next if $opt !~ m/^net(\d+)$/;
+ my $net = PVE::QemuServer::parse_net($oldconf->{$opt});
+ PVE::QemuServer::vmconfig_delete_net_ip($oldconf, $net);
+ }
+
+ #update ipam description/dns
+ foreach my $opt (keys %$conf) {
+ next if $opt !~ m/^net(\d+)$/;
+ my $netid = $1;
+ my $net = PVE::QemuServer::parse_net($conf->{$opt});
+ my $hostname = $conf->{name};
+ my $oldhostname = $oldconf->{name};
+ PVE::QemuServer::Ipam::update_net_ip(4,$net, $hostname, $oldhostname, "vm:$vmid net:$opt");
+ PVE::QemuServer::Ipam::update_net_ip(6,$net, $hostname, $oldhostname, "vm:$vmid net:$opt");
+
+ $conf->{$opt} = PVE::QemuServer::print_net($net);
+ }
}
return;
--
2.30.2
next prev parent reply other threads:[~2021-07-11 22:47 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-11 22:46 [pve-devel] [PATCH v2 qemu-server 0/9] RFC: sdn: add ipam support Alexandre Derumier
2021-07-11 22:46 ` [pve-devel] [PATCH v2 qemu-server 1/9] add ipam module Alexandre Derumier
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 2/9] add print_ipconfig Alexandre Derumier
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 3/9] add ip options to netdescr Alexandre Derumier
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 4/9] ipam : add update/delete support Alexandre Derumier
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 5/9] ipam : add revert ip support Alexandre Derumier
2021-07-11 22:47 ` Alexandre Derumier [this message]
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 7/9] ipam : add snaphot delete support Alexandre Derumier
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 8/9] ipam : add create vm support Alexandre Derumier
2021-07-11 22:47 ` [pve-devel] [PATCH v2 qemu-server 9/9] ipam : add destroy " Alexandre Derumier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210711224707.63089-7-aderumier@odiso.com \
--to=aderumier@odiso.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.