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

Reply via email to