Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import org.elasticsearch.cluster.block.ClusterBlockLevel;
import org.elasticsearch.cluster.metadata.IndexMetadata;
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;
Expand All @@ -37,6 +38,7 @@ public class TransportGetWatcherSettingsAction extends TransportLocalClusterStat
GetWatcherSettingsAction.Response> {

private final IndexNameExpressionResolver indexNameExpressionResolver;
private final ProjectResolver projectResolver;

/**
* NB prior to 9.0 this was a TransportMasterNodeReadAction so for BwC it must be registered with the TransportService until
Expand All @@ -49,7 +51,8 @@ public TransportGetWatcherSettingsAction(
TransportService transportService,
ClusterService clusterService,
ActionFilters actionFilters,
IndexNameExpressionResolver indexNameExpressionResolver
IndexNameExpressionResolver indexNameExpressionResolver,
ProjectResolver projectResolver
) {
super(
GetWatcherSettingsAction.NAME,
Expand All @@ -59,6 +62,7 @@ public TransportGetWatcherSettingsAction(
EsExecutors.DIRECT_EXECUTOR_SERVICE
);
this.indexNameExpressionResolver = indexNameExpressionResolver;
this.projectResolver = projectResolver;

transportService.registerRequestHandler(
actionName,
Expand All @@ -78,7 +82,7 @@ protected void localClusterStateOperation(
ActionListener<GetWatcherSettingsAction.Response> listener
) {
((CancellableTask) task).ensureNotCancelled();
IndexMetadata metadata = state.metadata().getProject().index(WATCHER_INDEX_NAME);
IndexMetadata metadata = state.metadata().getProject(projectResolver.getProjectId()).index(WATCHER_INDEX_NAME);
if (metadata == null) {
listener.onResponse(new GetWatcherSettingsAction.Response(Settings.EMPTY));
} else {
Expand Down Expand Up @@ -110,6 +114,7 @@ protected ClusterBlockException checkBlock(GetWatcherSettingsAction.Request requ
}
return state.blocks()
.indicesBlockedException(
projectResolver.getProjectId(),
ClusterBlockLevel.METADATA_READ,
indexNameExpressionResolver.concreteIndexNamesWithSystemIndexAccess(state, WATCHER_INDEX_REQUEST)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.MetadataUpdateSettingsService;
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;
Expand Down Expand Up @@ -55,6 +56,7 @@ public IndicesOptions indicesOptions() {
private static final Logger logger = LogManager.getLogger(TransportUpdateWatcherSettingsAction.class);
private final MetadataUpdateSettingsService updateSettingsService;
private final IndexNameExpressionResolver indexNameExpressionResolver;
private final ProjectResolver projectResolver;

@Inject
public TransportUpdateWatcherSettingsAction(
Expand All @@ -63,7 +65,8 @@ public TransportUpdateWatcherSettingsAction(
ThreadPool threadPool,
ActionFilters actionFilters,
MetadataUpdateSettingsService updateSettingsService,
IndexNameExpressionResolver indexNameExpressionResolver
IndexNameExpressionResolver indexNameExpressionResolver,
ProjectResolver projectResolver
) {
super(
UpdateWatcherSettingsAction.NAME,
Expand All @@ -77,6 +80,7 @@ public TransportUpdateWatcherSettingsAction(
);
this.updateSettingsService = updateSettingsService;
this.indexNameExpressionResolver = indexNameExpressionResolver;
this.projectResolver = projectResolver;
}

@FixForMultiProject(description = "Don't use default project id to update settings")
Expand All @@ -87,7 +91,7 @@ protected void masterOperation(
ClusterState state,
ActionListener<AcknowledgedResponse> listener
) {
final IndexMetadata watcherIndexMd = state.metadata().getProject().index(WATCHER_INDEX_NAME);
final IndexMetadata watcherIndexMd = projectResolver.getProjectMetadata(state.metadata()).index(WATCHER_INDEX_NAME);
if (watcherIndexMd == null) {
// Index does not exist, so fail fast
listener.onFailure(new ResourceNotFoundException("no Watches found on which to modify settings"));
Expand Down Expand Up @@ -131,6 +135,7 @@ protected ClusterBlockException checkBlock(UpdateWatcherSettingsAction.Request r
}
return state.blocks()
.indicesBlockedException(
projectResolver.getProjectId(),
ClusterBlockLevel.METADATA_WRITE,
indexNameExpressionResolver.concreteIndexNamesWithSystemIndexAccess(state, WATCHER_INDEX_REQUEST)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
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.core.SuppressForbidden;
import org.elasticsearch.injection.guice.Inject;
Expand All @@ -34,13 +35,15 @@
public class TransportWatcherServiceAction extends AcknowledgedTransportMasterNodeAction<WatcherServiceRequest> {

private static final Logger logger = LogManager.getLogger(TransportWatcherServiceAction.class);
private final ProjectResolver projectResolver;

@Inject
public TransportWatcherServiceAction(
TransportService transportService,
ClusterService clusterService,
ThreadPool threadPool,
ActionFilters actionFilters
ActionFilters actionFilters,
ProjectResolver projectResolver
) {
super(
WatcherServiceAction.NAME,
Expand All @@ -51,6 +54,7 @@ public TransportWatcherServiceAction(
WatcherServiceRequest::new,
threadPool.executor(ThreadPool.Names.MANAGEMENT)
);
this.projectResolver = projectResolver;
}

@Override
Expand All @@ -73,7 +77,7 @@ public ClusterState execute(ClusterState clusterState) {
XPackPlugin.checkReadyForXPackCustomMetadata(clusterState);

WatcherMetadata newWatcherMetadata = new WatcherMetadata(manuallyStopped);
final var project = clusterState.metadata().getProject();
final var project = clusterState.metadata().getProject(projectResolver.getProjectId());
WatcherMetadata currentMetadata = project.custom(WatcherMetadata.TYPE);

// adhere to the contract of returning the original state if nothing has changed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import org.elasticsearch.action.support.ActionFilters;
import org.elasticsearch.action.support.nodes.TransportNodesAction;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.project.ProjectResolver;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.io.stream.StreamInput;
import org.elasticsearch.injection.guice.Inject;
Expand Down Expand Up @@ -42,6 +43,7 @@ public class TransportWatcherStatsAction extends TransportNodesAction<
private final ExecutionService executionService;
private final TriggerService triggerService;
private final WatcherLifeCycleService lifeCycleService;
private final ProjectResolver projectResolver;

@Inject
public TransportWatcherStatsAction(
Expand All @@ -51,7 +53,8 @@ public TransportWatcherStatsAction(
ActionFilters actionFilters,
WatcherLifeCycleService lifeCycleService,
ExecutionService executionService,
TriggerService triggerService
TriggerService triggerService,
ProjectResolver projectResolver
) {
super(
WatcherStatsAction.NAME,
Expand All @@ -64,6 +67,7 @@ public TransportWatcherStatsAction(
this.lifeCycleService = lifeCycleService;
this.executionService = executionService;
this.triggerService = triggerService;
this.projectResolver = projectResolver;
}

@Override
Expand Down Expand Up @@ -106,7 +110,8 @@ protected WatcherStatsResponse.Node nodeOperation(WatcherStatsRequest.Node reque
}

private WatcherMetadata getWatcherMetadata() {
WatcherMetadata watcherMetadata = clusterService.state().getMetadata().getProject().custom(WatcherMetadata.TYPE);

WatcherMetadata watcherMetadata = projectResolver.getProjectMetadata(clusterService.state()).custom(WatcherMetadata.TYPE);
if (watcherMetadata == null) {
watcherMetadata = new WatcherMetadata(false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,11 @@
import org.elasticsearch.cluster.ClusterName;
import org.elasticsearch.cluster.ClusterState;
import org.elasticsearch.cluster.metadata.Metadata;
import org.elasticsearch.cluster.metadata.ProjectId;
import org.elasticsearch.cluster.metadata.ProjectMetadata;
import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.node.DiscoveryNodeUtils;
import org.elasticsearch.cluster.project.TestProjectResolvers;
import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.bytes.BytesReference;
import org.elasticsearch.test.ESTestCase;
Expand Down Expand Up @@ -48,6 +51,7 @@ public class TransportWatcherStatsActionTests extends ESTestCase {

@Before
public void setupTransportAction() {
ProjectId projectId = randomProjectIdOrDefault();
threadPool = new TestThreadPool("TransportWatcherStatsActionTests");
TransportService transportService = mock(TransportService.class);
when(transportService.getThreadPool()).thenReturn(threadPool);
Expand All @@ -62,6 +66,7 @@ public void setupTransportAction() {
ClusterState clusterState = mock(ClusterState.class);
when(clusterState.getMetadata()).thenReturn(Metadata.EMPTY_METADATA);
when(clusterService.state()).thenReturn(clusterState);
when(clusterState.metadata()).thenReturn(Metadata.builder().put(ProjectMetadata.builder(projectId).build()).build());

WatcherLifeCycleService watcherLifeCycleService = mock(WatcherLifeCycleService.class);
when(watcherLifeCycleService.getState()).thenReturn(() -> WatcherState.STARTED);
Expand Down Expand Up @@ -91,7 +96,8 @@ public void setupTransportAction() {
new ActionFilters(Collections.emptySet()),
watcherLifeCycleService,
executionService,
triggerService
triggerService,
TestProjectResolvers.singleProject(projectId)
);
}

Expand Down