aboutsummaryrefslogtreecommitdiffstats
path: root/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts
diff options
context:
space:
mode:
authorMorten Tokle <morten.tokle@gmail.com>2020-11-10 11:58:36 +0100
committerGitHub <noreply@github.com>2020-11-10 11:58:36 +0100
commit2f85ccf289e957a0d798ae61994ffd3f21bc1e11 (patch)
treef5b79a7e9cd374759f5d35d2a5c00d0371746963 /vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts
parent4f05c4affb9290018ca00abe7ce21ecc365f1135 (diff)
Revert "Revert "Report metrics on athenz client errors""
Diffstat (limited to 'vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts')
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java58
1 files changed, 39 insertions, 19 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java
index c05213c8008..28119dc1f5a 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java
@@ -37,6 +37,7 @@ import java.security.KeyPair;
import java.security.cert.X509Certificate;
import java.time.Duration;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Collectors;
@@ -52,25 +53,8 @@ import static java.util.stream.Collectors.toList;
public class DefaultZtsClient extends ClientBase implements ZtsClient {
private final URI ztsUrl;
-
- public DefaultZtsClient(URI ztsUrl, SSLContext sslContext) {
- this(ztsUrl, sslContext, null);
- }
-
- public DefaultZtsClient(URI ztsUrl, SSLContext sslContext, HostnameVerifier hostnameVerifier) {
- this(ztsUrl, () -> sslContext, hostnameVerifier);
- }
-
- public DefaultZtsClient(URI ztsUrl, ServiceIdentityProvider identityProvider) {
- this(ztsUrl, identityProvider::getIdentitySslContext, null);
- }
-
- public DefaultZtsClient(URI ztsUrl, ServiceIdentityProvider identityProvider, HostnameVerifier hostnameVerifier) {
- this(ztsUrl, identityProvider::getIdentitySslContext, hostnameVerifier);
- }
-
- private DefaultZtsClient(URI ztsUrl, Supplier<SSLContext> sslContextSupplier, HostnameVerifier hostnameVerifier) {
- super("vespa-zts-client", sslContextSupplier, ZtsClientException::new, hostnameVerifier);
+ protected DefaultZtsClient(URI ztsUrl, Supplier<SSLContext> sslContextSupplier, HostnameVerifier hostnameVerifier, ErrorHandler errorHandler) {
+ super("vespa-zts-client", sslContextSupplier, ZtsClientException::new, hostnameVerifier, errorHandler);
this.ztsUrl = addTrailingSlash(ztsUrl);
}
@@ -239,5 +223,41 @@ public class DefaultZtsClient extends ClientBase implements ZtsClient {
else
return URI.create(ztsUrl.toString() + '/');
}
+ public static class Builder {
+ private URI ztsUrl;
+ private ClientBase.ErrorHandler errorHandler = ErrorHandler.empty();
+ private HostnameVerifier hostnameVerifier = null;
+ private Supplier<SSLContext> sslContextSupplier = null;
+
+ public Builder(URI ztsUrl) {
+ this.ztsUrl = ztsUrl;
+ }
+ public Builder withErrorHandler(ClientBase.ErrorHandler errorHandler) {
+ this.errorHandler = errorHandler;
+ return this;
+ }
+
+ public Builder withHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ this.hostnameVerifier = hostnameVerifier;
+ return this;
+ }
+
+ public Builder withSslContext(SSLContext sslContext) {
+ this.sslContextSupplier = () -> sslContext;
+ return this;
+ }
+
+ public Builder withIdentityProvider(ServiceIdentityProvider identityProvider) {
+ this.sslContextSupplier = identityProvider::getIdentitySslContext;
+ return this;
+ }
+
+ public DefaultZtsClient build() {
+ if (Objects.isNull(sslContextSupplier)) {
+ throw new IllegalArgumentException("No ssl context or identity provider available to set up zts client");
+ }
+ return new DefaultZtsClient(ztsUrl, sslContextSupplier, hostnameVerifier, errorHandler);
+ }
+ }
}