aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-05-04 16:20:14 +0200
committerjonmv <venstad@gmail.com>2022-05-04 16:20:14 +0200
commit4204e6ea8a1f133dce2ac9d7265c45e5d4c84395 (patch)
treee4a0c425340930be65abe5ee8f886b41dd6deb3b
parent565de130d7a7a176d6658cce756288831ec3f387 (diff)
Expose EndpointAuthenticator
-rw-r--r--tenant-cd-api/abi-spec.json16
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java3
-rw-r--r--tenant-cd-api/src/main/java/ai/vespa/hosted/cd/EndpointAuthenticator.java (renamed from tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/EndpointAuthenticator.java)2
-rw-r--r--tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/DefaultEndpointAuthenticator.java1
-rw-r--r--tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/FeedClientBuilder.java1
-rw-r--r--tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java1
-rw-r--r--tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java6
7 files changed, 29 insertions, 1 deletions
diff --git a/tenant-cd-api/abi-spec.json b/tenant-cd-api/abi-spec.json
index 18094f2973f..48222a63e28 100644
--- a/tenant-cd-api/abi-spec.json
+++ b/tenant-cd-api/abi-spec.json
@@ -22,6 +22,7 @@
],
"methods": [
"public abstract java.net.URI uri()",
+ "public abstract ai.vespa.hosted.cd.EndpointAuthenticator authenticator()",
"public abstract java.net.http.HttpResponse send(java.net.http.HttpRequest$Builder, java.net.http.HttpResponse$BodyHandler)",
"public java.net.http.HttpResponse send(java.net.http.HttpRequest$Builder)",
"public abstract java.net.http.HttpRequest$Builder request(java.lang.String, java.util.Map)",
@@ -29,6 +30,21 @@
],
"fields": []
},
+ "ai.vespa.hosted.cd.EndpointAuthenticator": {
+ "superClass": "java.lang.Object",
+ "interfaces": [],
+ "attributes": [
+ "public",
+ "interface",
+ "abstract"
+ ],
+ "methods": [
+ "public javax.net.ssl.SSLContext sslContext()",
+ "public java.net.http.HttpRequest$Builder authenticated(java.net.http.HttpRequest$Builder)",
+ "public java.util.Map authorizationHeaders()"
+ ],
+ "fields": []
+ },
"ai.vespa.hosted.cd.InconclusiveTestException": {
"superClass": "java.lang.RuntimeException",
"interfaces": [],
diff --git a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java
index 3fd345abaff..319d835c73a 100644
--- a/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/Endpoint.java
@@ -18,6 +18,9 @@ public interface Endpoint {
/** Returns the URI of the endpoint, with scheme, host and port. */
URI uri();
+ /** Returns the authenticator for HTTP requests against this particular endpoint. */
+ EndpointAuthenticator authenticator();
+
/** Sends the given request with required authentication. */
<T> HttpResponse<T> send(HttpRequest.Builder request, HttpResponse.BodyHandler<T> handler);
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/EndpointAuthenticator.java b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/EndpointAuthenticator.java
index 590f49f0124..8985375fce2 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/EndpointAuthenticator.java
+++ b/tenant-cd-api/src/main/java/ai/vespa/hosted/cd/EndpointAuthenticator.java
@@ -1,5 +1,5 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package ai.vespa.hosted.cd.commons;
+package ai.vespa.hosted.cd;
import javax.net.ssl.SSLContext;
import java.net.http.HttpRequest;
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/DefaultEndpointAuthenticator.java b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/DefaultEndpointAuthenticator.java
index b52abddba07..b8030afd901 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/DefaultEndpointAuthenticator.java
+++ b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/DefaultEndpointAuthenticator.java
@@ -2,6 +2,7 @@
package ai.vespa.hosted.cd.commons;
import ai.vespa.hosted.api.Properties;
+import ai.vespa.hosted.cd.EndpointAuthenticator;
import com.yahoo.config.provision.SystemName;
import com.yahoo.security.KeyUtils;
import com.yahoo.security.SslContextBuilder;
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/FeedClientBuilder.java b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/FeedClientBuilder.java
index 892c8b63645..7e7355ae6d4 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/FeedClientBuilder.java
+++ b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/FeedClientBuilder.java
@@ -3,6 +3,7 @@
package ai.vespa.hosted.cd.commons;
import ai.vespa.feed.client.impl.FeedClientBuilderImpl;
+import ai.vespa.hosted.cd.EndpointAuthenticator;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java
index 347d772b148..1abdc4d4297 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java
+++ b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpDeployment.java
@@ -3,6 +3,7 @@ package ai.vespa.hosted.cd.commons;
import ai.vespa.hosted.cd.Deployment;
import ai.vespa.hosted.cd.Endpoint;
+import ai.vespa.hosted.cd.EndpointAuthenticator;
import java.net.URI;
import java.util.Map;
diff --git a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java
index fdca5c6e69b..0e5f42fa178 100644
--- a/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java
+++ b/tenant-cd-commons/src/main/java/ai/vespa/hosted/cd/commons/HttpEndpoint.java
@@ -2,6 +2,7 @@
package ai.vespa.hosted.cd.commons;
import ai.vespa.hosted.cd.Endpoint;
+import ai.vespa.hosted.cd.EndpointAuthenticator;
import javax.net.ssl.SSLParameters;
import java.io.IOException;
@@ -47,6 +48,11 @@ public class HttpEndpoint implements Endpoint {
}
@Override
+ public EndpointAuthenticator authenticator() {
+ return authenticator;
+ }
+
+ @Override
public <T> HttpResponse<T> send(HttpRequest.Builder request, HttpResponse.BodyHandler<T> handler) {
try {
return client.send(authenticator.authenticated(request).build(), handler);