[pve-devel] [RFC vb3 pve-container] CT protection mode

Alen Grizonic a.grizonic at proxmox.com
Thu Sep 10 10:59:09 CEST 2015


v2 changes:

- protection mode removal prevention

- disk removal prevention
---
 src/PVE/LXC.pm | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index ebf5d23..7679670 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -179,7 +179,7 @@ my $confdesc = {
     protection => {
 	optional => 1,
 	type => 'boolean',
-	description => "Sets the protection flag of the container. This will prevent the remove operation.",
+	description => "Sets the protection flag of the container. This will prevent the container or container's disk remove operation.",
 	default => 0,
     },
 };
@@ -1108,13 +1108,21 @@ sub update_pct_config {
 		my $netid = $1;
 		PVE::Network::veth_delete("veth${vmid}i$netid");
 	    } elsif ($opt eq 'protection') {
+		if (($conf->{protection}) && ($conf->{protection} == 1)) {
+		    die "can't delete CT $vmid protection option - protection mode enabled\n";
+		}
 		delete $conf->{$opt};
 	    } elsif ($opt =~ m/^mp(\d+)$/) {
+		if (($conf->{protection}) && ($conf->{protection} == 1)) {
+		    die "can't remove CT $vmid storage - protection mode enabled\n";
+		}
 		delete $conf->{$opt};
 		push @nohotplug, $opt;
 		next if $running;
 	    } elsif ($opt eq 'rootfs') {
-		die "implement me"
+		if (($conf->{protection}) && ($conf->{protection} == 1)) {
+		    die "can't remove CT $vmid storage - protection mode enabled\n";
+		}
 	    } else {
 		die "implement me"
 	    }
-- 
2.1.4




More information about the pve-devel mailing list