On 07.04.21 16:22, Aaron Lauterer wrote: > This patch introduces support for Cephs RBD namespaces. > > A new storage config parameter 'namespace' defines the namespace to be > used for the RBD storage. > > The namespace must already exist in the Ceph cluster as it is not > automatically created. > > The main intention is to use this for external Ceph clusters. With > namespaces, each PVE cluster can get its own namespace and will not > conflict with other PVE clusters. > > Signed-off-by: Aaron Lauterer <a.laute...@proxmox.com> > > --- > v1 -> v2: > use `defined` to check if a namespace if configured instead of > evaluating the value which would wrongly evaluate to false if the pool > would be called '0'. Thx @Thomas for pointing this out. > > much less changes since the 'centralize rbd path concatenation' patch > took care of most instances. > > removed empty new lines that I did not catch in the previous version > > rvc -> v1: > add --namespace parameter centrally in sub $build_cmd. All commands > except one (rbd unmap) support it. To handle commands that don't support > it, a hash with them was introduced. > > In a few places paths (FS, Ceph hierarchy) are needed. These are the > places scattered throughout the plugin where the namespace is inserted > if it is configured. > > PVE/Storage/RBDPlugin.pm | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) >
applied, but addressed one little issue (see below). thanks! > diff --git a/PVE/Storage/RBDPlugin.pm b/PVE/Storage/RBDPlugin.pm > index 421539f..02950be 100644 > --- a/PVE/Storage/RBDPlugin.pm > +++ b/PVE/Storage/RBDPlugin.pm > @@ -25,6 +25,8 @@ my $get_parent_image_name = sub { > my $get_rbd_path = sub { > my ($scfg, $volume) = @_; > my $pool = $scfg->{pool} ? $scfg->{pool} : 'rbd'; > + > + return "${pool}/$scfg->{namespace}/${volume}" if > defined($scfg->{namespace}); > return "${pool}/${volume}"; > }; > > @@ -36,6 +38,14 @@ my $build_cmd = sub { > > my $cmd = [$binary, '-p', $pool]; > > + # some subcommands will fail if the --namespace parameter is present > + my $no_namespace_parameter = { > + unmap => 1, > + }; > + > + push @$cmd, '--namespace', $scfg->{namespace} > + if ($scfg->{namespace} && !$no_namespace_parameter->{$op}); above check still failed for "falsy" namespace values, I fixed that in a follow-up > + > push @$cmd, '-c', $cmd_option->{ceph_conf} if ($cmd_option->{ceph_conf}); > push @$cmd, '-m', $cmd_option->{mon_host} if ($cmd_option->{mon_host}); > push @$cmd, '--auth_supported', $cmd_option->{auth_supported} if > ($cmd_option->{auth_supported}); _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel