From 1e454755f6f9ae38c66192ac09d7baa546312134 Mon Sep 17 00:00:00 2001 From: Kaushal Kumar Date: Tue, 25 Jun 2024 14:46:26 -0700 Subject: [PATCH] structure resourceLimits into an object Signed-off-by: Kaushal Kumar --- .../cluster/metadata/QueryGroup.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) 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 abcc2c51d03d1..4bef98af6cd1f 100644 --- a/server/src/main/java/org/opensearch/cluster/metadata/QueryGroup.java +++ b/server/src/main/java/org/opensearch/cluster/metadata/QueryGroup.java @@ -31,7 +31,9 @@ * Class to define the QueryGroup schema * { * "_id": "fafjafjkaf9ag8a9ga9g7ag0aagaga", - * "jvm": 0.4, + * "resourceLimits": { + * "jvm": 0.4 + * }, * "resiliency_mode": "enforced", * "name": "analytics", * "updatedAt": 4513232415 @@ -137,9 +139,13 @@ public XContentBuilder toXContent(final XContentBuilder builder, final Params pa builder.field("name", name); builder.field("resiliency_mode", resiliencyMode.getName()); builder.field("updatedAt", updatedAtInMillis); + // write resource limits + builder.startObject("resourceLimits"); for (Map.Entry resourceLimit : resourceLimits.entrySet()) { builder.field(resourceLimit.getKey().getName(), resourceLimit.getValue()); } + builder.endObject(); + builder.endObject(); return builder; } @@ -173,8 +179,22 @@ public static QueryGroup fromXContent(final XContentParser parser) throws IOExce } else if (fieldName.equals("updatedAt")) { builder.updatedAt(parser.longValue()); } else { - resourceLimits.put(ResourceType.fromName(fieldName), parser.doubleValue()); + throw new IllegalArgumentException(fieldName + " is not a valid field in QueryGroup"); + } + } else if (token == XContentParser.Token.START_OBJECT ) { + + if (!fieldName.equals("resourceLimits")) { + throw new IllegalArgumentException("was expecting the { " + " but found " + token); } + + while ((token = parser.nextToken()) != XContentParser.Token.END_OBJECT) { + if (token == XContentParser.Token.FIELD_NAME) { + fieldName = parser.currentName(); + } else { + resourceLimits.put(ResourceType.fromName(fieldName), parser.doubleValue()); + } + } + } } builder.resourceLimits(resourceLimits);