diff --git a/docs/src/main/asciidoc/quickstart.adoc b/docs/src/main/asciidoc/quickstart.adoc index 98267d28..789a7c19 100644 --- a/docs/src/main/asciidoc/quickstart.adoc +++ b/docs/src/main/asciidoc/quickstart.adoc @@ -166,6 +166,7 @@ spring.cloud.vault: host: localhost port: 8200 scheme: https + uri: https://localhost:8200 connection-timeout: 5000 read-timeout: 15000 config: @@ -178,6 +179,7 @@ for SSL certificate validation * `port` sets the Vault port * `scheme` setting the scheme to `http` will use plain HTTP. Supported schemes are `http` and `https`. +* `uri` configure the Vault endpoint with an URI. Takes precedence over host/port/scheme configuration * `connection-timeout` sets the connection timeout in milliseconds * `read-timeout` sets the read timeout in milliseconds * `config.order` sets the order for the property source diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapConfiguration.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapConfiguration.java index 1c0f274c..839e2a61 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapConfiguration.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultBootstrapConfiguration.java @@ -110,6 +110,10 @@ public class VaultBootstrapConfiguration implements InitializingBean { private VaultEndpoint getVaultEndpoint(VaultProperties vaultProperties) { + if (StringUtils.hasText(vaultProperties.getUri())) { + return VaultEndpoint.from(URI.create(vaultProperties.getUri())); + } + VaultEndpoint vaultEndpoint = new VaultEndpoint(); vaultEndpoint.setHost(vaultProperties.getHost()); vaultEndpoint.setPort(vaultProperties.getPort()); diff --git a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultProperties.java b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultProperties.java index febf26ee..9dbec342 100644 --- a/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultProperties.java +++ b/spring-cloud-vault-config/src/main/java/org/springframework/cloud/vault/config/VaultProperties.java @@ -60,6 +60,11 @@ public class VaultProperties implements EnvironmentAware { */ private String scheme = "https"; + /** + * Vault URI. Can be set with scheme, host and port. + */ + private String uri; + /** * Connection timeout; */ diff --git a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java index 6a428db7..1c65605b 100644 --- a/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java +++ b/spring-cloud-vault-config/src/test/java/org/springframework/cloud/vault/config/VaultConfigTests.java @@ -49,7 +49,9 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Mark Paluch */ @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = VaultConfigTests.TestApplication.class) +@SpringBootTest(classes = VaultConfigTests.TestApplication.class, properties = { + "spring.cloud.vault.host=foo", "spring.cloud.vault.port=80", + "spring.cloud.vault.uri=https://localhost:8200" }) public class VaultConfigTests { @BeforeClass