mirror of
git://git.proxmox.com/git/pve-storage.git
synced 2025-01-24 02:04:13 +03:00
plugin: change name, separator and error message for dir overrides
Rename the "dirs" parameter to "content-dirs". Switch from a "vtype:/dir" format to "vtype=/dir", and remove the misleading error message talking about "absolute" paths. One might expect these to be absolute over the whole system, while in reality they are relative to the mountpoint of the storage. Signed-off-by: Leo Nunner <l.nunner@proxmox.com>
This commit is contained in:
parent
3e7bd7dac3
commit
b539bb46a8
@ -128,7 +128,7 @@ sub properties {
|
||||
sub options {
|
||||
return {
|
||||
path => { fixed => 1 },
|
||||
dirs => { optional => 1 },
|
||||
'content-dirs' => { optional => 1 },
|
||||
server => { fixed => 1 },
|
||||
share => { fixed => 1 },
|
||||
nodes => { optional => 1 },
|
||||
|
@ -54,7 +54,7 @@ sub properties {
|
||||
sub options {
|
||||
return {
|
||||
path => { fixed => 1 },
|
||||
dirs => { optional => 1 },
|
||||
'content-dirs' => { optional => 1 },
|
||||
nodes => { optional => 1 },
|
||||
shared => { optional => 1 },
|
||||
disable => { optional => 1 },
|
||||
|
@ -79,7 +79,7 @@ sub properties {
|
||||
sub options {
|
||||
return {
|
||||
path => { fixed => 1 },
|
||||
dirs => { optional => 1 },
|
||||
'content-dirs' => { optional => 1 },
|
||||
server => { fixed => 1 },
|
||||
export => { fixed => 1 },
|
||||
nodes => { optional => 1 },
|
||||
|
@ -181,8 +181,8 @@ my $defaultData = {
|
||||
default => 'metadata',
|
||||
optional => 1,
|
||||
},
|
||||
dirs => {
|
||||
description => "Overrides for default directories",
|
||||
'content-dirs' => {
|
||||
description => "Overrides for default content type directories.",
|
||||
type => "string", format => "pve-dir-override-list",
|
||||
optional => 1,
|
||||
},
|
||||
@ -213,7 +213,7 @@ sub valid_content_types {
|
||||
sub dirs_hash_to_string {
|
||||
my $hash = shift;
|
||||
|
||||
return join(',', map { "$_:$hash->{$_}" } sort keys %$hash);
|
||||
return join(',', map { "$_=$hash->{$_}" } sort keys %$hash);
|
||||
}
|
||||
|
||||
sub default_format {
|
||||
@ -350,8 +350,8 @@ PVE::JSONSchema::register_format('pve-dir-override', \&verify_dir_override);
|
||||
sub verify_dir_override {
|
||||
my ($value, $noerr) = @_;
|
||||
|
||||
if($value =~ m/^([a-z]+):(.+)$/ &&
|
||||
verify_content($1, $noerr) && verify_path($2, $noerr)) {
|
||||
if($value =~ m/^([a-z]+)=\/.+$/ &&
|
||||
verify_content($1, $noerr)) {
|
||||
return $value;
|
||||
}
|
||||
|
||||
@ -429,12 +429,12 @@ sub decode_value {
|
||||
#}
|
||||
|
||||
return $res;
|
||||
} elsif ($key eq 'dirs') {
|
||||
} elsif ($key eq 'content-dirs') {
|
||||
my $valid_content = $def->{content}->[0];
|
||||
my $res = {};
|
||||
|
||||
foreach my $dir (PVE::Tools::split_list($value)) {
|
||||
my ($content, $path) = split(/:/, $dir, 2);
|
||||
my ($content, $path) = split(/=/, $dir, 2);
|
||||
|
||||
if (!$valid_content->{$content}) {
|
||||
warn "storage does not support content type '$content'\n";
|
||||
@ -458,7 +458,7 @@ sub encode_value {
|
||||
} elsif ($key eq 'content') {
|
||||
my $res = content_hash_to_string($value) || 'none';
|
||||
return $res;
|
||||
} elsif ($key eq 'dirs') {
|
||||
} elsif ($key eq 'content-dirs') {
|
||||
my $res = dirs_hash_to_string($value);
|
||||
return $res;
|
||||
}
|
||||
@ -654,7 +654,7 @@ sub get_subdir {
|
||||
die "storage definition has no path\n" if !$path;
|
||||
die "unknown vtype '$vtype'\n" if !exists($vtype_subdirs->{$vtype});
|
||||
|
||||
my $subdir = $scfg->{dirs}->{$vtype} // "/".$vtype_subdirs->{$vtype};
|
||||
my $subdir = $scfg->{"content-dirs"}->{$vtype} // "/".$vtype_subdirs->{$vtype};
|
||||
|
||||
return $path.$subdir;
|
||||
}
|
||||
|
@ -30,8 +30,8 @@ foreach my $type (keys %$vtype_subdirs) {
|
||||
# creates additional tests for overrides
|
||||
foreach my $type (keys %$vtype_subdirs) {
|
||||
my $override = "/${type}_override";
|
||||
my $scfg_with_override = { path => '/some/path', dirs => { $type => $override } };
|
||||
push @$tests, [ $scfg_with_override, $type, "$scfg_with_override->{path}$scfg_with_override->{dirs}->{$type}" ];
|
||||
my $scfg_with_override = { path => '/some/path', 'content-dirs' => { $type => $override } };
|
||||
push @$tests, [ $scfg_with_override, $type, "$scfg_with_override->{path}$scfg_with_override->{'content-dirs'}->{$type}" ];
|
||||
}
|
||||
|
||||
plan tests => scalar @$tests;
|
||||
|
Loading…
x
Reference in New Issue
Block a user