You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ap...@apache.org on 2022/06/03 06:04:46 UTC

[pinot] branch auth-minion-client updated: add auth provider to minion client

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

apucher pushed a commit to branch auth-minion-client
in repository https://gitbox.apache.org/repos/asf/pinot.git


The following commit(s) were added to refs/heads/auth-minion-client by this push:
     new 5c93b93ccc add auth provider to minion client
5c93b93ccc is described below

commit 5c93b93cccc46bd1ccc0df2ac2e065b6762e65f1
Author: Alexander Pucher <ap...@apache.org>
AuthorDate: Thu Jun 2 23:04:36 2022 -0700

    add auth provider to minion client
---
 .../apache/pinot/common/minion/MinionClient.java   | 28 ++++++++++------------
 .../pinot/common/minion/MinionClientTest.java      |  6 ++---
 .../core/query/executor/sql/SqlQueryExecutor.java  |  5 ++--
 .../org/apache/pinot/tools/BootstrapTableTool.java |  3 ++-
 4 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/pinot-common/src/main/java/org/apache/pinot/common/minion/MinionClient.java b/pinot-common/src/main/java/org/apache/pinot/common/minion/MinionClient.java
index 1909f0c8e1..2fcd32d919 100644
--- a/pinot-common/src/main/java/org/apache/pinot/common/minion/MinionClient.java
+++ b/pinot-common/src/main/java/org/apache/pinot/common/minion/MinionClient.java
@@ -30,8 +30,10 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.pinot.common.auth.AuthProviderUtils;
 import org.apache.pinot.spi.annotations.InterfaceAudience;
 import org.apache.pinot.spi.annotations.InterfaceStability;
+import org.apache.pinot.spi.auth.AuthProvider;
 import org.apache.pinot.spi.config.task.AdhocTaskConfig;
 import org.apache.pinot.spi.utils.JsonUtils;
 
