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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to