@@ -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" ]:
0 commit comments