]> git.proxmox.com Git - pve-container.git/commitdiff
create: do not pass mointpoints to update_pct_config, simplify restore logic
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 27 Aug 2015 06:24:50 +0000 (08:24 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 27 Aug 2015 06:24:50 +0000 (08:24 +0200)
src/PVE/API2/LXC.pm
src/PVE/LXC.pm

index ee818f527cf62a62d03967fb7b336e0bfeff51ef..6f3d3fbf0264a57f6535a7c23a4f0caf29969fb0 100644 (file)
@@ -283,14 +283,13 @@ __PACKAGE__->register_method({
 
        my $archive;
 
-       $param->{rootfs} = $storage if !$param->{rootfs};
-
        if ($ostemplate eq '-') {
            die "pipe requires cli environment\n" 
                if $rpcenv->{type} ne 'cli'; 
            die "pipe can only be used with restore tasks\n" 
                if !$restore;
            $archive = '-';
+           die "restore from pipe requires rootfs parameter\n" if !defined($param->{rootfs});
        } else {
            $rpcenv->check_volume_access($authuser, $storage_cfg, $vmid, $ostemplate);
            $archive = PVE::Storage::abs_filesystem_path($storage_cfg, $ostemplate);
@@ -298,7 +297,12 @@ __PACKAGE__->register_method({
 
        my $conf = {};
 
-       PVE::LXC::update_pct_config($vmid, $conf, 0, $param);
+       my $no_disk_param = {};
+       foreach my $opt (keys %$param) {
+           next if $opt eq 'rootfs' || $opt =~ m/^mp\d+$/;
+           $no_disk_param->{$opt} = $param->{$opt};
+       }
+       PVE::LXC::update_pct_config($vmid, $conf, 0, $no_disk_param);
 
        my $check_vmid_usage = sub {
            if ($force) {
@@ -316,25 +320,17 @@ __PACKAGE__->register_method({
            my $vollist = [];
 
            eval {
-                my $rootmp = PVE::LXC::parse_ct_mountpoint($param->{rootfs});
-               my $root_volid = $rootmp->{volume};
-               my $disksize = undef;
-
-               if ($root_volid =~ m/^(([^:\s]+):)?(\d+)?/) {
-
-                   my ($storeid, $disksize) = ($2 || $storage, $3);
-
-                    if (!defined($disksize)) {
-                        if ($restore) {
-                            (undef, $disksize) = PVE::LXC::Create::recover_config($archive);
-                            die "unable to detect disk size - please specify rootfs size\n"
-                                if !$disksize;
-                        } else {
-                            $disksize = 4;
-                        }
-                        $param->{rootfs} = "$storeid:$disksize";
-                    }
-                }
+               if (!defined($param->{rootfs})) {
+                   if ($restore) {
+                       my (undef, $disksize) = PVE::LXC::Create::recover_config($archive);
+                       die "unable to detect disk size - please specify rootfs (size)\n"
+                           if !$disksize;
+                       $param->{rootfs} = $disksize;
+                   } else {
+                       $param->{rootfs} = 4; # defaults to 4GB
+                   }
+               }
+
                $vollist = &$create_disks($storage_cfg, $vmid, $param, $conf, $storage);
 
                PVE::LXC::Create::create_rootfs($storage_cfg, $vmid, $conf, $archive, $password, $restore);
index f45eb63113f043764f2dff9466708f12ed8be467..2d4342f308d43dfedf4b85f42438fdf450c15ce3 100644 (file)
@@ -1096,7 +1096,7 @@ sub update_pct_config {
                my $netid = $1;
                PVE::Network::veth_delete("veth${vmid}i$netid");
            } elsif ($opt eq 'rootfs' || $opt =~ m/^mp(\d+)$/) {
-               #implement me
+               die "implement me"
            } else {
                die "implement me"
            }
@@ -1164,7 +1164,7 @@ sub update_pct_config {
                update_net($vmid, $conf, $opt, $net, $netid, $rootdir);
            }
         } elsif ($opt eq 'rootfs' || $opt =~ m/^mp(\d+)$/) {
-                #implement me
+           die "implement me: $opt";
        } else {
            die "implement me: $opt";
        }