@@ -15,38 +15,19 @@ public class KubernetesVaultTokenSupplier implements VaultTokenSupplier {
1515
1616 private static final EnvironmentLoader ENVIRONMENT_LOADER = new EnvironmentLoader ();
1717
18- private String vaultRole = ENVIRONMENT_LOADER .loadVariable ("VAULT_ROLE" );
18+ private final String vaultRole ;
19+ private final String vaultJwtProvider ;
20+ private final String serviceAccountTokenPath ;
1921
20- private String vaultJwtProvider =
21- Optional .ofNullable (
22- Optional .ofNullable (ENVIRONMENT_LOADER .loadVariable ("VAULT_JWT_PROVIDER" ))
23- .orElse (ENVIRONMENT_LOADER .loadVariable ("VAULT_MOUNT_POINT" )))
24- .orElse ("kubernetes" );
25-
26- private String serviceAccountTokenPath =
27- Optional .ofNullable (ENVIRONMENT_LOADER .loadVariable ("SERVICE_ACCOUNT_TOKEN_PATH" ))
28- .orElse ("/var/run/secrets/kubernetes.io/serviceaccount/token" );
29-
30- public KubernetesVaultTokenSupplier vaultRole (String vaultRole ) {
31- this .vaultRole = vaultRole ;
32- return this ;
33- }
34-
35- public KubernetesVaultTokenSupplier vaultJwtProvider (String vaultJwtProvider ) {
36- this .vaultJwtProvider = vaultJwtProvider ;
37- return this ;
38- }
39-
40- public KubernetesVaultTokenSupplier serviceAccountTokenPath (String serviceAccountTokenPath ) {
41- this .serviceAccountTokenPath = serviceAccountTokenPath ;
42- return this ;
22+ private KubernetesVaultTokenSupplier (Builder builder ) {
23+ this .vaultRole = Objects .requireNonNull (builder .vaultRole , "vault role" );
24+ this .vaultJwtProvider = Objects .requireNonNull (builder .vaultJwtProvider , "jwt provider" );
25+ this .serviceAccountTokenPath =
26+ Objects .requireNonNull (builder .serviceAccountTokenPath , "k8s service account token path" );
4327 }
4428
4529 @ Override
4630 public String getToken (VaultConfig config ) {
47- Objects .requireNonNull (vaultRole , "vault role" );
48- Objects .requireNonNull (vaultJwtProvider , "jwt provider" );
49- Objects .requireNonNull (serviceAccountTokenPath , "k8s service account token path" );
5031 try (Stream <String > stream = Files .lines (Paths .get (serviceAccountTokenPath ))) {
5132 String jwt = stream .collect (Collectors .joining ());
5233 return Objects .requireNonNull (
@@ -59,4 +40,40 @@ public String getToken(VaultConfig config) {
5940 throw ThrowableUtil .propagate (e );
6041 }
6142 }
43+
44+ public static class Builder {
45+
46+ private String vaultRole = ENVIRONMENT_LOADER .loadVariable ("VAULT_ROLE" );
47+
48+ private String vaultJwtProvider =
49+ Optional .ofNullable (
50+ Optional .ofNullable (ENVIRONMENT_LOADER .loadVariable ("VAULT_JWT_PROVIDER" ))
51+ .orElse (ENVIRONMENT_LOADER .loadVariable ("VAULT_MOUNT_POINT" )))
52+ .orElse ("kubernetes" );
53+
54+ private String serviceAccountTokenPath =
55+ Optional .ofNullable (ENVIRONMENT_LOADER .loadVariable ("SERVICE_ACCOUNT_TOKEN_PATH" ))
56+ .orElse ("/var/run/secrets/kubernetes.io/serviceaccount/token" );
57+
58+ public Builder () {}
59+
60+ public Builder vaultRole (String vaultRole ) {
61+ this .vaultRole = vaultRole ;
62+ return this ;
63+ }
64+
65+ public Builder vaultJwtProvider (String vaultJwtProvider ) {
66+ this .vaultJwtProvider = vaultJwtProvider ;
67+ return this ;
68+ }
69+
70+ public Builder serviceAccountTokenPath (String serviceAccountTokenPath ) {
71+ this .serviceAccountTokenPath = serviceAccountTokenPath ;
72+ return this ;
73+ }
74+
75+ public KubernetesVaultTokenSupplier build () {
76+ return new KubernetesVaultTokenSupplier (this );
77+ }
78+ }
6279}
0 commit comments