summaryrefslogtreecommitdiffstats
path: root/vespa-athenz
diff options
context:
space:
mode:
authorMorten Tokle <mortent@verizonmedia.com>2020-11-06 09:22:14 +0100
committerMorten Tokle <mortent@verizonmedia.com>2020-11-06 09:22:14 +0100
commita8850f505638d11aabfc267f0ab17f18fe6ecf67 (patch)
treeba0fcce6b03ff21377d9a810a1873733e6ec3a84 /vespa-athenz
parentfcf7dba7523c9cebf2970a58e5e66c81508d9a00 (diff)
Create DefaultZtsClient builder
Diffstat (limited to 'vespa-athenz')
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java4
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/client/zts/DefaultZtsClient.java50
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java4
-rw-r--r--vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImpl.java2
4 files changed, 37 insertions, 23 deletions
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java
index b027e7272ea..30ff63fb108 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/aws/AwsCredentials.java
@@ -35,11 +35,11 @@ public class AwsCredentials {
}
public AwsCredentials(URI ztsUrl, ServiceIdentityProvider identityProvider, AthenzDomain athenzDomain, AwsRole awsRole) {
- this(new DefaultZtsClient(ztsUrl, identityProvider), athenzDomain, awsRole);
+ this(new DefaultZtsClient.Builder(ztsUrl).withIdentityProvider(identityProvider).build(), athenzDomain, awsRole);
}
public AwsCredentials(URI ztsUrl, SSLContext sslContext, AthenzDomain athenzDomain, AwsRole awsRole) {
- this(new DefaultZtsClient(ztsUrl, sslContext), athenzDomain, awsRole);
+ this(new DefaultZtsClient.Builder(ztsUrl).withSslContext(sslContext).build(), athenzDomain, awsRole);
}
/**
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..e8c0072731a 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,24 +53,7 @@ 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) {
+ protected DefaultZtsClient(URI ztsUrl, Supplier<SSLContext> sslContextSupplier, HostnameVerifier hostnameVerifier) {
super("vespa-zts-client", sslContextSupplier, ZtsClientException::new, hostnameVerifier);
this.ztsUrl = addTrailingSlash(ztsUrl);
}
@@ -239,5 +223,35 @@ public class DefaultZtsClient extends ClientBase implements ZtsClient {
else
return URI.create(ztsUrl.toString() + '/');
}
+ public static class Builder {
+ private URI ztsUrl;
+ private HostnameVerifier hostnameVerifier = null;
+ private Supplier<SSLContext> sslContextSupplier = null;
+ public Builder(URI ztsUrl) {
+ this.ztsUrl = ztsUrl;
+ }
+
+ 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);
+ }
+ }
}
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java
index 8e029906c30..612f9caa691 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzCredentialsService.java
@@ -81,7 +81,7 @@ class AthenzCredentialsService {
document.ipAddresses(),
keyPair);
- try (ZtsClient ztsClient = new DefaultZtsClient(ztsEndpoint, nodeIdentityProvider)) {
+ try (ZtsClient ztsClient = new DefaultZtsClient.Builder(ztsEndpoint).withIdentityProvider(nodeIdentityProvider).build()) {
InstanceIdentity instanceIdentity =
ztsClient.registerInstance(
configserverIdentity,
@@ -102,7 +102,7 @@ class AthenzCredentialsService {
document.ipAddresses(),
newKeyPair);
- try (ZtsClient ztsClient = new DefaultZtsClient(ztsEndpoint, sslContext)) {
+ try (ZtsClient ztsClient = new DefaultZtsClient.Builder(ztsEndpoint).withSslContext(sslContext).build()) {
InstanceIdentity instanceIdentity =
ztsClient.refreshInstance(
configserverIdentity,
diff --git a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImpl.java b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImpl.java
index 65574d7583e..724a3059f6d 100644
--- a/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImpl.java
+++ b/vespa-athenz/src/main/java/com/yahoo/vespa/athenz/identityprovider/client/AthenzIdentityProviderImpl.java
@@ -301,7 +301,7 @@ public final class AthenzIdentityProviderImpl extends AbstractComponent implemen
}
private DefaultZtsClient createZtsClient() {
- return new DefaultZtsClient(ztsEndpoint, getIdentitySslContext());
+ return new DefaultZtsClient.Builder(ztsEndpoint).withSslContext(getIdentitySslContext()).build();
}
@Override