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