Skip to content

[WLM] Rename queryGroup to workloadGroup #17901

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Introduce 512 byte limit to search and ingest pipeline IDs ([#17786](https://github.com/opensearch-project/OpenSearch/pull/17786))
- Avoid skewed segment replication lag metric ([#17831](https://github.com/opensearch-project/OpenSearch/pull/17831))
- Increase the default segment counter step size when replica promoting ([#17568](https://github.com/opensearch-project/OpenSearch/pull/17568))
- [WLM] Rename QueryGroup to WorkloadGroup ([#17901](https://github.com/opensearch-project/OpenSearch/pull/17901))

### Dependencies
- Bump `com.nimbusds:nimbus-jose-jwt` from 9.41.1 to 10.0.2 ([#17607](https://github.com/opensearch-project/OpenSearch/pull/17607), [#17669](https://github.com/opensearch-project/OpenSearch/pull/17669))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,58 +19,58 @@
public class WorkloadManagementRestIT extends OpenSearchRestTestCase {

public void testCreate() throws Exception {
Response response = performOperation("PUT", "_wlm/query_group", getCreateJson("analytics", "enforced", 0.4, 0.2));
Response response = performOperation("PUT", "_wlm/workload_group", getCreateJson("analytics", "enforced", 0.4, 0.2));
assertEquals(response.getStatusLine().getStatusCode(), 200);
performOperation("DELETE", "_wlm/query_group/analytics", null);
performOperation("DELETE", "_wlm/workload_group/analytics", null);
}

public void testMultipleCreate() throws Exception {
Response response = performOperation("PUT", "_wlm/query_group", getCreateJson("analytics2", "enforced", 0.4, 0.2));
Response response = performOperation("PUT", "_wlm/workload_group", getCreateJson("analytics2", "enforced", 0.4, 0.2));
assertEquals(response.getStatusLine().getStatusCode(), 200);

Response response2 = performOperation("PUT", "_wlm/query_group", getCreateJson("users", "soft", 0.2, 0.1));
Response response2 = performOperation("PUT", "_wlm/workload_group", getCreateJson("users", "soft", 0.2, 0.1));
assertEquals(response2.getStatusLine().getStatusCode(), 200);

assertThrows(
ResponseException.class,
() -> performOperation("PUT", "_wlm/query_group", getCreateJson("users2", "soft", 0.41, 0.71))
() -> performOperation("PUT", "_wlm/workload_group", getCreateJson("users2", "soft", 0.41, 0.71))
);
performOperation("DELETE", "_wlm/query_group/analytics2", null);
performOperation("DELETE", "_wlm/query_group/users", null);
performOperation("DELETE", "_wlm/workload_group/analytics2", null);
performOperation("DELETE", "_wlm/workload_group/users", null);
}

public void testGet() throws Exception {
Response response = performOperation("PUT", "_wlm/query_group", getCreateJson("analytics3", "enforced", 0.4, 0.2));
Response response = performOperation("PUT", "_wlm/workload_group", getCreateJson("analytics3", "enforced", 0.4, 0.2));
assertEquals(response.getStatusLine().getStatusCode(), 200);

Response response2 = performOperation("GET", "_wlm/query_group/analytics3", null);
Response response2 = performOperation("GET", "_wlm/workload_group/analytics3", null);
assertEquals(response2.getStatusLine().getStatusCode(), 200);
String responseBody2 = EntityUtils.toString(response2.getEntity());
assertTrue(responseBody2.contains("\"name\":\"analytics3\""));
assertTrue(responseBody2.contains("\"resiliency_mode\":\"enforced\""));
assertTrue(responseBody2.contains("\"cpu\":0.4"));
assertTrue(responseBody2.contains("\"memory\":0.2"));

assertThrows(ResponseException.class, () -> performOperation("GET", "_wlm/query_group/analytics97", null));
performOperation("DELETE", "_wlm/query_group/analytics3", null);
assertThrows(ResponseException.class, () -> performOperation("GET", "_wlm/workload_group/analytics97", null));
performOperation("DELETE", "_wlm/workload_group/analytics3", null);
}

public void testDelete() throws Exception {
Response response = performOperation("PUT", "_wlm/query_group", getCreateJson("analytics4", "enforced", 0.4, 0.2));
Response response = performOperation("PUT", "_wlm/workload_group", getCreateJson("analytics4", "enforced", 0.4, 0.2));
assertEquals(response.getStatusLine().getStatusCode(), 200);

Response response2 = performOperation("DELETE", "_wlm/query_group/analytics4", null);
Response response2 = performOperation("DELETE", "_wlm/workload_group/analytics4", null);
assertEquals(response2.getStatusLine().getStatusCode(), 200);
assertTrue(EntityUtils.toString(response2.getEntity()).contains("\"acknowledged\":true"));

assertThrows(ResponseException.class, () -> performOperation("DELETE", "_wlm/query_group/analytics99", null));
assertThrows(ResponseException.class, () -> performOperation("DELETE", "_wlm/workload_group/analytics99", null));
}

public void testUpdate() throws Exception {
Response response = performOperation("PUT", "_wlm/query_group", getCreateJson("analytics5", "enforced", 0.4, 0.2));
Response response = performOperation("PUT", "_wlm/workload_group", getCreateJson("analytics5", "enforced", 0.4, 0.2));
assertEquals(response.getStatusLine().getStatusCode(), 200);

Response response2 = performOperation("PUT", "_wlm/query_group/analytics5", getUpdateJson("monitor", 0.41, 0.21));
Response response2 = performOperation("PUT", "_wlm/workload_group/analytics5", getUpdateJson("monitor", 0.41, 0.21));
assertEquals(response2.getStatusLine().getStatusCode(), 200);
String responseBody2 = EntityUtils.toString(response2.getEntity());
assertTrue(responseBody2.contains("\"name\":\"analytics5\""));
Expand All @@ -84,22 +84,22 @@ public void testUpdate() throws Exception {
+ " \"memory\" : -0.1\n"
+ " }\n"
+ "}'";
assertThrows(ResponseException.class, () -> performOperation("PUT", "_wlm/query_group/analytics5", json));
assertThrows(ResponseException.class, () -> performOperation("PUT", "_wlm/workload_group/analytics5", json));
assertThrows(
ResponseException.class,
() -> performOperation("PUT", "_wlm/query_group/analytics98", getUpdateJson("monitor", 0.43, 0.23))
() -> performOperation("PUT", "_wlm/workload_group/analytics98", getUpdateJson("monitor", 0.43, 0.23))
);
performOperation("DELETE", "_wlm/query_group/analytics5", null);
performOperation("DELETE", "_wlm/workload_group/analytics5", null);
}

public void testCRUD() throws Exception {
Response response = performOperation("PUT", "_wlm/query_group", getCreateJson("analytics6", "enforced", 0.4, 0.2));
Response response = performOperation("PUT", "_wlm/workload_group", getCreateJson("analytics6", "enforced", 0.4, 0.2));
assertEquals(response.getStatusLine().getStatusCode(), 200);

Response response1 = performOperation("PUT", "_wlm/query_group/analytics6", getUpdateJson("monitor", 0.41, 0.21));
Response response1 = performOperation("PUT", "_wlm/workload_group/analytics6", getUpdateJson("monitor", 0.41, 0.21));
assertEquals(response1.getStatusLine().getStatusCode(), 200);

Response response2 = performOperation("GET", "_wlm/query_group/analytics6", null);
Response response2 = performOperation("GET", "_wlm/workload_group/analytics6", null);
assertEquals(response2.getStatusLine().getStatusCode(), 200);
String responseBody2 = EntityUtils.toString(response2.getEntity());
assertTrue(responseBody2.contains("\"name\":\"analytics6\""));
Expand All @@ -109,24 +109,24 @@ public void testCRUD() throws Exception {

assertThrows(
ResponseException.class,
() -> performOperation("PUT", "_wlm/query_group", getCreateJson("users3", "monitor", 0.6, 0.8))
() -> performOperation("PUT", "_wlm/workload_group", getCreateJson("users3", "monitor", 0.6, 0.8))
);

Response response4 = performOperation("PUT", "_wlm/query_group", getCreateJson("users3", "monitor", 0.59, 0.79));
Response response4 = performOperation("PUT", "_wlm/workload_group", getCreateJson("users3", "monitor", 0.59, 0.79));
assertEquals(response4.getStatusLine().getStatusCode(), 200);

Response response5 = performOperation("DELETE", "_wlm/query_group/analytics6", null);
Response response5 = performOperation("DELETE", "_wlm/workload_group/analytics6", null);
assertEquals(response5.getStatusLine().getStatusCode(), 200);
String responseBody5 = EntityUtils.toString(response5.getEntity());
assertTrue(responseBody5.contains("\"acknowledged\":true"));

Response response6 = performOperation("GET", "_wlm/query_group", null);
Response response6 = performOperation("GET", "_wlm/workload_group", null);
assertEquals(response6.getStatusLine().getStatusCode(), 200);
String responseBody6 = EntityUtils.toString(response6.getEntity());
assertTrue(responseBody6.contains("\"query_groups\""));
assertTrue(responseBody6.contains("\"workload_groups\""));
assertTrue(responseBody6.contains("\"users3\""));
assertFalse(responseBody6.contains("\"analytics6\""));
performOperation("DELETE", "_wlm/query_group/users3", null);
performOperation("DELETE", "_wlm/workload_group/users3", null);
}

static String getCreateJson(String name, String resiliencyMode, double cpu, double memory) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,19 +18,19 @@
import org.opensearch.common.settings.Settings;
import org.opensearch.common.settings.SettingsFilter;
import org.opensearch.core.action.ActionResponse;
import org.opensearch.plugin.wlm.action.CreateQueryGroupAction;
import org.opensearch.plugin.wlm.action.DeleteQueryGroupAction;
import org.opensearch.plugin.wlm.action.GetQueryGroupAction;
import org.opensearch.plugin.wlm.action.TransportCreateQueryGroupAction;
import org.opensearch.plugin.wlm.action.TransportDeleteQueryGroupAction;
import org.opensearch.plugin.wlm.action.TransportGetQueryGroupAction;
import org.opensearch.plugin.wlm.action.TransportUpdateQueryGroupAction;
import org.opensearch.plugin.wlm.action.UpdateQueryGroupAction;
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.plugin.wlm.service.QueryGroupPersistenceService;
import org.opensearch.plugin.wlm.action.CreateWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.DeleteWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.GetWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.TransportCreateWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.TransportDeleteWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.TransportGetWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.TransportUpdateWorkloadGroupAction;
import org.opensearch.plugin.wlm.action.UpdateWorkloadGroupAction;
import org.opensearch.plugin.wlm.rest.RestCreateWorkloadGroupAction;
import org.opensearch.plugin.wlm.rest.RestDeleteWorkloadGroupAction;
import org.opensearch.plugin.wlm.rest.RestGetWorkloadGroupAction;
import org.opensearch.plugin.wlm.rest.RestUpdateWorkloadGroupAction;
import org.opensearch.plugin.wlm.service.WorkloadGroupPersistenceService;
import org.opensearch.plugins.ActionPlugin;
import org.opensearch.plugins.Plugin;
import org.opensearch.rest.RestController;
Expand All @@ -53,10 +53,10 @@
@Override
public List<ActionHandler<? extends ActionRequest, ? extends ActionResponse>> getActions() {
return List.of(
new ActionPlugin.ActionHandler<>(CreateQueryGroupAction.INSTANCE, TransportCreateQueryGroupAction.class),
new ActionPlugin.ActionHandler<>(GetQueryGroupAction.INSTANCE, TransportGetQueryGroupAction.class),
new ActionPlugin.ActionHandler<>(DeleteQueryGroupAction.INSTANCE, TransportDeleteQueryGroupAction.class),
new ActionPlugin.ActionHandler<>(UpdateQueryGroupAction.INSTANCE, TransportUpdateQueryGroupAction.class)
new ActionPlugin.ActionHandler<>(CreateWorkloadGroupAction.INSTANCE, TransportCreateWorkloadGroupAction.class),
new ActionPlugin.ActionHandler<>(GetWorkloadGroupAction.INSTANCE, TransportGetWorkloadGroupAction.class),
new ActionPlugin.ActionHandler<>(DeleteWorkloadGroupAction.INSTANCE, TransportDeleteWorkloadGroupAction.class),
new ActionPlugin.ActionHandler<>(UpdateWorkloadGroupAction.INSTANCE, TransportUpdateWorkloadGroupAction.class)
);
}

Expand All @@ -71,16 +71,16 @@
Supplier<DiscoveryNodes> nodesInCluster
) {
return List.of(
new RestCreateQueryGroupAction(),
new RestGetQueryGroupAction(),
new RestDeleteQueryGroupAction(),
new RestUpdateQueryGroupAction()
new RestCreateWorkloadGroupAction(),
new RestGetWorkloadGroupAction(),
new RestDeleteWorkloadGroupAction(),
new RestUpdateWorkloadGroupAction()
);
}

@Override
public List<Setting<?>> getSettings() {
return List.of(QueryGroupPersistenceService.MAX_QUERY_GROUP_COUNT);
return List.of(WorkloadGroupPersistenceService.MAX_QUERY_GROUP_COUNT);

Check warning on line 83 in plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPlugin.java

View check run for this annotation

Codecov / codecov/patch

plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPlugin.java#L83

Added line #L83 was not covered by tests
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import org.opensearch.common.inject.AbstractModule;
import org.opensearch.common.inject.Singleton;
import org.opensearch.plugin.wlm.service.QueryGroupPersistenceService;
import org.opensearch.plugin.wlm.service.WorkloadGroupPersistenceService;

/**
* Guice Module to manage WorkloadManagement related objects
Expand All @@ -24,8 +24,8 @@

@Override
protected void configure() {
// Bind QueryGroupPersistenceService as a singleton to ensure a single instance is used,
// Bind WorkloadGroupPersistenceService as a singleton to ensure a single instance is used,
// preventing multiple throttling key registrations in the constructor.
bind(QueryGroupPersistenceService.class).in(Singleton.class);
bind(WorkloadGroupPersistenceService.class).in(Singleton.class);

Check warning on line 29 in plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPluginModule.java

View check run for this annotation

Codecov / codecov/patch

plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/WorkloadManagementPluginModule.java#L29

Added line #L29 was not covered by tests
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,26 @@
import org.opensearch.action.ActionType;

/**
* Transport action to update QueryGroup
* Transport action to create WorkloadGroup
*
* @opensearch.experimental
*/
public class UpdateQueryGroupAction extends ActionType<UpdateQueryGroupResponse> {
public class CreateWorkloadGroupAction extends ActionType<CreateWorkloadGroupResponse> {

/**
* An instance of UpdateQueryGroupAction
* An instance of CreateWorkloadGroupAction
*/
public static final UpdateQueryGroupAction INSTANCE = new UpdateQueryGroupAction();
public static final CreateWorkloadGroupAction INSTANCE = new CreateWorkloadGroupAction();

Check warning on line 23 in plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/action/CreateWorkloadGroupAction.java

View check run for this annotation

Codecov / codecov/patch

plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/action/CreateWorkloadGroupAction.java#L23

Added line #L23 was not covered by tests

/**
* Name for UpdateQueryGroupAction
* Name for CreateWorkloadGroupAction
*/
public static final String NAME = "cluster:admin/opensearch/wlm/query_group/_update";
public static final String NAME = "cluster:admin/opensearch/wlm/workload_group/_create";

/**
* Default constructor
*/
private UpdateQueryGroupAction() {
super(NAME, UpdateQueryGroupResponse::new);
private CreateWorkloadGroupAction() {
super(NAME, CreateWorkloadGroupResponse::new);

Check warning on line 34 in plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/action/CreateWorkloadGroupAction.java

View check run for this annotation

Codecov / codecov/patch

plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/action/CreateWorkloadGroupAction.java#L34

Added line #L34 was not covered by tests
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

import org.opensearch.action.ActionRequestValidationException;
import org.opensearch.action.support.clustermanager.ClusterManagerNodeRequest;
import org.opensearch.cluster.metadata.QueryGroup;
import org.opensearch.cluster.metadata.WorkloadGroup;
import org.opensearch.common.UUIDs;
import org.opensearch.core.common.io.stream.StreamInput;
import org.opensearch.core.common.io.stream.StreamOutput;
Expand All @@ -20,7 +20,7 @@
import java.io.IOException;

/**
* A request for create QueryGroup
* A request for create WorkloadGroup
* User input schema:
* {
* "name": "analytics",
Expand All @@ -33,33 +33,33 @@
*
* @opensearch.experimental
*/
public class CreateQueryGroupRequest extends ClusterManagerNodeRequest<CreateQueryGroupRequest> {
private final QueryGroup queryGroup;
public class CreateWorkloadGroupRequest extends ClusterManagerNodeRequest<CreateWorkloadGroupRequest> {
private final WorkloadGroup workloadGroup;

/**
* Constructor for CreateQueryGroupRequest
* @param queryGroup - A {@link QueryGroup} object
* Constructor for CreateWorkloadGroupRequest
* @param workloadGroup - A {@link WorkloadGroup} object
*/
CreateQueryGroupRequest(QueryGroup queryGroup) {
this.queryGroup = queryGroup;
CreateWorkloadGroupRequest(WorkloadGroup workloadGroup) {
this.workloadGroup = workloadGroup;
}

/**
* Constructor for CreateQueryGroupRequest
* Constructor for CreateWorkloadGroupRequest
* @param in - A {@link StreamInput} object
*/
CreateQueryGroupRequest(StreamInput in) throws IOException {
CreateWorkloadGroupRequest(StreamInput in) throws IOException {
super(in);
queryGroup = new QueryGroup(in);
workloadGroup = new WorkloadGroup(in);
}

/**
* Generate a CreateQueryGroupRequest from XContent
* Generate a CreateWorkloadGroupRequest from XContent
* @param parser - A {@link XContentParser} object
*/
public static CreateQueryGroupRequest fromXContent(XContentParser parser) throws IOException {
QueryGroup.Builder builder = QueryGroup.Builder.fromXContent(parser);
return new CreateQueryGroupRequest(builder._id(UUIDs.randomBase64UUID()).updatedAt(Instant.now().getMillis()).build());
public static CreateWorkloadGroupRequest fromXContent(XContentParser parser) throws IOException {
WorkloadGroup.Builder builder = WorkloadGroup.Builder.fromXContent(parser);
return new CreateWorkloadGroupRequest(builder._id(UUIDs.randomBase64UUID()).updatedAt(Instant.now().getMillis()).build());

Check warning on line 62 in plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/action/CreateWorkloadGroupRequest.java

View check run for this annotation

Codecov / codecov/patch

plugins/workload-management/src/main/java/org/opensearch/plugin/wlm/action/CreateWorkloadGroupRequest.java#L61-L62

Added lines #L61 - L62 were not covered by tests
}

@Override
Expand All @@ -70,13 +70,13 @@
@Override
public void writeTo(StreamOutput out) throws IOException {
super.writeTo(out);
queryGroup.writeTo(out);
workloadGroup.writeTo(out);
}

/**
* QueryGroup getter
* WorkloadGroup getter
*/
public QueryGroup getQueryGroup() {
return queryGroup;
public WorkloadGroup getWorkloadGroup() {
return workloadGroup;
}
}
Loading
Loading