[pve-devel] [Patch V2 container 1/2] template create: handle mountpoints besides rootfs
Wolfgang Link
w.link at proxmox.com
Wed May 30 12:12:51 CEST 2018
we only handled the special rootfs mount so creating a template
from a container with additional mountpoint did not work correctly.
Use foreach_mountpoint to create a base vdisk for all mount points
after checking if the storage supports it
---
Patch V2:
reword commit message as t.lamprecht suggest.
remove redundant volume parsing.
src/PVE/LXC.pm | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index 4f9674d..bfca9c1 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -869,17 +869,26 @@ sub template_create {
my $storecfg = PVE::Storage::config();
- my $rootinfo = PVE::LXC::Config->parse_ct_rootfs($conf->{rootfs});
- my $volid = $rootinfo->{volume};
+ PVE::LXC::Config->foreach_mountpoint($conf, sub {
+ my ($ms, $mountpoint) = @_;
- die "Template feature is not available for '$volid'\n"
- if !PVE::Storage::volume_has_feature($storecfg, 'template', $volid);
+ my $volid = $mountpoint->{volume};
- PVE::Storage::activate_volumes($storecfg, [$volid]);
+ die "Template feature is not available for '$volid'\n"
+ if !PVE::Storage::volume_has_feature($storecfg, 'template', $volid);
+ });
- my $template_volid = PVE::Storage::vdisk_create_base($storecfg, $volid);
- $rootinfo->{volume} = $template_volid;
- $conf->{rootfs} = PVE::LXC::Config->print_ct_mountpoint($rootinfo, 1);
+ PVE::LXC::Config->foreach_mountpoint($conf, sub {
+ my ($ms, $mountpoint) = @_;
+
+ my $volid = $mountpoint->{volume};
+
+ PVE::Storage::activate_volumes($storecfg, [$volid]);
+
+ my $template_volid = PVE::Storage::vdisk_create_base($storecfg, $volid);
+ $mountpoint->{volume} = $template_volid;
+ $conf->{$ms} = PVE::LXC::Config->print_ct_mountpoint($mountpoint, $ms eq "rootfs");
+ });
PVE::LXC::Config->write_config($vmid, $conf);
}
--
2.11.0
More information about the pve-devel
mailing list