pools: record parent/subpool information

and ensure a missing intermediate pool exists at all times.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2023-11-20 08:22:40 +01:00 committed by Wolfgang Bumiller
parent e7224f6e30
commit 4418b06b35
2 changed files with 19 additions and 1 deletions

View File

@ -1529,7 +1529,21 @@ sub parse_user_config {
}
# make sure to add the pool (even if there are no members)
$cfg->{pools}->{$pool} = { vms => {}, storage => {} } if !$cfg->{pools}->{$pool};
$cfg->{pools}->{$pool} = { vms => {}, storage => {}, pools => {} }
if !$cfg->{pools}->{$pool};
if ($pool =~ m!/!) {
my $curr = $pool;
while ($curr =~ m!^(.+)/[^/]+$!) {
# ensure nested pool info is correctly recorded
my $parent = $1;
$cfg->{pools}->{$curr}->{parent} = $parent;
$cfg->{pools}->{$parent} = { vms => {}, storage => {}, pools => {} }
if !$cfg->{pools}->{$parent};
$cfg->{pools}->{$parent}->{pools}->{$curr} = 1;
$curr = $parent;
}
}
$cfg->{pools}->{$pool}->{comment} = PVE::Tools::decode_text($comment) if $comment;

View File

@ -237,21 +237,25 @@ my $default_cfg = {
'id' => 'testpool',
vms => {},
storage => {},
pools => {},
},
test_pool_members => {
'id' => 'testpool',
vms => { 123 => 1, 1234 => 1},
storage => { 'local' => 1, 'local-zfs' => 1},
pools => {},
},
test_pool_duplicate_vms => {
'id' => 'test_duplicate_vms',
vms => {},
storage => {},
pools => {},
},
test_pool_duplicate_storages => {
'id' => 'test_duplicate_storages',
vms => {},
storage => { 'local' => 1, 'local-zfs' => 1},
pools => {},
},
acl_simple_user => {
'path' => '/',