This is an automated email from the ASF dual-hosted git repository.

xiangfu pushed a commit to branch adding_grpc_port_to_instance
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git

commit 9796cbfcebe167ad6c5ad4f8029c85fa266614af
Author: Xiang Fu <fx19880...@gmail.com>
AuthorDate: Fri Oct 16 09:52:07 2020 -0700

    Adding grpcPort in controller instance API response
---
 .../pinot/common/utils/config/InstanceUtils.java   |  2 ++
 .../resources/PinotInstanceRestletResource.java    |  1 +
 .../api/PinotInstanceRestletResourceTest.java      | 31 ++++++++++++++--------
 .../apache/pinot/spi/config/instance/Instance.java | 19 +++++++++++--
 4 files changed, 40 insertions(+), 13 deletions(-)

diff --git 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
index f30fbfe..1eb3a90 100644
--- 
a/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
+++ 
b/pinot-common/src/main/java/org/apache/pinot/common/utils/config/InstanceUtils.java
@@ -31,6 +31,7 @@ public class InstanceUtils {
   }
 
   public static final String POOL_KEY = "pool";
+  public static final String GRPC_PORT_KEY = "grpcPort";
 
   /**
    * Returns the Helix instance id (e.g. {@code Server_localhost_1234}) for 
the given instance.
@@ -75,6 +76,7 @@ public class InstanceUtils {
       }
       instanceConfig.getRecord().setMapField(POOL_KEY, mapValue);
     }
+    instanceConfig.getRecord().setSimpleField(GRPC_PORT_KEY, 
Integer.toString(instance.getGrpcPort()));
     return instanceConfig;
   }
 }
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
index cb6e629..b1fdcc5 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotInstanceRestletResource.java
@@ -101,6 +101,7 @@ public class PinotInstanceRestletResource {
     response.put("port", instanceConfig.getPort());
     response.set("tags", JsonUtils.objectToJsonNode(instanceConfig.getTags()));
     response.set("pools", 
JsonUtils.objectToJsonNode(instanceConfig.getRecord().getMapField(InstanceUtils.POOL_KEY)));
+    response.put("grpcPort", 
instanceConfig.getRecord().getSimpleField(InstanceUtils.GRPC_PORT_KEY));
     return response.toString();
   }
 
diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
index a99e9d8..1816fc0 100644
--- 
a/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/api/PinotInstanceRestletResourceTest.java
@@ -37,6 +37,7 @@ import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
+import static 
org.apache.pinot.spi.config.instance.Instance.NOT_SET_GRPC_PORT_VALUE;
 import static org.testng.Assert.fail;
 
 
@@ -75,7 +76,7 @@ public class PinotInstanceRestletResourceTest extends 
ControllerTest {
     Instance brokerInstance = new Instance("1.2.3.4", 1234, 
InstanceType.BROKER, null, null);
     sendPostRequest(createInstanceUrl, brokerInstance.toJsonString());
 
-    Instance serverInstance = new Instance("1.2.3.4", 2345, 
InstanceType.SERVER, null, null);
+    Instance serverInstance = new Instance("1.2.3.4", 2345, 
InstanceType.SERVER, null, null, 8090);
     sendPostRequest(createInstanceUrl, serverInstance.toJsonString());
 
     // Check that there are 3 instances -- controller, broker and server
@@ -89,7 +90,8 @@ public class PinotInstanceRestletResourceTest extends 
ControllerTest {
     serverPools.put("tag_OFFLINE", 0);
     serverPools.put("tag_REALTIME", 1);
     serverInstance =
-        new Instance("2.3.4.5", 2345, InstanceType.SERVER, 
Arrays.asList("tag_OFFLINE", "tag_REALTIME"), serverPools);
+        new Instance("2.3.4.5", 2345, InstanceType.SERVER, 
Arrays.asList("tag_OFFLINE", "tag_REALTIME"), serverPools,
+            18090);
     sendPostRequest(createInstanceUrl, serverInstance.toJsonString());
 
     // Check that there are 5 instances
@@ -116,26 +118,28 @@ public class PinotInstanceRestletResourceTest extends 
ControllerTest {
 
     // Check that the instances are properly created
     checkInstanceInfo("Broker_1.2.3.4_1234", "Broker_1.2.3.4", 1234, new 
String[0], null, null);
-    checkInstanceInfo("Server_1.2.3.4_2345", "Server_1.2.3.4", 2345, new 
String[0], null, null);
+    checkInstanceInfo("Server_1.2.3.4_2345", "Server_1.2.3.4", 2345, new 
String[0], null, null, 8090);
     checkInstanceInfo("Broker_2.3.4.5_1234", "Broker_2.3.4.5", 1234, new 
String[]{"tag_BROKER"}, null, null);
     checkInstanceInfo("Server_2.3.4.5_2345", "Server_2.3.4.5", 2345, new 
String[]{"tag_OFFLINE", "tag_REALTIME"},
-        new String[]{"tag_OFFLINE", "tag_REALTIME"}, new int[]{0, 1});
+        new String[]{"tag_OFFLINE", "tag_REALTIME"}, new int[]{0, 1}, 18090);
 
     // Test PUT Instance API
     String newBrokerTag = "new-broker-tag";
-    Instance newBrokerInstance = new Instance("1.2.3.4", 1234, 
InstanceType.BROKER, Collections.singletonList(newBrokerTag), null);
+    Instance newBrokerInstance =
+        new Instance("1.2.3.4", 1234, InstanceType.BROKER, 
Collections.singletonList(newBrokerTag), null);
     String brokerInstanceId = "Broker_1.2.3.4_1234";
     String brokerInstanceUrl = 
_controllerRequestURLBuilder.forInstance(brokerInstanceId);
     sendPutRequest(brokerInstanceUrl, newBrokerInstance.toJsonString());
 
     String newServerTag = "new-server-tag";
-    Instance newServerInstance = new Instance("1.2.3.4", 2345, 
InstanceType.SERVER, Collections.singletonList(newServerTag), null);
+    Instance newServerInstance =
+        new Instance("1.2.3.4", 2345, InstanceType.SERVER, 
Collections.singletonList(newServerTag), null, 28090);
     String serverInstanceId = "Server_1.2.3.4_2345";
     String serverInstanceUrl = 
_controllerRequestURLBuilder.forInstance(serverInstanceId);
     sendPutRequest(serverInstanceUrl, newServerInstance.toJsonString());
 
     checkInstanceInfo(brokerInstanceId, "Broker_1.2.3.4", 1234, new 
String[]{newBrokerTag}, null, null);
-    checkInstanceInfo(serverInstanceId, "Server_1.2.3.4", 2345, new 
String[]{newServerTag}, null, null);
+    checkInstanceInfo(serverInstanceId, "Server_1.2.3.4", 2345, new 
String[]{newServerTag}, null, null, 28090);
 
     // Test Instance updateTags API
     String brokerInstanceUpdateTagsUrl = _controllerRequestURLBuilder
@@ -144,14 +148,18 @@ public class PinotInstanceRestletResourceTest extends 
ControllerTest {
     String serverInstanceUpdateTagsUrl = 
_controllerRequestURLBuilder.forInstanceUpdateTags(serverInstanceId,
         Lists.newArrayList("tag_REALTIME", "newTag_OFFLINE", 
"newTag_REALTIME"));
     sendPutRequest(serverInstanceUpdateTagsUrl);
-    checkInstanceInfo(brokerInstanceId, "Broker_1.2.3.4", 1234, new 
String[]{"tag_BROKER", "newTag_BROKER"}, null,
-        null);
+    checkInstanceInfo(brokerInstanceId, "Broker_1.2.3.4", 1234, new 
String[]{"tag_BROKER", "newTag_BROKER"}, null, null);
     checkInstanceInfo(serverInstanceId, "Server_1.2.3.4", 2345,
-        new String[]{"tag_REALTIME", "newTag_OFFLINE", "newTag_REALTIME"}, 
null, null);
+        new String[]{"tag_REALTIME", "newTag_OFFLINE", "newTag_REALTIME"}, 
null, null, 28090);
   }
 
   private void checkInstanceInfo(String instanceName, String hostName, int 
port, String[] tags, String[] pools,
       int[] poolValues) {
+    checkInstanceInfo(instanceName, hostName, port, tags, pools, poolValues, 
NOT_SET_GRPC_PORT_VALUE);
+  }
+
+  private void checkInstanceInfo(String instanceName, String hostName, int 
port, String[] tags, String[] pools,
+      int[] poolValues, int grpcPort) {
     TestUtils.waitForCondition(new Function<Void, Boolean>() {
       @Nullable
       @Override
@@ -164,7 +172,8 @@ public class PinotInstanceRestletResourceTest extends 
ControllerTest {
                   && (instance.get("hostName") != null) && 
(instance.get("hostName").asText().equals(hostName)) && (
                   instance.get("port") != null) && 
(instance.get("port").asText().equals(String.valueOf(port)))
                   && (instance.get("enabled").asBoolean()) && 
(instance.get("tags") != null) && (
-                  instance.get("tags").size() == tags.length);
+                  instance.get("tags").size() == tags.length) && 
(instance.get("grpcPort").asText()
+                  .equals(String.valueOf(grpcPort)));
 
           for (int i = 0; i < tags.length; i++) {
             result = result && 
instance.get("tags").get(i).asText().equals(tags[i]);
diff --git 
a/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java 
b/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java
index 5cbb32c..7767907 100644
--- a/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java
+++ b/pinot-spi/src/main/java/org/apache/pinot/spi/config/instance/Instance.java
@@ -38,22 +38,32 @@ import org.apache.pinot.spi.config.BaseJsonConfig;
  *   "tags": ["example_OFFLINE"],
  *   "pools": {
  *     "example_OFFLINE": 0
- *   }
+ *   },
+ *   "grpcPort": 8090
  * }
  * </pre>
  */
 public class Instance extends BaseJsonConfig {
+  public static int NOT_SET_GRPC_PORT_VALUE = -1;
+
   private final String _host;
   private final int _port;
   private final InstanceType _type;
   private final List<String> _tags;
   private final Map<String, Integer> _pools;
+  private final int _grpcPort;
+
+
+  public Instance(String host, int port, InstanceType type, List<String> tags, 
Map<String, Integer> pools) {
+    this(host, port, type, tags, pools, NOT_SET_GRPC_PORT_VALUE);
+  }
 
   @JsonCreator
   public Instance(@JsonProperty(value = "host", required = true) String host,
       @JsonProperty(value = "port", required = true) int port,
       @JsonProperty(value = "type", required = true) InstanceType type,
-      @JsonProperty("tags") @Nullable List<String> tags, 
@JsonProperty("pools") @Nullable Map<String, Integer> pools) {
+      @JsonProperty("tags") @Nullable List<String> tags, 
@JsonProperty("pools") @Nullable Map<String, Integer> pools,
+      @JsonProperty("grpcPort") int grpcPort) {
     Preconditions.checkArgument(host != null, "'host' must be configured");
     Preconditions.checkArgument(type != null, "'type' must be configured");
     _host = host;
@@ -61,6 +71,7 @@ public class Instance extends BaseJsonConfig {
     _type = type;
     _tags = tags;
     _pools = pools;
+    _grpcPort = grpcPort;
   }
 
   public String getHost() {
@@ -84,4 +95,8 @@ public class Instance extends BaseJsonConfig {
   public Map<String, Integer> getPools() {
     return _pools;
   }
+
+  public int getGrpcPort() {
+    return _grpcPort;
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to