external: pin the default csi subvolume
set the csi subvolume to pin type distributed and pin setting 1
So to statically balance the PVs across all MDS ranks
Signed-off-by: parth-gr <paarora@redhat.com>
(cherry picked from commit 53413e5a24)
This commit is contained in:
1 parent
8bfdb2558c
commit
c8b4a26d0d
2 files changed
+55
-20
No files matched your search
@@ -106,13 +106,8 @@ jobs:
|
||||
toolbox=$(kubectl get pod -l app=rook-ceph-tools -n rook-ceph -o jsonpath='{.items[*].metadata.name}')
|
||||
# pass the correct subvolumegroup and cephfs_filesystem flag name
|
||||
kubectl -n rook-ceph exec $toolbox -- python3 /etc/ceph/create-external-cluster-resources.py --rbd-data-pool-name replicapool --subvolume-group group-a --cephfs-filesystem-name myfs
|
||||
# pass the wrong subvolumegroup name
|
||||
if output=$(kubectl -n rook-ceph exec $toolbox -- python3 /etc/ceph/create-external-cluster-resources.py --rbd-data-pool-name replicapool --subvolume-group false-test-subvolume-group); then
|
||||
echo "unexpectedly succeeded after passing the wrong subvolumegroup name: $output"
|
||||
exit 1
|
||||
else
|
||||
echo "script failed because wrong subvolumegroup name was passed"
|
||||
fi
|
||||
# pass the subvolumegroup name which doesn't exist
|
||||
kubectl -n rook-ceph exec $toolbox -- python3 /etc/ceph/create-external-cluster-resources.py --rbd-data-pool-name replicapool --subvolume-group false-test-subvolume-group
|
||||
|
||||
- name: dry run test skip monitoring endpoint
|
||||
run: |
|
||||
|
||||
@@ -1277,16 +1277,7 @@ class RadosJSON:
|
||||
f"is not found in the pool '{rbd_pool_name}'"
|
||||
)
|
||||
|
||||
def validate_subvolume_group(self):
|
||||
cephfs_filesystem_name = self._arg_parser.cephfs_filesystem_name
|
||||
subvolume_group = self._arg_parser.subvolume_group
|
||||
if subvolume_group == "":
|
||||
return
|
||||
if cephfs_filesystem_name == "":
|
||||
raise ExecutionFailureException(
|
||||
"if subvolume group is passed cephfs filesystem name is mandatory to pass"
|
||||
)
|
||||
|
||||
def get_or_create_subvolume_group(self, subvolume_group, cephfs_filesystem_name):
|
||||
cmd = [
|
||||
"ceph",
|
||||
"fs",
|
||||
@@ -1297,9 +1288,40 @@ class RadosJSON:
|
||||
]
|
||||
try:
|
||||
_ = subprocess.check_output(cmd, stderr=subprocess.PIPE)
|
||||
except subprocess.CalledProcessError as execErr:
|
||||
except subprocess.CalledProcessError:
|
||||
cmd = [
|
||||
"ceph",
|
||||
"fs",
|
||||
"subvolumegroup",
|
||||
"create",
|
||||
cephfs_filesystem_name,
|
||||
subvolume_group,
|
||||
]
|
||||
try:
|
||||
_ = subprocess.check_output(cmd, stderr=subprocess.PIPE)
|
||||
except subprocess.CalledProcessError:
|
||||
raise ExecutionFailureException(
|
||||
f"subvolume group {subvolume_group} is not able to get created"
|
||||
)
|
||||
|
||||
def pin_subvolume(
|
||||
self, subvolume_group, cephfs_filesystem_name, pin_type, pin_setting
|
||||
):
|
||||
cmd = [
|
||||
"ceph",
|
||||
"fs",
|
||||
"subvolumegroup",
|
||||
"pin",
|
||||
cephfs_filesystem_name,
|
||||
subvolume_group,
|
||||
pin_type,
|
||||
pin_setting,
|
||||
]
|
||||
try:
|
||||
_ = subprocess.check_output(cmd, stderr=subprocess.PIPE)
|
||||
except subprocess.CalledProcessError:
|
||||
raise ExecutionFailureException(
|
||||
f"subvolume group {subvolume_group} passed doesn't exist"
|
||||
f"subvolume group {subvolume_group} is not able to get pinned"
|
||||
)
|
||||
|
||||
def get_rgw_fsid(self, base_url, verify):
|
||||
@@ -1411,7 +1433,6 @@ class RadosJSON:
|
||||
) # always convert cluster name to lowercase characters
|
||||
self.validate_rbd_pool()
|
||||
self.validate_rados_namespace()
|
||||
self.validate_subvolume_group()
|
||||
self._excluded_keys.add("CLUSTER_NAME")
|
||||
self.get_cephfs_data_pool_details()
|
||||
self.out_map["NAMESPACE"] = self._arg_parser.namespace
|
||||
@@ -1451,6 +1472,25 @@ class RadosJSON:
|
||||
self.out_map["CSI_CEPHFS_PROVISIONER_SECRET"],
|
||||
self.out_map["CSI_CEPHFS_PROVISIONER_SECRET_NAME"],
|
||||
) = self.create_cephCSIKeyring_user("client.csi-cephfs-provisioner")
|
||||
# create the default "csi" subvolumegroup
|
||||
self.get_or_create_subvolume_group(
|
||||
"csi", self._arg_parser.cephfs_filesystem_name
|
||||
)
|
||||
# pin the default "csi" subvolumegroup
|
||||
self.pin_subvolume(
|
||||
"csi", self._arg_parser.cephfs_filesystem_name, "distributed", "1"
|
||||
)
|
||||
if self.out_map["SUBVOLUME_GROUP"]:
|
||||
self.get_or_create_subvolume_group(
|
||||
self._arg_parser.subvolume_group,
|
||||
self._arg_parser.cephfs_filesystem_name,
|
||||
)
|
||||
self.pin_subvolume(
|
||||
self._arg_parser.subvolume_group,
|
||||
self._arg_parser.cephfs_filesystem_name,
|
||||
"distributed",
|
||||
"1",
|
||||
)
|
||||
self.out_map["RGW_TLS_CERT"] = ""
|
||||
self.out_map["MONITORING_ENDPOINT"] = ""
|
||||
self.out_map["MONITORING_ENDPOINT_PORT"] = ""
|
||||
|
||||
Reference in new issue
Block a user