Skip to content

Commit d925930

Browse files
Add migrate mds pools logic for metadata name flag
* Add support to change behaviour based on feature flags * Add logic to handle Rook flag for MDS metadata pool names support Signed-off-by: Tobias Wolf <[email protected]>
1 parent 725917c commit d925930

File tree

2 files changed

+34
-16
lines changed

2 files changed

+34
-16
lines changed

src/rookify/modules/migrate_mds_pools/main.py

+31-16
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,22 @@ def preflight(self) -> None:
2020
state_data["report"]["osdmap"]
2121
)
2222

23+
are_custom_metadata_pool_names_supported = self.k8s.get_rook_flag(
24+
"mds_support_metadata_name", True
25+
)
26+
2327
for mds_fs_data in state_data["fs"]["ls"]:
24-
if not mds_fs_data["metadata_pool"].endswith("-metadata"):
28+
if not (
29+
are_custom_metadata_pool_names_supported
30+
and mds_fs_data["metadata_pool"].endswith("-metadata")
31+
):
2532
self.logger.warn(
2633
"ceph-mds filesystem '{0}' uses an incompatible pool metadata name '{1}' and can not be migrated to Rook automatically".format(
2734
mds_fs_data["name"], mds_fs_data["metadata_pool"]
2835
)
2936
)
3037

31-
# Store pools for incompatible MDS filesystem as migrated ones
32-
migrated_pools = self.machine.get_execution_state_data(
33-
"MigrateMdsPoolsHandler", "migrated_pools", default_value=[]
34-
)
35-
36-
if mds_fs_data["metadata_pool"] not in migrated_pools:
37-
migrated_pools.append(mds_fs_data["metadata_pool"])
38-
39-
for pool_data_osd_name in mds_fs_data["data_pools"]:
40-
if pool_data_osd_name not in migrated_pools:
41-
migrated_pools.append(pool_data_osd_name)
42-
43-
state = self.machine.get_execution_state("MigrateMdsPoolsHandler")
44-
if state is not None:
45-
state.migrated_pools = migrated_pools
38+
self._handle_mds_metadata_pool_not_supported(mds_fs_data)
4639

4740
continue
4841

@@ -92,6 +85,23 @@ def get_readable_key_value_state(self) -> Dict[str, str]:
9285

9386
return kv_state_data
9487

88+
def _handle_mds_metadata_pool_not_supported(self, mds_fs_data: Any) -> None:
89+
# Store pools for incompatible MDS filesystem as migrated ones
90+
migrated_pools = self.machine.get_execution_state_data(
91+
"MigrateMdsPoolsHandler", "migrated_pools", default_value=[]
92+
)
93+
94+
if mds_fs_data["metadata_pool"] not in migrated_pools:
95+
migrated_pools.append(mds_fs_data["metadata_pool"])
96+
97+
for pool_data_osd_name in mds_fs_data["data_pools"]:
98+
if pool_data_osd_name not in migrated_pools:
99+
migrated_pools.append(pool_data_osd_name)
100+
101+
state = self.machine.get_execution_state("MigrateMdsPoolsHandler")
102+
if state is not None:
103+
state.migrated_pools = migrated_pools
104+
95105
def _migrate_pool(self, pool: Dict[str, Any]) -> None:
96106
migrated_mds_pools = self.machine.get_execution_state_data(
97107
"MigrateMdsPoolsHandler", "migrated_mds_pools", default_value=[]
@@ -118,6 +128,11 @@ def _migrate_pool(self, pool: Dict[str, Any]) -> None:
118128
"mds_placement_label": self.k8s.mds_placement_label,
119129
}
120130

131+
if self.k8s.get_rook_flag("mds_support_metadata_name", True):
132+
filesystem_definition_values["mds_name"] = pool_metadata_osd_configuration[
133+
"pool_name"
134+
]
135+
121136
filesystem_definition_values["data_pools"] = []
122137

123138
for pool_data_osd_name in pool["data"]:

src/rookify/modules/migrate_mds_pools/templates/filesystem.yaml.j2

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ metadata:
1414
spec:
1515
# The metadata pool spec. Must use replication.
1616
metadataPool:
17+
{% if mds_name %}
18+
name: {{ mds_name }}
19+
{% endif %}
1720
replicated:
1821
size: {{ mds_size }}
1922
requireSafeReplicaSize: true

0 commit comments

Comments
 (0)