all lists on lists.proxmox.com
 help / color / mirror / Atom feed
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




  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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal