[pve-devel] [PATCH manager v2 03/11] api: cephfs: refactor {ls, create}_fs
Dominik Csapak
d.csapak at proxmox.com
Mon Oct 25 16:01:30 CEST 2021
no function change intended
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
PVE/API2/Ceph/FS.pm | 22 ++++++----------------
PVE/Ceph/Tools.pm | 36 ++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/PVE/API2/Ceph/FS.pm b/PVE/API2/Ceph/FS.pm
index 82b5d616..cdced31a 100644
--- a/PVE/API2/Ceph/FS.pm
+++ b/PVE/API2/Ceph/FS.pm
@@ -59,15 +59,7 @@ __PACKAGE__->register_method ({
my $rados = PVE::RADOS->new();
- my $cephfs_list = $rados->mon_command({ prefix => "fs ls" });
- # we get something like:
- #{
- # 'metadata_pool_id' => 2,
- # 'data_pool_ids' => [ 1 ],
- # 'metadata_pool' => 'cephfs_metadata',
- # 'data_pools' => [ 'cephfs_data' ],
- # 'name' => 'cephfs',
- #}
+ my $cephfs_list = PVE::Ceph::Tools::ls_fs($rados);
my $res = [
map {{
@@ -161,13 +153,11 @@ __PACKAGE__->register_method ({
push @created_pools, $pool_metadata;
print "configuring new CephFS '$fs_name'\n";
- $rados->mon_command({
- prefix => "fs new",
- fs_name => $fs_name,
- metadata => $pool_metadata,
- data => $pool_data,
- format => 'plain',
- });
+ my $param = {
+ pool_metadata => $pool_metadata,
+ pool_data => $pool_data,
+ };
+ PVE::Ceph::Tools::create_fs($fs_name, $param, $rados);
};
if (my $err = $@) {
$@ = undef;
diff --git a/PVE/Ceph/Tools.pm b/PVE/Ceph/Tools.pm
index 74ead6f7..2f818276 100644
--- a/PVE/Ceph/Tools.pm
+++ b/PVE/Ceph/Tools.pm
@@ -304,6 +304,42 @@ sub destroy_pool {
});
}
+# we get something like:
+#[{
+# 'metadata_pool_id' => 2,
+# 'data_pool_ids' => [ 1 ],
+# 'metadata_pool' => 'cephfs_metadata',
+# 'data_pools' => [ 'cephfs_data' ],
+# 'name' => 'cephfs',
+#}]
+sub ls_fs {
+ my ($rados) = @_;
+
+ if (!defined($rados)) {
+ $rados = PVE::RADOS->new();
+ }
+
+ my $res = $rados->mon_command({ prefix => "fs ls" });
+
+ return $res;
+}
+
+sub create_fs {
+ my ($fs, $param, $rados) = @_;
+
+ if (!defined($rados)) {
+ $rados = PVE::RADOS->new();
+ }
+
+ $rados->mon_command({
+ prefix => "fs new",
+ fs_name => $fs,
+ metadata => $param->{pool_metadata},
+ data => $param->{pool_data},
+ format => 'plain',
+ });
+}
+
sub setup_pve_symlinks {
# fail if we find a real file instead of a link
if (-f $ceph_cfgpath) {
--
2.30.2
More information about the pve-devel
mailing list