diff --git a/CHANGELOG-3.0.md b/CHANGELOG-3.0.md index 1f5942af52742..e6d89b2930ff8 100644 --- a/CHANGELOG-3.0.md +++ b/CHANGELOG-3.0.md @@ -24,7 +24,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Add task completion count in search backpressure stats API ([#10028](https://github.com/opensearch-project/OpenSearch/pull/10028/)) - Deprecate CamelCase `PathHierarchy` tokenizer name in favor to lowercase `path_hierarchy` ([#10894](https://github.com/opensearch-project/OpenSearch/pull/10894)) - Breaking change: Do not request "search_pipelines" metrics by default in NodesInfoRequest ([#12497](https://github.com/opensearch-project/OpenSearch/pull/12497)) -- [Query Sandbox] Add Resource Limit Group CRUD APIs ([#13315](https://github.com/opensearch-project/OpenSearch/pull/13315)) +- [QueryGroup] Add QueryGroup CRUD APIs ([#13315](https://github.com/opensearch-project/OpenSearch/pull/13315)) ### Deprecated diff --git a/plugins/query-group/build.gradle b/plugins/workload-management/build.gradle similarity index 73% rename from plugins/query-group/build.gradle rename to plugins/workload-management/build.gradle index a90f895966786..e91ef90005c74 100644 --- a/plugins/query-group/build.gradle +++ b/plugins/workload-management/build.gradle @@ -10,8 +10,8 @@ */ opensearchplugin { - description 'OpenSearch QueryGroup Plugin.' - classname 'org.opensearch.plugin.qg.QueryGroupPlugin' + description 'OpenSearch Workload Management Plugin.' + classname 'org.opensearch.plugin.wlm.WorkloadManagementPlugin' } dependencies { diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupAction.java similarity index 92% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupAction.java index fc0c143a8f218..068f7822fd437 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupAction.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionType; @@ -25,7 +25,7 @@ public class CreateQueryGroupAction extends ActionType /** * Name for CreateQueryGroupAction */ - public static final String NAME = "cluster:admin/opensearch/query_group/_create"; + public static final String NAME = "cluster:admin/opensearch/query_group/wlm/_create"; /** * Default constructor diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupRequest.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupRequest.java similarity index 96% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupRequest.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupRequest.java index 33a17593cf625..675e471e38581 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupRequest.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupRequest.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionRequest; import org.opensearch.action.ActionRequestValidationException; @@ -123,6 +123,7 @@ private void verifyCreateQueryGroupRequest( Objects.requireNonNull(updatedAtInMillis, "QueryGroup.updatedAtInMillis can't be null"); validateName(name); + validateMode(mode); validateResourceLimits(resourceLimits); validateUpdatedAtInMillis(updatedAtInMillis); } @@ -146,6 +147,16 @@ public static void validateName(String name) { } } + /** + * Verification for CreateQueryGroupRequest.mode + * @param mode - mode to be verified + */ + public static void validateMode(QueryGroupMode mode) { + if (!mode.getName().equals("monitor")) { + throw new IllegalArgumentException("QueryGroup.mode must be monitor"); + } + } + /** * Verification for CreateQueryGroupRequest.resourceLimits * @param resourceLimits - resourceLimits to be verified diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupResponse.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupResponse.java similarity index 85% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupResponse.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupResponse.java index b431706960e42..5e70084f0f0e1 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/CreateQueryGroupResponse.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/CreateQueryGroupResponse.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.core.action.ActionResponse; @@ -30,17 +30,12 @@ public class CreateQueryGroupResponse extends ActionResponse implements ToXConte /** * Constructor for CreateQueryGroupResponse + * @param queryGroup - The QueryGroup to be created + * @param restStatus - The resStatus for the response */ - public CreateQueryGroupResponse() { - this.queryGroup = null; - } - - /** - * Constructor for CreateQueryGroupResponse - * @param queryGroup - The resource limit group to be created - */ - public CreateQueryGroupResponse(final QueryGroup queryGroup) { + public CreateQueryGroupResponse(final QueryGroup queryGroup, RestStatus restStatus) { this.queryGroup = queryGroup; + this.restStatus = restStatus; } /** @@ -49,11 +44,13 @@ public CreateQueryGroupResponse(final QueryGroup queryGroup) { */ public CreateQueryGroupResponse(StreamInput in) throws IOException { queryGroup = new QueryGroup(in); + restStatus = RestStatus.readFrom(in); } @Override public void writeTo(StreamOutput out) throws IOException { queryGroup.writeTo(out); + RestStatus.writeTo(out, restStatus); } @Override diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupAction.java similarity index 92% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupAction.java index 2d5acc49c7cf3..207f8ae8ee5c1 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupAction.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionType; @@ -18,7 +18,7 @@ public class DeleteQueryGroupAction extends ActionType { /** - /** + /** * An instance of DeleteQueryGroupAction */ public static final DeleteQueryGroupAction INSTANCE = new DeleteQueryGroupAction(); @@ -26,7 +26,7 @@ public class DeleteQueryGroupAction extends ActionType /** * Name for DeleteQueryGroupAction */ - public static final String NAME = "cluster:admin/opensearch/query_group/_delete"; + public static final String NAME = "cluster:admin/opensearch/query_group/wlm/_delete"; /** * Default constructor diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupRequest.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupRequest.java similarity index 98% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupRequest.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupRequest.java index eb35bb3a2c80e..3d05a33bc1808 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupRequest.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupRequest.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionRequest; import org.opensearch.action.ActionRequestValidationException; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupResponse.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupResponse.java similarity index 90% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupResponse.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupResponse.java index 37e97a490908e..0c1258df338a9 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/DeleteQueryGroupResponse.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/DeleteQueryGroupResponse.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.core.action.ActionResponse; @@ -29,19 +29,14 @@ public class DeleteQueryGroupResponse extends ActionResponse implements ToXConte private final List queryGroups; private RestStatus restStatus; - /** - * Constructor for DeleteQueryGroupResponse - */ - public DeleteQueryGroupResponse() { - this.queryGroups = null; - } - /** * Constructor for DeleteQueryGroupResponse * @param queryGroups - The QueryGroup list to be fetched + * @param restStatus - The rest status for this response */ - public DeleteQueryGroupResponse(final List queryGroups) { + public DeleteQueryGroupResponse(final List queryGroups, RestStatus restStatus) { this.queryGroups = queryGroups; + this.restStatus = restStatus; } /** @@ -50,11 +45,13 @@ public DeleteQueryGroupResponse(final List queryGroups) { */ public DeleteQueryGroupResponse(StreamInput in) throws IOException { this.queryGroups = in.readList(QueryGroup::new); + this.restStatus = RestStatus.readFrom(in); } @Override public void writeTo(StreamOutput out) throws IOException { out.writeList(queryGroups); + RestStatus.writeTo(out, restStatus); } @Override diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupAction.java similarity index 93% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupAction.java index 8da51a4f13be7..1c507ded8337a 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupAction.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionType; @@ -26,7 +26,7 @@ public class GetQueryGroupAction extends ActionType { /** * Name for GetQueryGroupAction */ - public static final String NAME = "cluster:admin/opensearch/query_group/_get"; + public static final String NAME = "cluster:admin/opensearch/query_group/wlm/_get"; /** * Default constructor diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupRequest.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupRequest.java similarity index 98% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupRequest.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupRequest.java index f49cd3b3a9922..62df9c9ac2fbb 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupRequest.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupRequest.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionRequest; import org.opensearch.action.ActionRequestValidationException; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupResponse.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupResponse.java similarity index 91% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupResponse.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupResponse.java index 452da52d9861f..e68a1a7f58184 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/GetQueryGroupResponse.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/GetQueryGroupResponse.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.core.action.ActionResponse; @@ -29,19 +29,14 @@ public class GetQueryGroupResponse extends ActionResponse implements ToXContent, private final List queryGroups; private RestStatus restStatus; - /** - * Constructor for GetQueryGroupResponse - */ - public GetQueryGroupResponse() { - this.queryGroups = null; - } - /** * Constructor for GetQueryGroupResponse * @param queryGroups - The QueryGroup list to be fetched + * @param restStatus - The rest status of the request */ - public GetQueryGroupResponse(final List queryGroups) { + public GetQueryGroupResponse(final List queryGroups, RestStatus restStatus) { this.queryGroups = queryGroups; + this.restStatus = restStatus; } /** @@ -50,11 +45,13 @@ public GetQueryGroupResponse(final List queryGroups) { */ public GetQueryGroupResponse(StreamInput in) throws IOException { this.queryGroups = in.readList(QueryGroup::new); + restStatus = RestStatus.readFrom(in); } @Override public void writeTo(StreamOutput out) throws IOException { out.writeList(queryGroups); + RestStatus.writeTo(out, restStatus); } @Override diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportCreateQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportCreateQueryGroupAction.java similarity index 96% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportCreateQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportCreateQueryGroupAction.java index a146dcbaa671e..1454ad6a0865c 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportCreateQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportCreateQueryGroupAction.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.support.ActionFilters; import org.opensearch.action.support.HandledTransportAction; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.inject.Inject; import org.opensearch.core.action.ActionListener; -import org.opensearch.plugin.qg.service.Persistable; +import org.opensearch.plugin.wlm.service.Persistable; import org.opensearch.tasks.Task; import org.opensearch.threadpool.ThreadPool; import org.opensearch.transport.TransportService; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportDeleteQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportDeleteQueryGroupAction.java similarity index 95% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportDeleteQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportDeleteQueryGroupAction.java index c0237fd832c98..41bb84a7aea7f 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportDeleteQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportDeleteQueryGroupAction.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.support.ActionFilters; import org.opensearch.action.support.HandledTransportAction; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.inject.Inject; import org.opensearch.core.action.ActionListener; -import org.opensearch.plugin.qg.service.Persistable; +import org.opensearch.plugin.wlm.service.Persistable; import org.opensearch.tasks.Task; import org.opensearch.threadpool.ThreadPool; import org.opensearch.transport.TransportService; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportGetQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportGetQueryGroupAction.java similarity index 95% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportGetQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportGetQueryGroupAction.java index 11725891b5980..8c353faddc122 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportGetQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportGetQueryGroupAction.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.support.ActionFilters; import org.opensearch.action.support.HandledTransportAction; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.inject.Inject; import org.opensearch.core.action.ActionListener; -import org.opensearch.plugin.qg.service.Persistable; +import org.opensearch.plugin.wlm.service.Persistable; import org.opensearch.tasks.Task; import org.opensearch.threadpool.ThreadPool; import org.opensearch.transport.TransportService; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportUpdateQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportUpdateQueryGroupAction.java similarity index 95% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportUpdateQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportUpdateQueryGroupAction.java index 5cc0bd01ac418..0e560718ced62 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/TransportUpdateQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/TransportUpdateQueryGroupAction.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.support.ActionFilters; import org.opensearch.action.support.HandledTransportAction; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.inject.Inject; import org.opensearch.core.action.ActionListener; -import org.opensearch.plugin.qg.service.Persistable; +import org.opensearch.plugin.wlm.service.Persistable; import org.opensearch.tasks.Task; import org.opensearch.threadpool.ThreadPool; import org.opensearch.transport.TransportService; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupAction.java similarity index 92% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupAction.java index f68e9b52ea160..b9f00e1ba70a8 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupAction.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionType; @@ -25,7 +25,7 @@ public class UpdateQueryGroupAction extends ActionType /** * Name for UpdateQueryGroupAction */ - public static final String NAME = "cluster:admin/opensearch/query_group/_update"; + public static final String NAME = "cluster:admin/opensearch/query_group/wlm/_update"; /** * Default constructor diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupRequest.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupRequest.java similarity index 88% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupRequest.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupRequest.java index e447f2054b4d5..c29cdc524e899 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupRequest.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupRequest.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionRequest; import org.opensearch.action.ActionRequestValidationException; @@ -25,8 +25,9 @@ import java.util.Objects; import static org.opensearch.cluster.metadata.QueryGroup.ALLOWED_RESOURCES; -import static org.opensearch.plugin.qg.CreateQueryGroupRequest.validateName; -import static org.opensearch.plugin.qg.CreateQueryGroupRequest.validateUpdatedAtInMillis; +import static org.opensearch.plugin.wlm.CreateQueryGroupRequest.validateName; +import static org.opensearch.plugin.wlm.CreateQueryGroupRequest.validateMode; +import static org.opensearch.plugin.wlm.CreateQueryGroupRequest.validateUpdatedAtInMillis; /** * A request for update QueryGroup @@ -46,14 +47,14 @@ public UpdateQueryGroupRequest() {} /** * Constructor for UpdateQueryGroupRequest - * @param resourceLimitGroup - A {@link QueryGroup} object + * @param queryGroup - A {@link QueryGroup} object */ - public UpdateQueryGroupRequest(QueryGroup resourceLimitGroup) { - this.name = resourceLimitGroup.getName(); - this.mode = resourceLimitGroup.getMode(); - this.resourceLimits = resourceLimitGroup.getResourceLimits(); - this.updatedAtInMillis = resourceLimitGroup.getUpdatedAtInMillis(); - verifyUpdateQueryGroupRequest(name, resourceLimits, updatedAtInMillis); + public UpdateQueryGroupRequest(QueryGroup queryGroup) { + this.name = queryGroup.getName(); + this.mode = queryGroup.getMode(); + this.resourceLimits = queryGroup.getResourceLimits(); + this.updatedAtInMillis = queryGroup.getUpdatedAtInMillis(); + verifyUpdateQueryGroupRequest(name, mode, resourceLimits, updatedAtInMillis); } /** @@ -68,7 +69,7 @@ public UpdateQueryGroupRequest(String name, QueryGroupMode mode, Map resourceLimits, long updatedAtInMillis) { + private void verifyUpdateQueryGroupRequest( + String name, + QueryGroupMode mode, + Map resourceLimits, + long updatedAtInMillis + ) { Objects.requireNonNull(name, "QueryGroup.name can't be null"); Objects.requireNonNull(resourceLimits, "QueryGroup.resourceLimits can't be null"); Objects.requireNonNull(updatedAtInMillis, "QueryGroup.updatedAtInMillis can't be null"); validateName(name); + validateMode(mode); validateResourceLimits(resourceLimits); validateUpdatedAtInMillis(updatedAtInMillis); } diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupResponse.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupResponse.java similarity index 90% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupResponse.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupResponse.java index 07387b9756f80..761a5cc187147 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/UpdateQueryGroupResponse.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/UpdateQueryGroupResponse.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.core.action.ActionResponse; @@ -28,19 +28,13 @@ public class UpdateQueryGroupResponse extends ActionResponse implements ToXConte private final QueryGroup queryGroup; private RestStatus restStatus; - /** - * Constructor for UpdateQueryGroupResponse - */ - public UpdateQueryGroupResponse() { - this.queryGroup = null; - } - /** * Constructor for UpdateQueryGroupResponse * @param queryGroup - The QueryGroup to be updated */ - public UpdateQueryGroupResponse(final QueryGroup queryGroup) { + public UpdateQueryGroupResponse(final QueryGroup queryGroup, RestStatus restStatus) { this.queryGroup = queryGroup; + this.restStatus = restStatus; } /** @@ -49,11 +43,13 @@ public UpdateQueryGroupResponse(final QueryGroup queryGroup) { */ public UpdateQueryGroupResponse(StreamInput in) throws IOException { queryGroup = new QueryGroup(in); + restStatus = RestStatus.readFrom(in); } @Override public void writeTo(StreamOutput out) throws IOException { queryGroup.writeTo(out); + RestStatus.writeTo(out, restStatus); } @Override diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/QueryGroupPlugin.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPlugin.java similarity index 81% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/QueryGroupPlugin.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPlugin.java index 78295b26da93a..e08027a741ac5 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/QueryGroupPlugin.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPlugin.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.action.ActionRequest; import org.opensearch.cluster.metadata.IndexNameExpressionResolver; @@ -17,10 +17,10 @@ import org.opensearch.common.settings.Settings; import org.opensearch.common.settings.SettingsFilter; import org.opensearch.core.action.ActionResponse; -import org.opensearch.plugin.qg.rest.RestCreateQueryGroupAction; -import org.opensearch.plugin.qg.rest.RestDeleteQueryGroupAction; -import org.opensearch.plugin.qg.rest.RestGetQueryGroupAction; -import org.opensearch.plugin.qg.rest.RestUpdateQueryGroupAction; +import org.opensearch.plugin.wlm.rest.RestCreateQueryGroupAction; +import org.opensearch.plugin.wlm.rest.RestDeleteQueryGroupAction; +import org.opensearch.plugin.wlm.rest.RestGetQueryGroupAction; +import org.opensearch.plugin.wlm.rest.RestUpdateQueryGroupAction; import org.opensearch.plugins.ActionPlugin; import org.opensearch.plugins.Plugin; import org.opensearch.rest.RestController; @@ -31,14 +31,14 @@ import java.util.function.Supplier; /** - * Plugin class for QueryGroup + * Plugin class for WorkloadManagement */ -public class QueryGroupPlugin extends Plugin implements ActionPlugin { +public class WorkloadManagementPlugin extends Plugin implements ActionPlugin { /** * Default constructor */ - public QueryGroupPlugin() {} + public WorkloadManagementPlugin() {} @Override public List> getActions() { @@ -70,6 +70,6 @@ public List getRestHandlers( @Override public Collection createGuiceModules() { - return List.of(new QueryGroupPluginModule()); + return List.of(new WorkloadManagementPluginModule()); } } diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/QueryGroupPluginModule.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPluginModule.java similarity index 59% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/QueryGroupPluginModule.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPluginModule.java index 379ca9372fe60..58208af293f14 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/QueryGroupPluginModule.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPluginModule.java @@ -6,23 +6,23 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.inject.AbstractModule; import org.opensearch.common.inject.TypeLiteral; -import org.opensearch.plugin.qg.service.Persistable; -import org.opensearch.plugin.qg.service.QueryGroupPersistenceService; +import org.opensearch.plugin.wlm.service.Persistable; +import org.opensearch.plugin.wlm.service.QueryGroupPersistenceService; /** - * Guice Module to manage QueryGroup related objects + * Guice Module to manage WorkloadManagement related objects */ -public class QueryGroupPluginModule extends AbstractModule { +public class WorkloadManagementPluginModule extends AbstractModule { /** - * Constructor for QueryGroupPluginModule + * Constructor for WorkloadManagementPluginModule */ - public QueryGroupPluginModule() {} + public WorkloadManagementPluginModule() {} @Override protected void configure() { diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/package-info.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/package-info.java similarity index 87% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/package-info.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/package-info.java index 11b69d6964ffc..73027f70bb294 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/package-info.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/package-info.java @@ -9,4 +9,4 @@ /** * Base Package of CRUD API of QueryGroup */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestCreateQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestCreateQueryGroupAction.java similarity index 93% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestCreateQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestCreateQueryGroupAction.java index 5256eded7861e..48de27d4fc02a 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestCreateQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestCreateQueryGroupAction.java @@ -6,15 +6,15 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.rest; +package org.opensearch.plugin.wlm.rest; import org.opensearch.client.node.NodeClient; import org.opensearch.core.rest.RestStatus; import org.opensearch.core.xcontent.ToXContent; import org.opensearch.core.xcontent.XContentParser; -import org.opensearch.plugin.qg.CreateQueryGroupAction; -import org.opensearch.plugin.qg.CreateQueryGroupRequest; -import org.opensearch.plugin.qg.CreateQueryGroupResponse; +import org.opensearch.plugin.wlm.CreateQueryGroupAction; +import org.opensearch.plugin.wlm.CreateQueryGroupRequest; +import org.opensearch.plugin.wlm.CreateQueryGroupResponse; import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BytesRestResponse; import org.opensearch.rest.RestChannel; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestDeleteQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestDeleteQueryGroupAction.java similarity index 91% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestDeleteQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestDeleteQueryGroupAction.java index a5a775e120714..e577defdfea13 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestDeleteQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestDeleteQueryGroupAction.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.rest; +package org.opensearch.plugin.wlm.rest; import org.opensearch.client.node.NodeClient; import org.opensearch.core.rest.RestStatus; import org.opensearch.core.xcontent.ToXContent; -import org.opensearch.plugin.qg.DeleteQueryGroupAction; -import org.opensearch.plugin.qg.DeleteQueryGroupRequest; -import org.opensearch.plugin.qg.DeleteQueryGroupResponse; +import org.opensearch.plugin.wlm.DeleteQueryGroupAction; +import org.opensearch.plugin.wlm.DeleteQueryGroupRequest; +import org.opensearch.plugin.wlm.DeleteQueryGroupResponse; import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BytesRestResponse; import org.opensearch.rest.RestChannel; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestGetQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestGetQueryGroupAction.java similarity index 91% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestGetQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestGetQueryGroupAction.java index 9a216c07605c3..1e1b3f4eff72e 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestGetQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestGetQueryGroupAction.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.rest; +package org.opensearch.plugin.wlm.rest; import org.opensearch.client.node.NodeClient; import org.opensearch.core.rest.RestStatus; import org.opensearch.core.xcontent.ToXContent; -import org.opensearch.plugin.qg.GetQueryGroupAction; -import org.opensearch.plugin.qg.GetQueryGroupRequest; -import org.opensearch.plugin.qg.GetQueryGroupResponse; +import org.opensearch.plugin.wlm.GetQueryGroupAction; +import org.opensearch.plugin.wlm.GetQueryGroupRequest; +import org.opensearch.plugin.wlm.GetQueryGroupResponse; import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BytesRestResponse; import org.opensearch.rest.RestChannel; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestUpdateQueryGroupAction.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestUpdateQueryGroupAction.java similarity index 93% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestUpdateQueryGroupAction.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestUpdateQueryGroupAction.java index 7cec01987e875..a369f9fe9edea 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/RestUpdateQueryGroupAction.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/RestUpdateQueryGroupAction.java @@ -6,15 +6,15 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.rest; +package org.opensearch.plugin.wlm.rest; import org.opensearch.client.node.NodeClient; import org.opensearch.core.rest.RestStatus; import org.opensearch.core.xcontent.ToXContent; import org.opensearch.core.xcontent.XContentParser; -import org.opensearch.plugin.qg.UpdateQueryGroupAction; -import org.opensearch.plugin.qg.UpdateQueryGroupRequest; -import org.opensearch.plugin.qg.UpdateQueryGroupResponse; +import org.opensearch.plugin.wlm.UpdateQueryGroupAction; +import org.opensearch.plugin.wlm.UpdateQueryGroupRequest; +import org.opensearch.plugin.wlm.UpdateQueryGroupResponse; import org.opensearch.rest.BaseRestHandler; import org.opensearch.rest.BytesRestResponse; import org.opensearch.rest.RestChannel; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/package-info.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/package-info.java similarity index 87% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/package-info.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/package-info.java index 630b03b1d82f1..6d1853f04ce58 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/rest/package-info.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/rest/package-info.java @@ -9,4 +9,4 @@ /** * Package for the rest classes for QueryGroup CRUD operations */ -package org.opensearch.plugin.qg.rest; +package org.opensearch.plugin.wlm.rest; diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/Persistable.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/Persistable.java similarity index 78% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/Persistable.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/Persistable.java index b973190f5122c..dc2cb5de2f9cd 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/Persistable.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/Persistable.java @@ -6,14 +6,14 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.service; +package org.opensearch.plugin.wlm.service; import org.opensearch.core.action.ActionListener; -import org.opensearch.plugin.qg.CreateQueryGroupResponse; -import org.opensearch.plugin.qg.DeleteQueryGroupResponse; -import org.opensearch.plugin.qg.GetQueryGroupResponse; -import org.opensearch.plugin.qg.UpdateQueryGroupRequest; -import org.opensearch.plugin.qg.UpdateQueryGroupResponse; +import org.opensearch.plugin.wlm.CreateQueryGroupResponse; +import org.opensearch.plugin.wlm.DeleteQueryGroupResponse; +import org.opensearch.plugin.wlm.GetQueryGroupResponse; +import org.opensearch.plugin.wlm.UpdateQueryGroupRequest; +import org.opensearch.plugin.wlm.UpdateQueryGroupResponse; /** * This interface defines the key APIs for implementing QueruGroup persistence diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/QueryGroupPersistenceService.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/QueryGroupPersistenceService.java similarity index 94% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/QueryGroupPersistenceService.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/QueryGroupPersistenceService.java index 776721cc4fe77..f88aad0a8f8f5 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/QueryGroupPersistenceService.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/QueryGroupPersistenceService.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.service; +package org.opensearch.plugin.wlm.service; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -23,11 +23,11 @@ import org.opensearch.common.settings.Settings; import org.opensearch.core.action.ActionListener; import org.opensearch.core.rest.RestStatus; -import org.opensearch.plugin.qg.CreateQueryGroupResponse; -import org.opensearch.plugin.qg.DeleteQueryGroupResponse; -import org.opensearch.plugin.qg.GetQueryGroupResponse; -import org.opensearch.plugin.qg.UpdateQueryGroupRequest; -import org.opensearch.plugin.qg.UpdateQueryGroupResponse; +import org.opensearch.plugin.wlm.CreateQueryGroupResponse; +import org.opensearch.plugin.wlm.DeleteQueryGroupResponse; +import org.opensearch.plugin.wlm.GetQueryGroupResponse; +import org.opensearch.plugin.wlm.UpdateQueryGroupRequest; +import org.opensearch.plugin.wlm.UpdateQueryGroupResponse; import java.util.ArrayList; import java.util.HashMap; @@ -110,13 +110,10 @@ public void get(String name, ActionListener listener) { if (resultGroups.isEmpty() && name != null && !name.isEmpty()) { logger.warn("No QueryGroup exists with the provided name: {}", name); Exception e = new RuntimeException("No QueryGroup exists with the provided name: " + name); - GetQueryGroupResponse response = new GetQueryGroupResponse(); - response.setRestStatus(RestStatus.NOT_FOUND); listener.onFailure(e); return; } - GetQueryGroupResponse response = new GetQueryGroupResponse(resultGroups); - response.setRestStatus(RestStatus.OK); + GetQueryGroupResponse response = new GetQueryGroupResponse(resultGroups, RestStatus.OK); listener.onResponse(response); } @@ -146,8 +143,6 @@ public void onFailure(String source, Exception e) { restoreInflightValues(queryGroup.getResourceLimits()); inflightCreateQueryGroupRequestCount.decrementAndGet(); logger.warn("failed to save QueryGroup object due to error: {}, for source: {}", e.getMessage(), source); - CreateQueryGroupResponse response = new CreateQueryGroupResponse(); - response.setRestStatus(RestStatus.FAILED_DEPENDENCY); listener.onFailure(e); } @@ -155,8 +150,7 @@ public void onFailure(String source, Exception e) { public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) { restoreInflightValues(queryGroup.getResourceLimits()); inflightCreateQueryGroupRequestCount.decrementAndGet(); - CreateQueryGroupResponse response = new CreateQueryGroupResponse(queryGroup); - response.setRestStatus(RestStatus.OK); + CreateQueryGroupResponse response = new CreateQueryGroupResponse(queryGroup, RestStatus.OK); listener.onResponse(response); } }); @@ -263,8 +257,6 @@ public ThrottlingKey getClusterManagerThrottlingKey() { public void onFailure(String source, Exception e) { restoreInflightValues(toUpdateGroup.getResourceLimits()); logger.warn("Failed to update QueryGroup due to error: {}, for source: {}", e.getMessage(), source); - UpdateQueryGroupResponse response = new UpdateQueryGroupResponse(); - response.setRestStatus(RestStatus.FAILED_DEPENDENCY); listener.onFailure(e); } @@ -279,8 +271,7 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS .findFirst(); assert findUpdatedGroup.isPresent(); QueryGroup updatedGroup = findUpdatedGroup.get(); - UpdateQueryGroupResponse response = new UpdateQueryGroupResponse(updatedGroup); - response.setRestStatus(RestStatus.OK); + UpdateQueryGroupResponse response = new UpdateQueryGroupResponse(updatedGroup, RestStatus.OK); listener.onResponse(response); } }); @@ -362,8 +353,6 @@ public ThrottlingKey getClusterManagerThrottlingKey() { @Override public void onFailure(String source, Exception e) { logger.warn("Failed to delete QueryGroup due to error: {}, for source: {}", e.getMessage(), source); - DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(); - response.setRestStatus(RestStatus.NOT_FOUND); listener.onFailure(e); } @@ -377,8 +366,7 @@ public void clusterStateProcessed(String source, ClusterState oldState, ClusterS deletedGroups.add(group); } } - DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(deletedGroups); - response.setRestStatus(RestStatus.OK); + DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(deletedGroups, RestStatus.OK); listener.onResponse(response); } }); diff --git a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/package-info.java b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/package-info.java similarity index 86% rename from plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/package-info.java rename to plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/package-info.java index 3bb6e35d7b78e..ecfc94568888a 100644 --- a/plugins/query-group/src/main/java/org/opensearch/plugin/qg/service/package-info.java +++ b/plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/service/package-info.java @@ -9,4 +9,4 @@ /** * Package for the service classes for QueryGroup CRUD operations */ -package org.opensearch.plugin.qg.service; +package org.opensearch.plugin.wlm.service; diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/CreateQueryGroupRequestTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/CreateQueryGroupRequestTests.java similarity index 88% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/CreateQueryGroupRequestTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/CreateQueryGroupRequestTests.java index d45a49b0bc4bc..09fce8d911d96 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/CreateQueryGroupRequestTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/CreateQueryGroupRequestTests.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup.QueryGroupMode; import org.opensearch.common.io.stream.BytesStreamOutput; @@ -17,12 +17,12 @@ import java.util.HashMap; import java.util.Map; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.MONITOR; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.NAME_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.TIMESTAMP_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils._ID_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.compareResourceLimits; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupOne; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.MONITOR; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.NAME_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.TIMESTAMP_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils._ID_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.compareResourceLimits; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupOne; public class CreateQueryGroupRequestTests extends OpenSearchTestCase { diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/CreateQueryGroupResponseTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/CreateQueryGroupResponseTests.java similarity index 89% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/CreateQueryGroupResponseTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/CreateQueryGroupResponseTests.java index 905e5b8648ed5..c5d570427faa5 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/CreateQueryGroupResponseTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/CreateQueryGroupResponseTests.java @@ -6,11 +6,12 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.core.rest.RestStatus; import org.opensearch.test.OpenSearchTestCase; import java.io.IOException; @@ -19,7 +20,7 @@ public class CreateQueryGroupResponseTests extends OpenSearchTestCase { public void testSerialization() throws IOException { - CreateQueryGroupResponse response = new CreateQueryGroupResponse(QueryGroupTestUtils.queryGroupOne); + CreateQueryGroupResponse response = new CreateQueryGroupResponse(QueryGroupTestUtils.queryGroupOne, RestStatus.OK); BytesStreamOutput out = new BytesStreamOutput(); response.writeTo(out); StreamInput streamInput = out.bytes().streamInput(); diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/DeleteQueryGroupRequestTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/DeleteQueryGroupRequestTests.java similarity index 97% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/DeleteQueryGroupRequestTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/DeleteQueryGroupRequestTests.java index de0ced93a2eaf..ae78f2bae9d2f 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/DeleteQueryGroupRequestTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/DeleteQueryGroupRequestTests.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/DeleteQueryGroupResponseTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/DeleteQueryGroupResponseTests.java similarity index 85% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/DeleteQueryGroupResponseTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/DeleteQueryGroupResponseTests.java index 682dca443fc89..af3cb7ea356ea 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/DeleteQueryGroupResponseTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/DeleteQueryGroupResponseTests.java @@ -6,26 +6,27 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.core.rest.RestStatus; import org.opensearch.test.OpenSearchTestCase; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.compareQueryGroups; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupList; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupOne; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.compareQueryGroups; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupList; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupOne; public class DeleteQueryGroupResponseTests extends OpenSearchTestCase { public void testSerializationSingleQueryGroup() throws IOException { List list = List.of(queryGroupOne); - DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(list); + DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(list, RestStatus.OK); assertEquals(response.getQueryGroups(), list); BytesStreamOutput out = new BytesStreamOutput(); @@ -38,7 +39,7 @@ public void testSerializationSingleQueryGroup() throws IOException { } public void testSerializationMultipleQueryGroup() throws IOException { - DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(queryGroupList()); + DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(queryGroupList(), RestStatus.OK); assertEquals(response.getQueryGroups(), queryGroupList()); BytesStreamOutput out = new BytesStreamOutput(); @@ -53,7 +54,7 @@ public void testSerializationMultipleQueryGroup() throws IOException { public void testSerializationNull() throws IOException { List list = new ArrayList<>(); - DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(list); + DeleteQueryGroupResponse response = new DeleteQueryGroupResponse(list, RestStatus.OK); assertEquals(response.getQueryGroups(), list); BytesStreamOutput out = new BytesStreamOutput(); diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/GetQueryGroupRequestTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/GetQueryGroupRequestTests.java similarity index 97% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/GetQueryGroupRequestTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/GetQueryGroupRequestTests.java index 555c56abfa254..a3f3083cce1e9 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/GetQueryGroupRequestTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/GetQueryGroupRequestTests.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/GetQueryGroupResponseTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/GetQueryGroupResponseTests.java similarity index 93% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/GetQueryGroupResponseTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/GetQueryGroupResponseTests.java index ca7035e3cdbb4..f9332df71a9b7 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/GetQueryGroupResponseTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/GetQueryGroupResponseTests.java @@ -6,11 +6,12 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.core.rest.RestStatus; import org.opensearch.test.OpenSearchTestCase; import java.io.IOException; @@ -22,7 +23,7 @@ public class GetQueryGroupResponseTests extends OpenSearchTestCase { public void testSerializationSingleQueryGroup() throws IOException { List list = new ArrayList<>(); list.add(QueryGroupTestUtils.queryGroupOne); - GetQueryGroupResponse response = new GetQueryGroupResponse(list); + GetQueryGroupResponse response = new GetQueryGroupResponse(list, RestStatus.OK); assertEquals(response.getQueryGroups(), list); BytesStreamOutput out = new BytesStreamOutput(); @@ -35,7 +36,7 @@ public void testSerializationSingleQueryGroup() throws IOException { } public void testSerializationMultipleQueryGroup() throws IOException { - GetQueryGroupResponse response = new GetQueryGroupResponse(QueryGroupTestUtils.queryGroupList()); + GetQueryGroupResponse response = new GetQueryGroupResponse(QueryGroupTestUtils.queryGroupList(), RestStatus.OK); assertEquals(response.getQueryGroups(), QueryGroupTestUtils.queryGroupList()); BytesStreamOutput out = new BytesStreamOutput(); @@ -50,7 +51,7 @@ public void testSerializationMultipleQueryGroup() throws IOException { public void testSerializationNull() throws IOException { List list = new ArrayList<>(); - GetQueryGroupResponse response = new GetQueryGroupResponse(list); + GetQueryGroupResponse response = new GetQueryGroupResponse(list, RestStatus.OK); assertEquals(response.getQueryGroups(), list); BytesStreamOutput out = new BytesStreamOutput(); diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/QueryGroupTestUtils.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/QueryGroupTestUtils.java similarity index 98% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/QueryGroupTestUtils.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/QueryGroupTestUtils.java index dd4ab97f34a0f..f40fe929d9fd6 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/QueryGroupTestUtils.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/QueryGroupTestUtils.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.ClusterName; import org.opensearch.cluster.ClusterState; @@ -15,7 +15,7 @@ import org.opensearch.cluster.service.ClusterService; import org.opensearch.common.settings.ClusterSettings; import org.opensearch.common.settings.Settings; -import org.opensearch.plugin.qg.service.QueryGroupPersistenceService; +import org.opensearch.plugin.wlm.service.QueryGroupPersistenceService; import org.opensearch.threadpool.ThreadPool; import java.util.HashSet; diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/UpdateQueryGroupRequestTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/UpdateQueryGroupRequestTests.java similarity index 92% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/UpdateQueryGroupRequestTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/UpdateQueryGroupRequestTests.java index c505694be4011..888a7c632d9cb 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/UpdateQueryGroupRequestTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/UpdateQueryGroupRequestTests.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.io.stream.BytesStreamOutput; @@ -17,11 +17,11 @@ import java.util.HashMap; import java.util.Map; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.MONITOR; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.NAME_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.TIMESTAMP_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.compareResourceLimits; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupOne; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.MONITOR; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.NAME_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.TIMESTAMP_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.compareResourceLimits; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupOne; public class UpdateQueryGroupRequestTests extends OpenSearchTestCase { diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/UpdateQueryGroupResponseTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/UpdateQueryGroupResponseTests.java similarity index 89% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/UpdateQueryGroupResponseTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/UpdateQueryGroupResponseTests.java index dfe3a590951b3..6e744427629fd 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/UpdateQueryGroupResponseTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/UpdateQueryGroupResponseTests.java @@ -6,11 +6,12 @@ * compatible open source license. */ -package org.opensearch.plugin.qg; +package org.opensearch.plugin.wlm; import org.opensearch.cluster.metadata.QueryGroup; import org.opensearch.common.io.stream.BytesStreamOutput; import org.opensearch.core.common.io.stream.StreamInput; +import org.opensearch.core.rest.RestStatus; import org.opensearch.test.OpenSearchTestCase; import java.io.IOException; @@ -19,7 +20,7 @@ public class UpdateQueryGroupResponseTests extends OpenSearchTestCase { public void testSerialization() throws IOException { - UpdateQueryGroupResponse response = new UpdateQueryGroupResponse(QueryGroupTestUtils.queryGroupOne); + UpdateQueryGroupResponse response = new UpdateQueryGroupResponse(QueryGroupTestUtils.queryGroupOne, RestStatus.OK); BytesStreamOutput out = new BytesStreamOutput(); response.writeTo(out); StreamInput streamInput = out.bytes().streamInput(); diff --git a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/service/QueryGroupPersistenceServiceTests.java b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/service/QueryGroupPersistenceServiceTests.java similarity index 89% rename from plugins/query-group/src/test/java/org/opensearch/plugin/qg/service/QueryGroupPersistenceServiceTests.java rename to plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/service/QueryGroupPersistenceServiceTests.java index ffa22bb1b4542..1e6ef3f114d3f 100644 --- a/plugins/query-group/src/test/java/org/opensearch/plugin/qg/service/QueryGroupPersistenceServiceTests.java +++ b/plugins/workload-management/src/test/java/org/opensearch/plugin/wlm/service/QueryGroupPersistenceServiceTests.java @@ -6,7 +6,7 @@ * compatible open source license. */ -package org.opensearch.plugin.qg.service; +package org.opensearch.plugin.wlm.service; import org.opensearch.cluster.ClusterName; import org.opensearch.cluster.ClusterState; @@ -16,7 +16,7 @@ import org.opensearch.cluster.service.ClusterService; import org.opensearch.common.settings.ClusterSettings; import org.opensearch.common.settings.Settings; -import org.opensearch.plugin.qg.UpdateQueryGroupRequest; +import org.opensearch.plugin.wlm.UpdateQueryGroupRequest; import org.opensearch.test.OpenSearchTestCase; import org.opensearch.threadpool.ThreadPool; @@ -29,21 +29,21 @@ import java.util.stream.Collectors; import static org.opensearch.cluster.metadata.QueryGroup.builder; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.MONITOR; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.NAME_NONE_EXISTED; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.NAME_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.NAME_TWO; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.SANDBOX_MAX_SETTING_NAME; -import static org.opensearch.plugin.qg.QueryGroupTestUtils._ID_ONE; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.assertInflightValuesAreZero; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.clusterState; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.compareQueryGroups; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.prepareSandboxPersistenceService; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupList; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupMap; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupOne; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupPersistenceService; -import static org.opensearch.plugin.qg.QueryGroupTestUtils.queryGroupTwo; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.MONITOR; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.NAME_NONE_EXISTED; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.NAME_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.NAME_TWO; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.SANDBOX_MAX_SETTING_NAME; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils._ID_ONE; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.assertInflightValuesAreZero; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.clusterState; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.compareQueryGroups; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.prepareSandboxPersistenceService; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupList; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupMap; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupOne; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupPersistenceService; +import static org.opensearch.plugin.wlm.QueryGroupTestUtils.queryGroupTwo; import static org.mockito.Mockito.mock; public class QueryGroupPersistenceServiceTests extends OpenSearchTestCase { diff --git a/server/src/main/java/org/opensearch/cluster/metadata/QueryGroup.java b/server/src/main/java/org/opensearch/cluster/metadata/QueryGroup.java index 509666a3e6c05..87a6fc897e9c0 100644 --- a/server/src/main/java/org/opensearch/cluster/metadata/QueryGroup.java +++ b/server/src/main/java/org/opensearch/cluster/metadata/QueryGroup.java @@ -26,7 +26,7 @@ import java.util.Objects; /** - * Class to define the ResourceLimitGroup schema + * Class to define the QueryGroup schema * { * "fafjafjkaf9ag8a9ga9g7ag0aagaga" : { * "jvm": 0.4, @@ -47,25 +47,25 @@ public class QueryGroup extends AbstractDiffable implements ToXConte private final long updatedAtInMillis; private final Map resourceLimits; - // list of resources that are allowed to be present in the ResourceLimitGroup schema + // list of resources that are allowed to be present in the QueryGroup schema public static final List ALLOWED_RESOURCES = List.of("jvm"); public QueryGroup(String name, String _id, QueryGroupMode mode, Map resourceLimits, long updatedAt) { - Objects.requireNonNull(name, "ResourceLimitGroup.name can't be null"); - Objects.requireNonNull(resourceLimits, "ResourceLimitGroup.resourceLimits can't be null"); - Objects.requireNonNull(mode, "ResourceLimitGroup.mode can't be null"); - Objects.requireNonNull(_id, "ResourceLimitGroup._id can't be null"); + Objects.requireNonNull(name, "QueryGroup.name can't be null"); + Objects.requireNonNull(resourceLimits, "QueryGroup.resourceLimits can't be null"); + Objects.requireNonNull(mode, "QueryGroup.mode can't be null"); + Objects.requireNonNull(_id, "QueryGroup._id can't be null"); if (name.length() > MAX_CHARS_ALLOWED_IN_NAME) { - throw new IllegalArgumentException("ResourceLimitGroup.name shouldn't be more than 50 chars long"); + throw new IllegalArgumentException("QueryGroup.name shouldn't be more than 50 chars long"); } if (resourceLimits.isEmpty()) { - throw new IllegalArgumentException("ResourceLimitGroup.resourceLimits should at least have 1 resource limit"); + throw new IllegalArgumentException("QueryGroup.resourceLimits should at least have 1 resource limit"); } validateResourceLimits(resourceLimits); if (!isValid(updatedAt)) { - throw new IllegalArgumentException("ResourceLimitGroup.updatedAtInMillis is not a valid epoch"); + throw new IllegalArgumentException("QueryGroup.updatedAtInMillis is not a valid epoch"); } this.name = name; @@ -187,7 +187,7 @@ public static QueryGroup fromXContent(final XContentParser parser) throws IOExce } else if (ALLOWED_RESOURCES.contains(fieldName)) { resourceLimits_.put(fieldName, parser.doubleValue()); } else { - throw new IllegalArgumentException("unrecognised [field=" + fieldName + " in ResourceLimitGroup"); + throw new IllegalArgumentException("unrecognised [field=" + fieldName + " in QueryGroup"); } } } @@ -264,7 +264,7 @@ public static QueryGroupMode fromName(String s) { if (mode.getName().equalsIgnoreCase(s)) return mode; } - throw new IllegalArgumentException("Invalid value for ResourceLimitGroupMode: " + s); + throw new IllegalArgumentException("Invalid value for QueryGroupMode: " + s); } } diff --git a/server/src/main/java/org/opensearch/search/query_group/QueryGroupPruner.java b/server/src/main/java/org/opensearch/search/query_group/QueryGroupPruner.java deleted file mode 100644 index c46324adef639..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/QueryGroupPruner.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.search.query_group; - -/** - * This interface is used to identify and completely remove deleted QueryGroups which has been marked as deleted - * previously but had the tasks running at the time of deletion request - */ -public interface QueryGroupPruner { - /** - * remove the deleted QueryGroups from the system once all the tasks in those QueryGroups are completed/cancelled - */ - void pruneQueryGroup(); -} diff --git a/server/src/main/java/org/opensearch/search/query_group/QueryGroupService.java b/server/src/main/java/org/opensearch/search/query_group/QueryGroupService.java deleted file mode 100644 index d274c1561f1a9..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/QueryGroupService.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.search.query_group; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.opensearch.common.inject.Inject; -import org.opensearch.common.lifecycle.AbstractLifecycleComponent; -import org.opensearch.search.query_group.cancellation.QueryGroupRequestCanceller; -import org.opensearch.search.query_group.tracker.QueryGroupResourceUsageTracker; -import org.opensearch.threadpool.Scheduler; -import org.opensearch.threadpool.ThreadPool; - -import java.io.IOException; - -/** - * Main service which will run periodically to track and cancel resource constraint violating tasks in QueryGroup - */ -public class QueryGroupService extends AbstractLifecycleComponent { - private static final Logger logger = LogManager.getLogger(QueryGroupService.class); - - private final QueryGroupResourceUsageTracker requestTracker; - private final QueryGroupRequestCanceller requestCanceller; - private final QueryGroupPruner queryGroupPruner; - private volatile Scheduler.Cancellable scheduledFuture; - private final QueryGroupServiceSettings queryGroupServiceSettings; - private final ThreadPool threadPool; - - /** - * Guice managed constructor - * @param requestTrackerService - * @param requestCanceller - * @param queryGroupPruner - * @param queryGroupServiceSettings - * @param threadPool - */ - @Inject - public QueryGroupService( - QueryGroupResourceUsageTracker requestTrackerService, - QueryGroupRequestCanceller requestCanceller, - QueryGroupPruner queryGroupPruner, - QueryGroupServiceSettings queryGroupServiceSettings, - ThreadPool threadPool - ) { - this.requestTracker = requestTrackerService; - this.requestCanceller = requestCanceller; - this.queryGroupPruner = queryGroupPruner; - this.queryGroupServiceSettings = queryGroupServiceSettings; - this.threadPool = threadPool; - } - - /** - * run at regular interval - */ - private void doRun() { - requestTracker.updateQueryGroupsResourceUsage(); - requestCanceller.cancelViolatingTasks(); - queryGroupPruner.pruneQueryGroup(); - } - - /** - * {@link AbstractLifecycleComponent} lifecycle method - */ - @Override - protected void doStart() { - scheduledFuture = threadPool.scheduleWithFixedDelay(() -> { - try { - doRun(); - } catch (Exception e) { - logger.debug("Exception occurred in Resource Limit Group service", e); - } - }, queryGroupServiceSettings.getRunIntervalMillis(), ThreadPool.Names.GENERIC); - } - - @Override - protected void doStop() { - if (scheduledFuture != null) { - scheduledFuture.cancel(); - } - } - - @Override - protected void doClose() throws IOException {} -} diff --git a/server/src/main/java/org/opensearch/search/query_group/cancellation/QueryGroupRequestCanceller.java b/server/src/main/java/org/opensearch/search/query_group/cancellation/QueryGroupRequestCanceller.java deleted file mode 100644 index e33d771d33673..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/cancellation/QueryGroupRequestCanceller.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.search.query_group.cancellation; - -/** - * This interface is used to identify and cancel the violating tasks in a QueryGroup - */ -public interface QueryGroupRequestCanceller { - /** - * Cancels the tasks from conteded QueryGroups - */ - void cancelViolatingTasks(); -} diff --git a/server/src/main/java/org/opensearch/search/query_group/cancellation/package-info.java b/server/src/main/java/org/opensearch/search/query_group/cancellation/package-info.java deleted file mode 100644 index 0e9fe853df60a..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/cancellation/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * Package for cancellation related abstracts - */ -package org.opensearch.search.query_group.cancellation; diff --git a/server/src/main/java/org/opensearch/search/query_group/module/QueryGroupModule.java b/server/src/main/java/org/opensearch/search/query_group/module/QueryGroupModule.java deleted file mode 100644 index d39ffd7419f97..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/module/QueryGroupModule.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.search.query_group.module; - -import org.opensearch.common.inject.AbstractModule; -import org.opensearch.search.query_group.QueryGroupPruner; -import org.opensearch.search.query_group.cancellation.QueryGroupRequestCanceller; -import org.opensearch.search.query_group.tracker.QueryGroupResourceUsageTracker; -import org.opensearch.search.query_group.tracker.QueryGroupResourceUsageTrackerService; - -/** - * Module class for resource usage limiting related artifacts - */ -public class QueryGroupModule extends AbstractModule { - - /** - * Default constructor - */ - public QueryGroupModule() {} - - @Override - protected void configure() { - bind(QueryGroupResourceUsageTracker.class).to(QueryGroupResourceUsageTrackerService.class).asEagerSingleton(); - bind(QueryGroupRequestCanceller.class).to(QueryGroupResourceUsageTrackerService.class).asEagerSingleton(); - bind(QueryGroupPruner.class).to(QueryGroupResourceUsageTrackerService.class).asEagerSingleton(); - } -} diff --git a/server/src/main/java/org/opensearch/search/query_group/module/package-info.java b/server/src/main/java/org/opensearch/search/query_group/module/package-info.java deleted file mode 100644 index 6f341d6941317..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/module/package-info.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * Guice Module - */ - -package org.opensearch.search.query_group.module; diff --git a/server/src/main/java/org/opensearch/search/query_group/tracker/QueryGroupResourceUsageTracker.java b/server/src/main/java/org/opensearch/search/query_group/tracker/QueryGroupResourceUsageTracker.java deleted file mode 100644 index 957a716c1ef89..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/tracker/QueryGroupResourceUsageTracker.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.search.query_group.tracker; - -/** - * This interface is mainly for tracking the QueryGroup level resource usages - */ -public interface QueryGroupResourceUsageTracker { - /** - * updates the current resource usage of QueryGroups - */ - public void updateQueryGroupsResourceUsage(); -} diff --git a/server/src/main/java/org/opensearch/search/query_group/tracker/QueryGroupResourceUsageTrackerService.java b/server/src/main/java/org/opensearch/search/query_group/tracker/QueryGroupResourceUsageTrackerService.java deleted file mode 100644 index 812a1de686850..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/tracker/QueryGroupResourceUsageTrackerService.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.search.query_group.tracker; - -import org.opensearch.common.inject.Inject; -import org.opensearch.core.tasks.resourcetracker.TaskResourceUsage; -import org.opensearch.search.query_group.QueryGroupPruner; -import org.opensearch.search.query_group.QueryGroupService; -import org.opensearch.search.query_group.cancellation.QueryGroupRequestCanceller; -import org.opensearch.tasks.Task; -import org.opensearch.tasks.TaskCancellation; -import org.opensearch.tasks.TaskManager; -import org.opensearch.tasks.TaskResourceTrackingService; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.function.LongSupplier; -import java.util.stream.Collectors; - -/** - * This class tracks requests per QueryGroups - */ -public class QueryGroupResourceUsageTrackerService - implements - TaskManager.TaskEventListeners, - QueryGroupResourceUsageTracker, - QueryGroupRequestCanceller, - QueryGroupPruner { - - private static final String CPU = "CPU"; - private static final String JVM_ALLOCATIONS = "JVM_Allocations"; - private static final int numberOfAvailableProcessors = Runtime.getRuntime().availableProcessors(); - private static final long totalAvailableJvmMemory = Runtime.getRuntime().totalMemory(); - private final LongSupplier timeNanosSupplier; - /** - * QueryGroup ids which are marked for deletion in between the - * {@link QueryGroupService} runs - */ - private List toDeleteQueryGroups; - private List activeQueryGroups; - private final TaskManager taskManager; - private final TaskResourceTrackingService taskResourceTrackingService; - - /** - * QueryGroupResourceUsageTrackerService constructor - * @param taskManager - * @param taskResourceTrackingService - */ - @Inject - public QueryGroupResourceUsageTrackerService(TaskManager taskManager, TaskResourceTrackingService taskResourceTrackingService) { - this.taskManager = taskManager; - this.taskResourceTrackingService = taskResourceTrackingService; - toDeleteQueryGroups = Collections.synchronizedList(new ArrayList<>()); - this.timeNanosSupplier = System::nanoTime; - } - - @Override - public void updateQueryGroupsResourceUsage() { - - } - - private AbsoluteResourceUsage calculateAbsoluteResourceUsageFor(Task task) { - TaskResourceUsage taskResourceUsage = task.getTotalResourceStats(); - long cpuTimeInNanos = taskResourceUsage.getCpuTimeInNanos(); - long jvmAllocations = taskResourceUsage.getMemoryInBytes(); - long taskElapsedTime = timeNanosSupplier.getAsLong() - task.getStartTimeNanos(); - return new AbsoluteResourceUsage( - (cpuTimeInNanos * 1.0f) / (taskElapsedTime * numberOfAvailableProcessors), - ((jvmAllocations * 1.0f) / totalAvailableJvmMemory) - ); - } - - /** - * Value holder class for resource usage in absolute terms with respect to system/process mem - */ - private static class AbsoluteResourceUsage { - private final double absoluteCpuUsage; - private final double absoluteJvmAllocationsUsage; - - public AbsoluteResourceUsage(double absoluteCpuUsage, double absoluteJvmAllocationsUsage) { - this.absoluteCpuUsage = absoluteCpuUsage; - this.absoluteJvmAllocationsUsage = absoluteJvmAllocationsUsage; - } - - public static AbsoluteResourceUsage merge(AbsoluteResourceUsage a, AbsoluteResourceUsage b) { - return new AbsoluteResourceUsage( - a.absoluteCpuUsage + b.absoluteCpuUsage, - a.absoluteJvmAllocationsUsage + b.absoluteJvmAllocationsUsage - ); - } - - public double getAbsoluteCpuUsageInPercentage() { - return absoluteCpuUsage * 100; - } - - public double getAbsoluteJvmAllocationsUsageInPercent() { - return absoluteJvmAllocationsUsage * 100; - } - } - - /** - * filter out the deleted Resource Limit Groups which still has unfinished tasks - */ - public void pruneQueryGroup() { - toDeleteQueryGroups = toDeleteQueryGroups.stream().filter(this::hasUnfinishedTasks).collect(Collectors.toList()); - } - - private boolean hasUnfinishedTasks(String sandboxId) { - return false; - } - - /** - * method to handle the completed tasks - * @param task represents completed task on the node - */ - @Override - public void onTaskCompleted(Task task) {} - - /** - * This method will select the Resource Limit Groups violating the enforced constraints - * and cancel the tasks from the violating Resource Limit Groups - * Cancellation happens in two scenarios - *
    - *
  1. If the Resource Limit Group is of enforced type and it is breaching its cancellation limit for the threshold
  2. - *
  3. Node is in duress and Resource Limit Groups which are breaching the cancellation thresholds will have cancellations
  4. - *
- */ - @Override - public void cancelViolatingTasks() { - List cancellableTasks = getCancellableTasks(); - for (TaskCancellation taskCancellation : cancellableTasks) { - taskCancellation.cancel(); - } - } - - /** - * - * @return list of cancellable tasks - */ - private List getCancellableTasks() { - // get cancellations from enforced type Resource Limit Groups - List inViolationSandboxes = getBreachingSandboxIds(); - List cancellableTasks = new ArrayList<>(); - for (String sandboxId : inViolationSandboxes) { - cancellableTasks.addAll(getCancellableTasksFrom(sandboxId)); - } - return cancellableTasks; - } - - public void deleteSandbox(String sandboxId) { - if (hasUnfinishedTasks(sandboxId)) { - toDeleteQueryGroups.add(sandboxId); - } - // remove this sandbox from the active sandboxes - } - - private List getBreachingSandboxIds() { - return Collections.emptyList(); - } - - private List getCancellableTasksFrom(String sandboxId) { - return Collections.emptyList(); - } -} diff --git a/server/src/main/java/org/opensearch/search/query_group/tracker/package-info.java b/server/src/main/java/org/opensearch/search/query_group/tracker/package-info.java deleted file mode 100644 index e4e85965da439..0000000000000 --- a/server/src/main/java/org/opensearch/search/query_group/tracker/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * ResourceLimitGroup resource tracking artifacts - */ -package org.opensearch.search.query_group.tracker; diff --git a/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupMetadataTests.java b/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupMetadataTests.java index 3dcaa7ee31b4d..18cdeb114a012 100644 --- a/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupMetadataTests.java +++ b/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupMetadataTests.java @@ -14,7 +14,7 @@ import java.util.Collections; import java.util.Set; -import static org.opensearch.cluster.metadata.QueryGroupTests.createRandomResourceLimitGroup; +import static org.opensearch.cluster.metadata.QueryGroupTests.createRandomQueryGroup; public class QueryGroupMetadataTests extends AbstractNamedWriteableTestCase { @@ -34,10 +34,10 @@ protected Class categoryClass() { @Override protected QueryGroupMetadata createTestInstance() { - return new QueryGroupMetadata(getRandomResourceLimitGroups()); + return new QueryGroupMetadata(getRandomQueryGroups()); } - private Set getRandomResourceLimitGroups() { - return Set.of(createRandomResourceLimitGroup(), createRandomResourceLimitGroup()); + private Set getRandomQueryGroups() { + return Set.of(createRandomQueryGroup(), createRandomQueryGroup()); } } diff --git a/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupTests.java b/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupTests.java index 2e7dc2812e431..1d900b3c02d27 100644 --- a/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupTests.java +++ b/server/src/test/java/org/opensearch/cluster/metadata/QueryGroupTests.java @@ -27,7 +27,7 @@ public class QueryGroupTests extends AbstractSerializingTestCase { QueryGroup.QueryGroupMode.MONITOR ); - static QueryGroup createRandomResourceLimitGroup() { + static QueryGroup createRandomQueryGroup() { String name = randomAlphaOfLength(10); Map resourceLimit = new HashMap<>(); resourceLimit.put("jvm", randomDoubleBetween(0.0, 0.80, false)); @@ -63,7 +63,7 @@ protected Writeable.Reader instanceReader() { */ @Override protected QueryGroup createTestInstance() { - return createRandomResourceLimitGroup(); + return createRandomQueryGroup(); } public void testNullName() { @@ -91,7 +91,7 @@ public void testEmptyResourceLimits() { ); } - public void testIllegalResourceLimitGroupMode() { + public void testIllegalQueryGroupMode() { assertThrows( NullPointerException.class, () -> new QueryGroup("analytics", "_id", null, Map.of("jvm", (Object) 0.4), Instant.now().getMillis()) @@ -124,7 +124,7 @@ public void testInvalidResourceLimitWhenInvalidSystemResourceValueIsGiven() { ); } - public void testValidResourceLimitGroup() { + public void testValidQueryGroup() { QueryGroup queryGroup = new QueryGroup( "analytics", "_id",