@@ -50,17 +52,11 @@ public class MinionClient {
   private static final String HTTP = "http";
 
   private final String _controllerUrl;
+  private final AuthProvider _authProvider;
 
-  public MinionClient(String controllerHost, String controllerPort) {
-    this(HTTP, controllerHost, controllerPort);
-  }
-
-  public MinionClient(String scheme, String controllerHost, String controllerPort) {
-    this(String.format("%s://%s:%s", scheme, controllerHost, controllerPort));
-  }
-
-  public MinionClient(String controllerUrl) {
+  public MinionClient(String controllerUrl, AuthProvider authProvider) {
     _controllerUrl = controllerUrl;
+    _authProvider = authProvider;
   }
 
   public String getControllerUrl() {
@@ -70,7 +66,7 @@ public class MinionClient {
   public Map<String, String> scheduleMinionTasks(@Nullable String taskType, @Nullable String tableNameWithType)
       throws IOException {
     HttpPost httpPost = createHttpPostRequest(
-        MinionRequestURLBuilder.baseUrl(getControllerUrl()).forTaskSchedule(taskType, tableNameWithType));
+        MinionRequestURLBuilder.baseUrl(_controllerUrl).forTaskSchedule(taskType, tableNameWithType));
     HttpResponse response = HTTP_CLIENT.execute(httpPost);
     int statusCode = response.getStatusLine().getStatusCode();
     final String responseString = IOUtils.toString(response.getEntity().getContent());
@@ -85,7 +81,7 @@ public class MinionClient {
   public Map<String, String> getTasksStates(String taskType)
       throws IOException {
     HttpGet httpGet =
-        createHttpGetRequest(MinionRequestURLBuilder.baseUrl(getControllerUrl()).forTasksStates(taskType));
+        createHttpGetRequest(MinionRequestURLBuilder.baseUrl(_controllerUrl).forTasksStates(taskType));
     HttpResponse response = HTTP_CLIENT.execute(httpGet);
     int statusCode = response.getStatusLine().getStatusCode();
     final String responseString = IOUtils.toString(response.getEntity().getContent());
@@ -93,13 +89,13 @@ public class MinionClient {
       throw new HttpException(String
           .format("Unable to get tasks states map. Error code %d, Error message: %s", statusCode, responseString));
     }
-    return JsonUtils.stringToObject(responseString, new TypeReference<Map<String, String>>() {
+    return JsonUtils.stringToObject(responseString, new TypeReference<>() {
     });
   }
 
   public String getTaskState(String taskName)
       throws IOException {
-    HttpGet httpGet = createHttpGetRequest(MinionRequestURLBuilder.baseUrl(getControllerUrl()).forTaskState(taskName));
+    HttpGet httpGet = createHttpGetRequest(MinionRequestURLBuilder.baseUrl(_controllerUrl).forTaskState(taskName));
     HttpResponse response = HTTP_CLIENT.execute(httpGet);
     int statusCode = response.getStatusLine().getStatusCode();
     String responseString = IOUtils.toString(response.getEntity().getContent());
@@ -113,7 +109,7 @@ public class MinionClient {
 
   public Map<String, String> executeTask(AdhocTaskConfig adhocTaskConfig, @Nullable Map<String, String> headers)
       throws IOException {
-    HttpPost httpPost = createHttpPostRequest(MinionRequestURLBuilder.baseUrl(getControllerUrl()).forTaskExecute());
+    HttpPost httpPost = createHttpPostRequest(MinionRequestURLBuilder.baseUrl(_controllerUrl).forTaskExecute());
     httpPost.setEntity(new StringEntity(adhocTaskConfig.toJsonString()));
     if (headers != null) {
       headers.remove("content-length");
@@ -126,19 +122,21 @@ public class MinionClient {
       throw new HttpException(String
           .format("Unable to get tasks states map. Error code %d, Error message: %s", statusCode, responseString));
     }
-    return JsonUtils.stringToObject(responseString, new TypeReference<Map<String, String>>() {
+    return JsonUtils.stringToObject(responseString, new TypeReference<>() {
     });
   }
 
   private HttpGet createHttpGetRequest(String uri) {
     HttpGet httpGet = new HttpGet(uri);
     httpGet.setHeader(ACCEPT, APPLICATION_JSON);
+    AuthProviderUtils.toRequestHeaders(_authProvider).forEach(httpGet::setHeader);
     return httpGet;
   }
 
   private HttpPost createHttpPostRequest(String uri) {
     HttpPost httpPost = new HttpPost(uri);
     httpPost.setHeader(ACCEPT, APPLICATION_JSON);
+    AuthProviderUtils.toRequestHeaders(_authProvider).forEach(httpPost::setHeader);
     return httpPost;
   }
 }
diff --git a/pinot-common/src/test/java/org/apache/pinot/common/minion/MinionClientTest.java b/pinot-common/src/test/java/org/apache/pinot/common/minion/MinionClientTest.java
index eddb888d3d..0f9e0c6253 100644
--- a/pinot-common/src/test/java/org/apache/pinot/common/minion/MinionClientTest.java
+++ b/pinot-common/src/test/java/org/apache/pinot/common/minion/MinionClientTest.java
@@ -62,7 +62,7 @@ public class MinionClientTest {
     HttpServer httpServer = startServer(14202, "/tasks/schedule",
         createHandler(200, "{\"SegmentGenerationAndPushTask\":\"Task_SegmentGenerationAndPushTask_1607470525615\"}",
             0));
-    MinionClient minionClient = new MinionClient("localhost", "14202");
+    MinionClient minionClient = new MinionClient("http://localhost:14202/", null);
     Assert.assertEquals(minionClient.scheduleMinionTasks(null, null).get("SegmentGenerationAndPushTask"),
         "Task_SegmentGenerationAndPushTask_1607470525615");
     httpServer.stop(0);
@@ -73,7 +73,7 @@ public class MinionClientTest {
       throws IOException {
     HttpServer httpServer = startServer(14203, "/tasks/SegmentGenerationAndPushTask/taskstates",
         createHandler(200, "{\"Task_SegmentGenerationAndPushTask_1607470525615\":\"IN_PROGRESS\"}", 0));
-    MinionClient minionClient = new MinionClient("http", "localhost", "14203");
+    MinionClient minionClient = new MinionClient("http://localhost:14203", null);
     Assert.assertEquals(minionClient.getTasksStates("SegmentGenerationAndPushTask")
         .get("Task_SegmentGenerationAndPushTask_1607470525615"), "IN_PROGRESS");
     httpServer.stop(0);
@@ -84,7 +84,7 @@ public class MinionClientTest {
       throws IOException {
     HttpServer httpServer = startServer(14204, "/tasks/task/Task_SegmentGenerationAndPushTask_1607470525615/state",
         createHandler(200, "\"COMPLETED\"", 0));
-    MinionClient minionClient = new MinionClient("http://localhost:14204");
+    MinionClient minionClient = new MinionClient("http://localhost:14204", null);
     Assert.assertEquals(minionClient.getTaskState("Task_SegmentGenerationAndPushTask_1607470525615"), "\"COMPLETED\"");
     httpServer.stop(0);
   }
diff --git a/pinot-core/src/main/java/org/apache/pinot/core/query/executor/sql/SqlQueryExecutor.java b/pinot-core/src/main/java/org/apache/pinot/core/query/executor/sql/SqlQueryExecutor.java
index 459b026245..19c4b10a6e 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/query/executor/sql/SqlQueryExecutor.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/query/executor/sql/SqlQueryExecutor.java
@@ -116,9 +116,10 @@ public class SqlQueryExecutor {
   }
 
   private MinionClient getMinionClient() {
+    // NOTE: using null auth provider here as auth headers injected by caller in "executeDMLStatement()"
     if (_helixManager != null) {
-      return new MinionClient(getControllerBaseUrl(_helixManager));
+      return new MinionClient(getControllerBaseUrl(_helixManager), null);
     }
-    return new MinionClient(_controllerUrl);
+    return new MinionClient(_controllerUrl, null);
   }
 }
diff --git a/pinot-tools/src/main/java/org/apache/pinot/tools/BootstrapTableTool.java b/pinot-tools/src/main/java/org/apache/pinot/tools/BootstrapTableTool.java
index c186e67cbc..57956e2a1c 100644
--- a/pinot-tools/src/main/java/org/apache/pinot/tools/BootstrapTableTool.java
+++ b/pinot-tools/src/main/java/org/apache/pinot/tools/BootstrapTableTool.java
@@ -68,7 +68,8 @@ public class BootstrapTableTool {
     _controllerHost = controllerHost;
     _controllerPort = controllerPort;
     _tableDir = tableDir;
-    _minionClient = new MinionClient(controllerHost, String.valueOf(controllerPort));
+    _minionClient = new MinionClient(String.format("%s://%s:%s", controllerProtocol, controllerHost, controllerPort),
+        authProvider);
     _authProvider = authProvider;
   }
 


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