1111import org .apache .logging .log4j .Logger ;
1212import org .elasticsearch .client .internal .Client ;
1313import org .elasticsearch .cluster .ClusterState ;
14+ import org .elasticsearch .cluster .ProjectState ;
1415import org .elasticsearch .cluster .metadata .ComponentTemplate ;
1516import org .elasticsearch .cluster .metadata .ComposableIndexTemplate ;
1617import org .elasticsearch .cluster .metadata .IndexMetadata ;
1920import org .elasticsearch .cluster .metadata .Metadata ;
2021import org .elasticsearch .cluster .metadata .ProjectMetadata ;
2122import org .elasticsearch .cluster .metadata .Template ;
22- import org .elasticsearch .cluster .project .ProjectResolver ;
2323import org .elasticsearch .cluster .routing .allocation .DataTier ;
2424import org .elasticsearch .common .Strings ;
2525import org .elasticsearch .common .settings .Settings ;
26+ import org .elasticsearch .core .NotMultiProjectCapable ;
2627import org .elasticsearch .core .Nullable ;
2728import org .elasticsearch .core .Tuple ;
2829import org .elasticsearch .license .XPackLicenseState ;
@@ -178,16 +179,15 @@ private MetadataMigrateToDataTiersRoutingService() {}
178179 * ILM routing allocations. It also returns a summary of the affected abstractions encapsulated in {@link MigratedEntities}
179180 */
180181 public static Tuple <ClusterState , MigratedEntities > migrateToDataTiersRouting (
181- ClusterState currentState ,
182- ProjectResolver projectResolver ,
182+ ProjectState currentState ,
183183 @ Nullable String nodeAttrName ,
184184 @ Nullable String indexTemplateToDelete ,
185185 NamedXContentRegistry xContentRegistry ,
186186 Client client ,
187187 XPackLicenseState licenseState ,
188188 boolean dryRun
189189 ) {
190- ProjectMetadata currentProjectMetadata = projectResolver . getProjectMetadata ( currentState );
190+ ProjectMetadata currentProjectMetadata = currentState . metadata ( );
191191 if (dryRun == false ) {
192192 IndexLifecycleMetadata currentMetadata = currentProjectMetadata .custom (IndexLifecycleMetadata .TYPE );
193193 if (currentMetadata != null && currentILMMode (currentProjectMetadata ) != STOPPED ) {
@@ -197,7 +197,9 @@ public static Tuple<ClusterState, MigratedEntities> migrateToDataTiersRouting(
197197 }
198198 }
199199
200- Metadata .Builder mb = Metadata .builder (currentState .metadata ());
200+ @ NotMultiProjectCapable // We're doing something fishy here by updating the Metadata even though we're inside the scope of a single
201+ // project. This is generally not correct, but since ILM is not properly project-aware, we're making an exception here.
202+ Metadata .Builder mb = Metadata .builder (currentState .cluster ().metadata ());
201203 ProjectMetadata .Builder newProjectMetadataBuilder = ProjectMetadata .builder (currentProjectMetadata );
202204
203205 // remove ENFORCE_DEFAULT_TIER_PREFERENCE from the persistent settings
@@ -245,7 +247,7 @@ public static Tuple<ClusterState, MigratedEntities> migrateToDataTiersRouting(
245247 attribute
246248 );
247249 return Tuple .tuple (
248- ClusterState .builder (currentState ).metadata (mb ).putProjectMetadata (newProjectMetadataBuilder ).build (),
250+ ClusterState .builder (currentState . cluster () ).metadata (mb ).putProjectMetadata (newProjectMetadataBuilder ).build (),
249251 new MigratedEntities (removedIndexTemplateName , migratedIndices , migratedPolicies , migratedTemplates )
250252 );
251253 }
0 commit comments