Integrate project global blocks into existing checks for cluster blocks (Part 2) (#129570)

Relates https://github.com/elastic/elasticsearch/pull/129467
Resolves ES-11209
This commit is contained in:
Pooya Salehi 2025-06-18 11:51:40 +02:00 committed by GitHub
parent f62fce9ae9
commit a229c8d932
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
39 changed files with 156 additions and 63 deletions

View file

@ -63,7 +63,7 @@ public class TransportGetDataStreamSettingsAction extends TransportLocalProjectM
@Override
protected ClusterBlockException checkBlock(GetDataStreamSettingsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -410,6 +410,6 @@ public class TransportGetDataStreamsAction extends TransportLocalProjectMetadata
@Override
protected ClusterBlockException checkBlock(GetDataStreamAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -77,6 +77,6 @@ public class TransportMigrateToDataStreamAction extends AcknowledgedTransportMas
@Override
protected ClusterBlockException checkBlock(MigrateToDataStreamAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -67,7 +67,7 @@ public class TransportModifyDataStreamsAction extends AcknowledgedTransportMaste
@Override
protected ClusterBlockException checkBlock(ModifyDataStreamsAction.Request request, ProjectState state) {
ClusterBlockException globalBlock = state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
ClusterBlockException globalBlock = state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
if (globalBlock != null) {
return globalBlock;
}

View file

@ -339,6 +339,6 @@ public class TransportUpdateDataStreamSettingsAction extends TransportMasterNode
@Override
protected ClusterBlockException checkBlock(UpdateDataStreamSettingsAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -105,6 +105,6 @@ public class TransportGetDataStreamLifecycleStatsAction extends TransportMasterN
@Override
protected ClusterBlockException checkBlock(GetDataStreamLifecycleStatsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -94,6 +94,6 @@ public class TransportPutDataStreamLifecycleAction extends AcknowledgedTransport
@Override
protected ClusterBlockException checkBlock(PutDataStreamLifecycleAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -121,6 +121,6 @@ public class TransportGetDataStreamOptionsAction extends TransportLocalProjectMe
@Override
protected ClusterBlockException checkBlock(GetDataStreamOptionsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -93,6 +93,6 @@ public class TransportPutDataStreamOptionsAction extends AcknowledgedTransportMa
@Override
protected ClusterBlockException checkBlock(PutDataStreamOptionsAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -15,6 +15,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@ -25,12 +26,15 @@ import org.elasticsearch.transport.TransportService;
public class TransportGetStoredScriptAction extends TransportMasterNodeReadAction<GetStoredScriptRequest, GetStoredScriptResponse> {
private final ProjectResolver projectResolver;
@Inject
public TransportGetStoredScriptAction(
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters
ActionFilters actionFilters,
ProjectResolver projectResolver
) {
super(
GetStoredScriptAction.NAME,
@ -42,6 +46,7 @@ public class TransportGetStoredScriptAction extends TransportMasterNodeReadActio
GetStoredScriptResponse::new,
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.projectResolver = projectResolver;
}
@Override
@ -56,7 +61,7 @@ public class TransportGetStoredScriptAction extends TransportMasterNodeReadActio
@Override
protected ClusterBlockException checkBlock(GetStoredScriptRequest request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -17,6 +17,7 @@ import org.elasticsearch.action.support.master.AcknowledgedTransportMasterNodeAc
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@ -29,6 +30,7 @@ public class TransportPutStoredScriptAction extends AcknowledgedTransportMasterN
public static final ActionType<AcknowledgedResponse> TYPE = new ActionType<>("cluster:admin/script/put");
private final ScriptService scriptService;
private final ProjectResolver projectResolver;
@Inject
public TransportPutStoredScriptAction(
@ -36,7 +38,8 @@ public class TransportPutStoredScriptAction extends AcknowledgedTransportMasterN
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
ScriptService scriptService
ScriptService scriptService,
ProjectResolver projectResolver
) {
super(
TYPE.name(),
@ -48,6 +51,7 @@ public class TransportPutStoredScriptAction extends AcknowledgedTransportMasterN
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.scriptService = scriptService;
this.projectResolver = projectResolver;
}
@Override
@ -62,7 +66,7 @@ public class TransportPutStoredScriptAction extends AcknowledgedTransportMasterN
@Override
protected ClusterBlockException checkBlock(PutStoredScriptRequest request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -200,7 +200,7 @@ public class TransportSimulateIndexTemplateAction extends TransportLocalProjectM
@Override
protected ClusterBlockException checkBlock(SimulateIndexTemplateRequest request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
/**

View file

@ -200,6 +200,6 @@ public class TransportSimulateTemplateAction extends TransportLocalProjectMetada
@Override
protected ClusterBlockException checkBlock(SimulateTemplateAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -67,7 +67,7 @@ public class TransportPutComponentTemplateAction extends AcknowledgedTransportMa
@Override
protected ClusterBlockException checkBlock(PutComponentTemplateAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
public static ComponentTemplate normalizeComponentTemplate(

View file

@ -75,7 +75,7 @@ public class TransportPutComposableIndexTemplateAction extends AcknowledgedTrans
@Override
protected ClusterBlockException checkBlock(Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -122,7 +122,7 @@ public abstract class TransportSingleShardAction<Request extends SingleShardRequ
protected abstract boolean resolveIndex(Request request);
protected static ClusterBlockException checkGlobalBlock(ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.READ);
}
protected ClusterBlockException checkRequestBlock(ProjectState state, InternalRequest request) {

View file

@ -91,6 +91,6 @@ public class TransportGetEnrichPolicyAction extends TransportLocalProjectMetadat
@Override
protected ClusterBlockException checkBlock(GetEnrichPolicyAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -124,6 +124,6 @@ public class TransportPutEnrichPolicyAction extends AcknowledgedTransportMasterN
@Override
protected ClusterBlockException checkBlock(PutEnrichPolicyAction.Request request, ProjectState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(state.projectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -13,6 +13,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.logging.DeprecationCategory;
import org.elasticsearch.common.logging.DeprecationLogger;
@ -38,6 +39,7 @@ public class TransportPutAnalyticsCollectionAction extends TransportMasterNodeAc
PutAnalyticsCollectionAction.Response> {
private final AnalyticsCollectionService analyticsCollectionService;
private final ProjectResolver projectResolver;
@Inject
public TransportPutAnalyticsCollectionAction(
@ -46,7 +48,8 @@ public class TransportPutAnalyticsCollectionAction extends TransportMasterNodeAc
ThreadPool threadPool,
ActionFilters actionFilters,
AnalyticsCollectionService analyticsCollectionService,
FeatureService featureService
FeatureService featureService,
ProjectResolver projectResolver
) {
super(
PutAnalyticsCollectionAction.NAME,
@ -59,11 +62,12 @@ public class TransportPutAnalyticsCollectionAction extends TransportMasterNodeAc
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.analyticsCollectionService = analyticsCollectionService;
this.projectResolver = projectResolver;
}
@Override
protected ClusterBlockException checkBlock(PutAnalyticsCollectionAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -16,6 +16,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -65,6 +66,7 @@ public class TransportPutInferenceModelAction extends TransportMasterNodeAction<
private final ModelRegistry modelRegistry;
private final InferenceServiceRegistry serviceRegistry;
private volatile boolean skipValidationAndStart;
private final ProjectResolver projectResolver;
@Inject
public TransportPutInferenceModelAction(
@ -75,7 +77,8 @@ public class TransportPutInferenceModelAction extends TransportMasterNodeAction<
XPackLicenseState licenseState,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry,
Settings settings
Settings settings,
ProjectResolver projectResolver
) {
super(
PutInferenceModelAction.NAME,
@ -93,6 +96,7 @@ public class TransportPutInferenceModelAction extends TransportMasterNodeAction<
this.skipValidationAndStart = InferencePlugin.SKIP_VALIDATE_AND_START.get(settings);
clusterService.getClusterSettings()
.addSettingsUpdateConsumer(InferencePlugin.SKIP_VALIDATE_AND_START, this::setSkipValidationAndStart);
this.projectResolver = projectResolver;
}
@Override
@ -251,7 +255,7 @@ public class TransportPutInferenceModelAction extends TransportMasterNodeAction<
@Override
protected ClusterBlockException checkBlock(PutInferenceModelAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -19,6 +19,7 @@ import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -75,6 +76,7 @@ public class TransportUpdateInferenceModelAction extends TransportMasterNodeActi
private final ModelRegistry modelRegistry;
private final InferenceServiceRegistry serviceRegistry;
private final Client client;
private final ProjectResolver projectResolver;
@Inject
public TransportUpdateInferenceModelAction(
@ -85,7 +87,8 @@ public class TransportUpdateInferenceModelAction extends TransportMasterNodeActi
XPackLicenseState licenseState,
ModelRegistry modelRegistry,
InferenceServiceRegistry serviceRegistry,
Client client
Client client,
ProjectResolver projectResolver
) {
super(
UpdateInferenceModelAction.NAME,
@ -101,6 +104,7 @@ public class TransportUpdateInferenceModelAction extends TransportMasterNodeActi
this.modelRegistry = modelRegistry;
this.serviceRegistry = serviceRegistry;
this.client = client;
this.projectResolver = projectResolver;
}
@Override
@ -345,7 +349,7 @@ public class TransportUpdateInferenceModelAction extends TransportMasterNodeActi
@Override
protected ClusterBlockException checkBlock(UpdateInferenceModelAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -14,6 +14,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@ -29,6 +30,7 @@ public class TransportGetDatafeedsAction extends TransportMasterNodeReadAction<G
private static final Logger logger = LogManager.getLogger(TransportGetDatafeedsAction.class);
private final DatafeedManager datafeedManager;
private final ProjectResolver projectResolver;
@Inject
public TransportGetDatafeedsAction(
@ -36,7 +38,8 @@ public class TransportGetDatafeedsAction extends TransportMasterNodeReadAction<G
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
DatafeedManager datafeedManager
DatafeedManager datafeedManager,
ProjectResolver projectResolver
) {
super(
GetDatafeedsAction.NAME,
@ -50,6 +53,7 @@ public class TransportGetDatafeedsAction extends TransportMasterNodeReadAction<G
);
this.datafeedManager = datafeedManager;
this.projectResolver = projectResolver;
}
@Override
@ -71,6 +75,6 @@ public class TransportGetDatafeedsAction extends TransportMasterNodeReadAction<G
@Override
protected ClusterBlockException checkBlock(GetDatafeedsAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -14,6 +14,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeReadAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@ -36,6 +37,7 @@ public class TransportGetJobsAction extends TransportMasterNodeReadAction<GetJob
private final JobManager jobManager;
private final DatafeedManager datafeedManager;
private final ProjectResolver projectResolver;
@Inject
public TransportGetJobsAction(
@ -44,7 +46,8 @@ public class TransportGetJobsAction extends TransportMasterNodeReadAction<GetJob
ThreadPool threadPool,
ActionFilters actionFilters,
JobManager jobManager,
DatafeedManager datafeedManager
DatafeedManager datafeedManager,
ProjectResolver projectResolver
) {
super(
GetJobsAction.NAME,
@ -58,6 +61,7 @@ public class TransportGetJobsAction extends TransportMasterNodeReadAction<GetJob
);
this.jobManager = jobManager;
this.datafeedManager = datafeedManager;
this.projectResolver = projectResolver;
}
@Override
@ -92,6 +96,6 @@ public class TransportGetJobsAction extends TransportMasterNodeReadAction<GetJob
@Override
protected ClusterBlockException checkBlock(GetJobsAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -16,6 +16,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.Settings;
@ -77,6 +78,7 @@ public class TransportPutDataFrameAnalyticsAction extends TransportMasterNodeAct
private final DataFrameAnalyticsAuditor auditor;
private final SourceDestValidator sourceDestValidator;
private final Supplier<ByteSizeValue> maxModelMemoryLimitSupplier;
private final ProjectResolver projectResolver;
@Inject
public TransportPutDataFrameAnalyticsAction(
@ -89,7 +91,8 @@ public class TransportPutDataFrameAnalyticsAction extends TransportMasterNodeAct
ClusterService clusterService,
IndexNameExpressionResolver indexNameExpressionResolver,
DataFrameAnalyticsConfigProvider configProvider,
DataFrameAnalyticsAuditor auditor
DataFrameAnalyticsAuditor auditor,
ProjectResolver projectResolver
) {
super(
PutDataFrameAnalyticsAction.NAME,
@ -118,11 +121,12 @@ public class TransportPutDataFrameAnalyticsAction extends TransportMasterNodeAct
clusterService.getNodeName(),
License.OperationMode.PLATINUM.description()
);
this.projectResolver = projectResolver;
}
@Override
protected ClusterBlockException checkBlock(PutDataFrameAnalyticsAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -12,6 +12,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -33,6 +34,7 @@ public class TransportPutDatafeedAction extends TransportMasterNodeAction<PutDat
private final XPackLicenseState licenseState;
private final SecurityContext securityContext;
private final DatafeedManager datafeedManager;
private final ProjectResolver projectResolver;
@Inject
public TransportPutDatafeedAction(
@ -42,7 +44,8 @@ public class TransportPutDatafeedAction extends TransportMasterNodeAction<PutDat
ThreadPool threadPool,
XPackLicenseState licenseState,
ActionFilters actionFilters,
DatafeedManager datafeedManager
DatafeedManager datafeedManager,
ProjectResolver projectResolver
) {
super(
PutDatafeedAction.NAME,
@ -59,6 +62,7 @@ public class TransportPutDatafeedAction extends TransportMasterNodeAction<PutDat
? new SecurityContext(settings, threadPool.getThreadContext())
: null;
this.datafeedManager = datafeedManager;
this.projectResolver = projectResolver;
}
@Override
@ -73,7 +77,7 @@ public class TransportPutDatafeedAction extends TransportMasterNodeAction<PutDat
@Override
protected ClusterBlockException checkBlock(PutDatafeedAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -15,6 +15,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -48,6 +49,7 @@ public class TransportPutJobAction extends TransportMasterNodeAction<PutJobActio
private final XPackLicenseState licenseState;
private final AnalysisRegistry analysisRegistry;
private final SecurityContext securityContext;
private final ProjectResolver projectResolver;
@Inject
public TransportPutJobAction(
@ -59,7 +61,8 @@ public class TransportPutJobAction extends TransportMasterNodeAction<PutJobActio
ActionFilters actionFilters,
JobManager jobManager,
DatafeedManager datafeedManager,
AnalysisRegistry analysisRegistry
AnalysisRegistry analysisRegistry,
ProjectResolver projectResolver
) {
super(
PutJobAction.NAME,
@ -78,6 +81,7 @@ public class TransportPutJobAction extends TransportMasterNodeAction<PutJobActio
this.securityContext = XPackSettings.SECURITY_ENABLED.get(settings)
? new SecurityContext(settings, threadPool.getThreadContext())
: null;
this.projectResolver = projectResolver;
}
@Override
@ -133,7 +137,7 @@ public class TransportPutJobAction extends TransportMasterNodeAction<PutJobActio
@Override
protected ClusterBlockException checkBlock(PutJobAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -22,6 +22,7 @@ import org.elasticsearch.client.internal.OriginSettingClient;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.ValidationException;
import org.elasticsearch.common.bytes.BytesReference;
@ -92,6 +93,7 @@ public class TransportPutTrainedModelAction extends TransportMasterNodeAction<Re
private final XPackLicenseState licenseState;
private final NamedXContentRegistry xContentRegistry;
private final OriginSettingClient client;
private final ProjectResolver projectResolver;
@Inject
public TransportPutTrainedModelAction(
@ -102,7 +104,8 @@ public class TransportPutTrainedModelAction extends TransportMasterNodeAction<Re
ActionFilters actionFilters,
Client client,
TrainedModelProvider trainedModelProvider,
NamedXContentRegistry xContentRegistry
NamedXContentRegistry xContentRegistry,
ProjectResolver projectResolver
) {
super(
PutTrainedModelAction.NAME,
@ -118,6 +121,7 @@ public class TransportPutTrainedModelAction extends TransportMasterNodeAction<Re
this.trainedModelProvider = trainedModelProvider;
this.xContentRegistry = xContentRegistry;
this.client = new OriginSettingClient(client, ML_ORIGIN);
this.projectResolver = projectResolver;
}
@Override
@ -533,7 +537,7 @@ public class TransportPutTrainedModelAction extends TransportMasterNodeAction<Re
@Override
protected ClusterBlockException checkBlock(Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -18,6 +18,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.ClusterStateUpdateTask;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.logging.HeaderWarning;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -63,6 +64,7 @@ public class TransportPutTrainedModelAliasAction extends AcknowledgedTransportMa
private final XPackLicenseState licenseState;
private final TrainedModelProvider trainedModelProvider;
private final InferenceAuditor auditor;
private final ProjectResolver projectResolver;
@Inject
public TransportPutTrainedModelAliasAction(
@ -72,7 +74,8 @@ public class TransportPutTrainedModelAliasAction extends AcknowledgedTransportMa
ThreadPool threadPool,
XPackLicenseState licenseState,
ActionFilters actionFilters,
InferenceAuditor auditor
InferenceAuditor auditor,
ProjectResolver projectResolver
) {
super(
PutTrainedModelAliasAction.NAME,
@ -86,6 +89,7 @@ public class TransportPutTrainedModelAliasAction extends AcknowledgedTransportMa
this.licenseState = licenseState;
this.trainedModelProvider = trainedModelProvider;
this.auditor = auditor;
this.projectResolver = projectResolver;
}
@Override
@ -277,6 +281,6 @@ public class TransportPutTrainedModelAliasAction extends AcknowledgedTransportMa
@Override
protected ClusterBlockException checkBlock(PutTrainedModelAliasAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -22,6 +22,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -62,6 +63,7 @@ public class TransportResetJobAction extends AcknowledgedTransportMasterNodeActi
private final JobConfigProvider jobConfigProvider;
private final JobResultsProvider jobResultsProvider;
private final AnomalyDetectionAuditor auditor;
private final ProjectResolver projectResolver;
@Inject
public TransportResetJobAction(
@ -73,7 +75,8 @@ public class TransportResetJobAction extends AcknowledgedTransportMasterNodeActi
Client client,
JobConfigProvider jobConfigProvider,
JobResultsProvider jobResultsProvider,
AnomalyDetectionAuditor auditor
AnomalyDetectionAuditor auditor,
ProjectResolver projectResolver
) {
super(
ResetJobAction.NAME,
@ -89,6 +92,7 @@ public class TransportResetJobAction extends AcknowledgedTransportMasterNodeActi
this.jobConfigProvider = Objects.requireNonNull(jobConfigProvider);
this.jobResultsProvider = Objects.requireNonNull(jobResultsProvider);
this.auditor = Objects.requireNonNull(auditor);
this.projectResolver = Objects.requireNonNull(projectResolver);
}
@Override
@ -275,6 +279,6 @@ public class TransportResetJobAction extends AcknowledgedTransportMasterNodeActi
@Override
protected ClusterBlockException checkBlock(ResetJobAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -23,6 +23,7 @@ import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.logging.HeaderWarning;
@ -114,6 +115,7 @@ public class TransportStartDataFrameAnalyticsAction extends TransportMasterNodeA
private final MlMemoryTracker memoryTracker;
private final DataFrameAnalyticsAuditor auditor;
private final SourceDestValidator sourceDestValidator;
private final ProjectResolver projectResolver;
@Inject
public TransportStartDataFrameAnalyticsAction(
@ -127,7 +129,8 @@ public class TransportStartDataFrameAnalyticsAction extends TransportMasterNodeA
PersistentTasksService persistentTasksService,
DataFrameAnalyticsConfigProvider configProvider,
MlMemoryTracker memoryTracker,
DataFrameAnalyticsAuditor auditor
DataFrameAnalyticsAuditor auditor,
ProjectResolver projectResolver
) {
super(
StartDataFrameAnalyticsAction.NAME,
@ -154,6 +157,7 @@ public class TransportStartDataFrameAnalyticsAction extends TransportMasterNodeA
clusterService.getNodeName(),
License.OperationMode.PLATINUM.description()
);
this.projectResolver = projectResolver;
}
@Override
@ -161,7 +165,7 @@ public class TransportStartDataFrameAnalyticsAction extends TransportMasterNodeA
// We only delegate here to PersistentTasksService, but if there is a metadata writeblock,
// then delegating to PersistentTasksService doesn't make a whole lot of sense,
// because PersistentTasksService will then fail.
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
@Override

View file

@ -22,6 +22,7 @@ import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.settings.Settings;
@ -103,6 +104,7 @@ public class TransportStartDatafeedAction extends TransportMasterNodeAction<Star
private final AnomalyDetectionAuditor auditor;
private final NamedXContentRegistry xContentRegistry;
private final boolean remoteClusterClient;
private final ProjectResolver projectResolver;
@Inject
public TransportStartDatafeedAction(
@ -117,7 +119,8 @@ public class TransportStartDatafeedAction extends TransportMasterNodeAction<Star
JobConfigProvider jobConfigProvider,
DatafeedConfigProvider datafeedConfigProvider,
AnomalyDetectionAuditor auditor,
NamedXContentRegistry xContentRegistry
NamedXContentRegistry xContentRegistry,
ProjectResolver projectResolver
) {
super(
StartDatafeedAction.NAME,
@ -137,6 +140,7 @@ public class TransportStartDatafeedAction extends TransportMasterNodeAction<Star
this.auditor = auditor;
this.xContentRegistry = xContentRegistry;
this.remoteClusterClient = DiscoveryNode.isRemoteClusterClient(settings);
this.projectResolver = projectResolver;
}
static void validate(
@ -356,7 +360,7 @@ public class TransportStartDatafeedAction extends TransportMasterNodeAction<Star
// We only delegate here to PersistentTasksService, but if there is a metadata writeblock,
// then delagating to PersistentTasksService doesn't make a whole lot of sense,
// because PersistentTasksService will then fail.
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
private void waitForDatafeedStarted(

View file

@ -24,6 +24,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.document.DocumentField;
import org.elasticsearch.common.unit.ByteSizeValue;
@ -100,6 +101,7 @@ public class TransportStartTrainedModelDeploymentAction extends TransportMasterN
private final TrainedModelAssignmentService trainedModelAssignmentService;
private final MlMemoryTracker memoryTracker;
private final InferenceAuditor auditor;
private final ProjectResolver projectResolver;
@Inject
public TransportStartTrainedModelDeploymentAction(
@ -111,7 +113,8 @@ public class TransportStartTrainedModelDeploymentAction extends TransportMasterN
XPackLicenseState licenseState,
TrainedModelAssignmentService trainedModelAssignmentService,
MlMemoryTracker memoryTracker,
InferenceAuditor auditor
InferenceAuditor auditor,
ProjectResolver projectResolver
) {
super(
StartTrainedModelDeploymentAction.NAME,
@ -128,6 +131,7 @@ public class TransportStartTrainedModelDeploymentAction extends TransportMasterN
this.memoryTracker = Objects.requireNonNull(memoryTracker);
this.trainedModelAssignmentService = Objects.requireNonNull(trainedModelAssignmentService);
this.auditor = Objects.requireNonNull(auditor);
this.projectResolver = Objects.requireNonNull(projectResolver);
}
@Override
@ -642,7 +646,7 @@ public class TransportStartTrainedModelDeploymentAction extends TransportMasterN
// We only delegate here to PersistentTasksService, but if there is a metadata writeblock,
// then delegating to PersistentTasksService doesn't make a whole lot of sense,
// because PersistentTasksService will then fail.
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
private static ElasticsearchStatusException missingFieldsError(String modelId, String hitId, Collection<String> missingFields) {

View file

@ -12,6 +12,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -29,6 +30,7 @@ public class TransportUpdateDatafeedAction extends TransportMasterNodeAction<Upd
private final DatafeedManager datafeedManager;
private final SecurityContext securityContext;
private final ProjectResolver projectResolver;
@Inject
public TransportUpdateDatafeedAction(
@ -37,7 +39,8 @@ public class TransportUpdateDatafeedAction extends TransportMasterNodeAction<Upd
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
DatafeedManager datafeedManager
DatafeedManager datafeedManager,
ProjectResolver projectResolver
) {
super(
UpdateDatafeedAction.NAME,
@ -54,6 +57,7 @@ public class TransportUpdateDatafeedAction extends TransportMasterNodeAction<Upd
this.securityContext = XPackSettings.SECURITY_ENABLED.get(settings)
? new SecurityContext(settings, threadPool.getThreadContext())
: null;
this.projectResolver = projectResolver;
}
@Override
@ -69,6 +73,6 @@ public class TransportUpdateDatafeedAction extends TransportMasterNodeAction<Upd
@Override
protected ClusterBlockException checkBlock(UpdateDatafeedAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -12,6 +12,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@ -25,6 +26,7 @@ import org.elasticsearch.xpack.ml.job.JobManager;
public class TransportUpdateJobAction extends TransportMasterNodeAction<UpdateJobAction.Request, PutJobAction.Response> {
private final JobManager jobManager;
private final ProjectResolver projectResolver;
@Inject
public TransportUpdateJobAction(
@ -32,7 +34,8 @@ public class TransportUpdateJobAction extends TransportMasterNodeAction<UpdateJo
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters,
JobManager jobManager
JobManager jobManager,
ProjectResolver projectResolver
) {
super(
UpdateJobAction.NAME,
@ -45,6 +48,7 @@ public class TransportUpdateJobAction extends TransportMasterNodeAction<UpdateJo
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.jobManager = jobManager;
this.projectResolver = projectResolver;
}
@Override
@ -59,6 +63,6 @@ public class TransportUpdateJobAction extends TransportMasterNodeAction<UpdateJo
@Override
protected ClusterBlockException checkBlock(UpdateJobAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -15,6 +15,7 @@ import org.elasticsearch.action.support.master.TransportMasterNodeAction;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.util.concurrent.EsExecutors;
import org.elasticsearch.injection.guice.Inject;
@ -39,6 +40,7 @@ public class TransportUpdateTrainedModelDeploymentAction extends TransportMaster
private final TrainedModelAssignmentClusterService trainedModelAssignmentClusterService;
private final InferenceAuditor auditor;
private final ProjectResolver projectResolver;
@Inject
public TransportUpdateTrainedModelDeploymentAction(
@ -47,7 +49,8 @@ public class TransportUpdateTrainedModelDeploymentAction extends TransportMaster
ThreadPool threadPool,
ActionFilters actionFilters,
TrainedModelAssignmentClusterService trainedModelAssignmentClusterService,
InferenceAuditor auditor
InferenceAuditor auditor,
ProjectResolver projectResolver
) {
super(
UpdateTrainedModelDeploymentAction.NAME,
@ -61,6 +64,7 @@ public class TransportUpdateTrainedModelDeploymentAction extends TransportMaster
);
this.trainedModelAssignmentClusterService = Objects.requireNonNull(trainedModelAssignmentClusterService);
this.auditor = Objects.requireNonNull(auditor);
this.projectResolver = Objects.requireNonNull(projectResolver);
}
@Override
@ -95,6 +99,6 @@ public class TransportUpdateTrainedModelDeploymentAction extends TransportMaster
@Override
protected ClusterBlockException checkBlock(UpdateTrainedModelDeploymentAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
}

View file

@ -16,6 +16,7 @@ import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.PlainActionFuture;
import org.elasticsearch.client.internal.Client;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.project.TestProjectResolvers;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.common.xcontent.XContentHelper;
@ -367,7 +368,8 @@ public class TransportPutTrainedModelActionTests extends ESTestCase {
mockFilters,
mockClient,
null,
null
null,
TestProjectResolvers.DEFAULT_PROJECT_ONLY
);
}

View file

@ -21,6 +21,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -65,6 +66,7 @@ public class TransportPutTransformAction extends AcknowledgedTransportMasterNode
private final SecurityContext securityContext;
private final TransformAuditor auditor;
private final TransformConfigAutoMigration transformConfigAutoMigration;
private final ProjectResolver projectResolver;
@Inject
public TransportPutTransformAction(
@ -76,7 +78,8 @@ public class TransportPutTransformAction extends AcknowledgedTransportMasterNode
ClusterService clusterService,
TransformServices transformServices,
Client client,
TransformConfigAutoMigration transformConfigAutoMigration
TransformConfigAutoMigration transformConfigAutoMigration,
ProjectResolver projectResolver
) {
super(
PutTransformAction.NAME,
@ -96,6 +99,7 @@ public class TransportPutTransformAction extends AcknowledgedTransportMasterNode
: null;
this.auditor = transformServices.auditor();
this.transformConfigAutoMigration = transformConfigAutoMigration;
this.projectResolver = projectResolver;
}
@Override
@ -183,7 +187,7 @@ public class TransportPutTransformAction extends AcknowledgedTransportMasterNode
@Override
protected ClusterBlockException checkBlock(PutTransformAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
private void putTransform(Request request, ActionListener<AcknowledgedResponse> listener) {

View file

@ -22,6 +22,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -63,6 +64,7 @@ public class TransportResetTransformAction extends AcknowledgedTransportMasterNo
private final SecurityContext securityContext;
private final Settings settings;
private final Settings destIndexSettings;
private final ProjectResolver projectResolver;
@Inject
public TransportResetTransformAction(
@ -74,7 +76,8 @@ public class TransportResetTransformAction extends AcknowledgedTransportMasterNo
TransformServices transformServices,
Client client,
Settings settings,
TransformExtensionHolder transformExtensionHolder
TransformExtensionHolder transformExtensionHolder,
ProjectResolver projectResolver
) {
super(
ResetTransformAction.NAME,
@ -94,6 +97,7 @@ public class TransportResetTransformAction extends AcknowledgedTransportMasterNo
: null;
this.settings = settings;
this.destIndexSettings = transformExtensionHolder.getTransformExtension().getTransformDestinationIndexSettings();
this.projectResolver = projectResolver;
}
@Override
@ -217,6 +221,6 @@ public class TransportResetTransformAction extends AcknowledgedTransportMasterNo
@Override
protected ClusterBlockException checkBlock(Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_READ);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_READ);
}
}

View file

@ -22,6 +22,7 @@ import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.block.ClusterBlockException;
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.EsExecutors;
@ -72,6 +73,7 @@ public class TransportStartTransformAction extends TransportMasterNodeAction<Sta
private final Client client;
private final TransformAuditor auditor;
private final Settings destIndexSettings;
private final ProjectResolver projectResolver;
@Inject
public TransportStartTransformAction(
@ -83,7 +85,8 @@ public class TransportStartTransformAction extends TransportMasterNodeAction<Sta
TransformServices transformServices,
PersistentTasksService persistentTasksService,
Client client,
TransformExtensionHolder transformExtensionHolder
TransformExtensionHolder transformExtensionHolder,
ProjectResolver projectResolver
) {
this(
StartTransformAction.NAME,
@ -95,7 +98,8 @@ public class TransportStartTransformAction extends TransportMasterNodeAction<Sta
transformServices,
persistentTasksService,
client,
transformExtensionHolder
transformExtensionHolder,
projectResolver
);
}
@ -109,7 +113,8 @@ public class TransportStartTransformAction extends TransportMasterNodeAction<Sta
TransformServices transformServices,
PersistentTasksService persistentTasksService,
Client client,
TransformExtensionHolder transformExtensionHolder
TransformExtensionHolder transformExtensionHolder,
ProjectResolver projectResolver
) {
super(
name,
@ -127,6 +132,7 @@ public class TransportStartTransformAction extends TransportMasterNodeAction<Sta
this.client = client;
this.auditor = transformServices.auditor();
this.destIndexSettings = transformExtensionHolder.getTransformExtension().getTransformDestinationIndexSettings();
this.projectResolver = projectResolver;
}
@Override
@ -300,7 +306,7 @@ public class TransportStartTransformAction extends TransportMasterNodeAction<Sta
@Override
protected ClusterBlockException checkBlock(StartTransformAction.Request request, ClusterState state) {
return state.blocks().globalBlockedException(ClusterBlockLevel.METADATA_WRITE);
return state.blocks().globalBlockedException(projectResolver.getProjectId(), ClusterBlockLevel.METADATA_WRITE);
}
private void cancelTransformTask(String taskId, String transformId, Exception exception, Consumer<Exception> onFailure) {