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]