my $value = $src_conf->{$opt};
if (($opt eq 'rootfs') || ($opt =~ m/^mp\d+$/)) {
- my $mp = $opt eq 'rootfs' ?
- PVE::LXC::Config->parse_ct_rootfs($value) :
- PVE::LXC::Config->parse_ct_mountpoint($value);
+ my $mp = PVE::LXC::Config->parse_volume($opt, $value);
if ($mp->{type} eq 'volume') {
my $volid = $mp->{volume};
my $running = PVE::LXC::check_running($vmid);
my $disk = $param->{disk};
- my $mp = $disk eq 'rootfs' ? PVE::LXC::Config->parse_ct_rootfs($conf->{$disk}) :
- PVE::LXC::Config->parse_ct_mountpoint($conf->{$disk});
+ my $mp = PVE::LXC::Config->parse_volume($disk, $conf->{$disk});
my $volid = $mp->{volume};
die "cannot move volumes of a running container\n" if PVE::LXC::check_running($vmid);
- if ($mpkey eq 'rootfs') {
- $mpdata = PVE::LXC::Config->parse_ct_rootfs($conf->{$mpkey});
- } elsif ($mpkey =~ m/mp\d+/) {
- $mpdata = PVE::LXC::Config->parse_ct_mountpoint($conf->{$mpkey});
- } else {
- die "Can't parse $mpkey\n";
- }
+ PVE::LXC::Config->parse_volume($mpkey, $conf->{$mpkey});
$old_volid = $mpdata->{volume};
die "you can't move a volume with snapshots and delete the source\n"
$d->{disk} = 0;
# use 4GB by default ??
if (my $rootfs = $conf->{rootfs}) {
- my $rootinfo = PVE::LXC::Config->parse_ct_rootfs($rootfs);
+ my $rootinfo = PVE::LXC::Config->parse_volume('rootfs', $rootfs);
$d->{maxdisk} = $rootinfo->{size} || (4*1024*1024*1024);
} else {
$d->{maxdisk} = 4*1024*1024*1024;
die "missing 'rootfs' configuration\n"
if !defined($conf->{rootfs});
- my $mountpoint = PVE::LXC::Config->parse_ct_rootfs($conf->{rootfs});
+ my $mountpoint = PVE::LXC::Config->parse_volume('rootfs', $conf->{rootfs});
$raw .= "lxc.rootfs.path = $dir/rootfs\n";
} elsif ($opt eq 'rootfs' || $opt =~ /^mp\d+$/) {
$rpcenv->check_vm_perm($authuser, $vmid, $pool, ['VM.Config.Disk']);
return if $delete;
- my $data = $opt eq 'rootfs' ? PVE::LXC::Config->parse_ct_rootfs($newconf->{$opt})
- : PVE::LXC::Config->parse_ct_mountpoint($newconf->{$opt});
+ my $data = PVE::LXC::Config->parse_volume($opt, $newconf->{$opt});
raise_perm_exc("mount point type $data->{type} is only allowed for root\@pam")
if $data->{type} ne 'volume';
} elsif ($opt eq 'memory' || $opt eq 'swap') {
die "implement me - saving vmstate\n";
} else {
my $value = $snap->{$remove_drive};
- my $mountpoint = $remove_drive eq 'rootfs' ? $class->parse_ct_rootfs($value, 1) : $class->parse_ct_mountpoint($value, 1);
+ my $mountpoint = $class->parse_volume($remove_drive, $value, 1);
delete $snap->{$remove_drive};
$class->add_unused_volume($snap, $mountpoint->{volume})
my $value = $param->{$opt};
if ($opt =~ m/^mp(\d+)$/ || $opt eq 'rootfs') {
$class->check_protection($conf, "can't update CT $vmid drive '$opt'");
- my $mp = $opt eq 'rootfs' ? $class->parse_ct_rootfs($value) : $class->parse_ct_mountpoint($value);
+ my $mp = $class->parse_volume($opt, $value);
$check_content_type->($mp) if ($mp->{type} eq 'volume');
} elsif ($opt eq 'hookscript') {
PVE::GuestHelpers::check_hookscript($value);
return $res;
};
-sub parse_ct_rootfs {
- my ($class, $data, $noerr) = @_;
-
- my $res = $class->__parse_ct_mountpoint_full($rootfs_desc, $data, $noerr);
-
- $res->{mp} = '/' if defined($res);
-
- return $res;
-}
-
-sub parse_ct_mountpoint {
- my ($class, $data, $noerr) = @_;
-
- return $class->__parse_ct_mountpoint_full($mp_desc, $data, $noerr);
-}
-
sub print_ct_mountpoint {
my ($class, $info, $nomp) = @_;
my $skip = [ 'type' ];
my ($class, $key, $volume_string, $noerr) = @_;
if ($key eq 'rootfs') {
- return $class->parse_ct_rootfs($volume_string, $noerr);
+ my $res = $class->__parse_ct_mountpoint_full($rootfs_desc, $volume_string, $noerr);
+ $res->{mp} = '/' if defined($res);
+ return $res;
} elsif ($key =~ m/^mp\d+$/ || $key =~ m/^unused\d+$/) {
- return $class->parse_ct_mountpoint($volume_string, $noerr);
+ return $class->__parse_ct_mountpoint_full($mp_desc, $volume_string, $noerr);
}
die "parse_volume - unknown type: $key\n";
next if $selection && !$selection->{$opt};
eval {
if ($opt =~ m/^mp(\d+)$/) {
- my $mp = $class->parse_ct_mountpoint($conf->{$opt});
+ my $mp = $class->parse_volume($opt, $conf->{$opt});
if ($mp->{type} eq 'volume') {
$class->add_unused_volume($conf, $mp->{volume})
if !$class->is_volume_in_use($conf, $conf->{$opt}, 1, 1);
sub apply_pending_mountpoint {
my ($class, $vmid, $conf, $opt, $storecfg, $running) = @_;
- my $mp = $class->parse_ct_mountpoint($conf->{pending}->{$opt});
+ my $mp = $class->parse_volume($opt, $conf->{pending}->{$opt});
my $old = $conf->{$opt};
if ($mp->{type} eq 'volume') {
if ($mp->{volume} =~ $PVE::LXC::NEW_DISK_RE) {
);
if ($running) {
# Re-parse mount point:
- my $mp = $class->parse_ct_mountpoint($conf->{pending}->{$opt});
+ my $mp = $class->parse_volume($opt, $conf->{pending}->{$opt});
eval {
PVE::LXC::mountpoint_hotplug($vmid, $conf, $opt, $mp, $storecfg);
};
}
if (defined($old)) {
- my $mp = $class->parse_ct_mountpoint($old);
+ my $mp = $class->parse_volume($opt, $old);
if ($mp->{type} eq 'volume') {
$class->add_unused_volume($conf, $mp->{volume})
if !$class->is_volume_in_use($conf, $conf->{$opt}, 1, 1);