This is an automated email from the ASF dual-hosted git repository. tingchen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push: new 5290b80c9b Add Server API to get tenant pools (#11273) 5290b80c9b is described below commit 5290b80c9b7a5bea97759f05853edff4a47fa846 Author: MeihanLi <42751784+meiha...@users.noreply.github.com> AuthorDate: Fri Aug 11 16:27:14 2023 -0700 Add Server API to get tenant pools (#11273) * Add a Server API to get pool number * add java docs * fix linter issue --- .../server/api/resources/InstanceResource.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pinot-server/src/main/java/org/apache/pinot/server/api/resources/InstanceResource.java b/pinot-server/src/main/java/org/apache/pinot/server/api/resources/InstanceResource.java index 5b90d5935c..4392346a14 100644 --- a/pinot-server/src/main/java/org/apache/pinot/server/api/resources/InstanceResource.java +++ b/pinot-server/src/main/java/org/apache/pinot/server/api/resources/InstanceResource.java @@ -29,6 +29,7 @@ import io.swagger.annotations.SecurityDefinition; import io.swagger.annotations.SwaggerDefinition; import java.util.Collections; import java.util.List; +import java.util.Map; import javax.inject.Inject; import javax.inject.Named; import javax.ws.rs.GET; @@ -38,6 +39,7 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import org.apache.helix.HelixManager; import org.apache.helix.model.InstanceConfig; +import org.apache.pinot.common.utils.config.InstanceUtils; import org.apache.pinot.common.utils.helix.HelixHelper; import org.apache.pinot.server.api.AdminApiApplication; @@ -73,4 +75,25 @@ public class InstanceResource { } return Collections.emptyList(); } + + /** + * Retrieve instance pools in the Helix InstanceConfig: + * https://docs.pinot.apache.org/operators/operating-pinot/instance-assignment#pool-based-instance-assignment. + * Returns an empty Map if poolBased config is not enabled or the instance is not assigned to any pool. + */ + @GET + @Path("pools") + @ApiOperation(value = "Tenant pools for current instance") + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 500, message = "Internal server error") + }) + @Produces(MediaType.APPLICATION_JSON) + public Map<String, String> getInstancePools() { + InstanceConfig instanceConfig = HelixHelper.getInstanceConfig(_helixManager, _instanceId); + if (instanceConfig == null || instanceConfig.getRecord() == null) { + return Collections.emptyMap(); + } + Map<String, String> pools = instanceConfig.getRecord().getMapField(InstanceUtils.POOL_KEY); + return pools == null ? Collections.emptyMap() : pools; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org