diff --git a/.circleci/config.yml b/.circleci/config.yml
deleted file mode 100644
index 519e7f9b..00000000
--- a/.circleci/config.yml
+++ /dev/null
@@ -1,56 +0,0 @@
-version: 2
-
-jobs:
- build:
- docker:
- - image: circleci/openjdk:8u151-jdk
- environment:
- JAVA_TOOL_OPTIONS: "-Xms512m -Xmx768m"
- TERM: dumb
- branches:
- ignore:
- - gh-pages # list of branches to ignore
- steps:
- - setup_remote_docker
- - checkout
- - restore_cache:
- key: sc-vault-{{ .Branch }}
- - run:
- name: "Download dependencies"
- command: ./mvnw -s .settings.xml -B -U --fail-never dependency:go-offline || true
- - run:
- name: "Download Vault"
- command: src/test/bash/install_vault.sh
- - save_cache:
- key: sc-vault-{{ .Branch }}
- paths:
- - ~/.m2
- - "download"
- - run:
- name: "Create Certificates"
- command: src/test/bash/create_certificates.sh
- - run:
- name: "Starting Vault"
- command: src/test/bash/local_run_vault.sh
- background: true
- - run:
- name: "Running build"
- command: ./mvnw -s .settings.xml clean org.jacoco:jacoco-maven-plugin:prepare-agent install install -U -P sonar -nsu -B -Dmaven.test.redirectTestOutputToFile=true -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
- - run:
- name: "Starting Vault"
- command: pkill vault
- when: always
- - run:
- name: "Aggregate test results"
- when: always
- command: |
- mkdir -p junit/
- find . -type f -regex ".*/target/.*-reports/.*" -exec cp {} junit/ \;
- find . -type f -regex ".*/build/test-results/.*" -exec cp {} junit/ \;
- bash <(curl -s https://codecov.io/bash)
- - store_artifacts:
- path: junit/
- destination: artifacts
- - store_test_results:
- path: junit/
- destination: testartifacts
diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index 52e6a1af..00000000
--- a/.editorconfig
+++ /dev/null
@@ -1,24 +0,0 @@
-root = true
-
-[*.java]
-indent_style = tab
-indent_size = 4
-continuation_indent_size = 8
-
-[*.groovy]
-indent_style = tab
-indent_size = 4
-continuation_indent_size = 8
-
-[*.xml]
-indent_style = tab
-indent_size = 4
-continuation_indent_size = 8
-
-[*.yml]
-indent_style = space
-indent_size = 2
-
-[*.yaml]
-indent_style = space
-indent_size = 2
\ No newline at end of file
diff --git a/.flattened-pom.xml b/.flattened-pom.xml
new file mode 100644
index 00000000..991b3851
--- /dev/null
+++ b/.flattened-pom.xml
@@ -0,0 +1,163 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-build
+ 4.1.0-SNAPSHOT
+
+
+ org.springframework.cloud
+ spring-cloud-vault-parent
+ 4.1.0-SNAPSHOT
+ pom
+ Spring Cloud Vault
+ Configuration Integration with HashiCorp Vault
+ https://spring.io/spring-cloud/spring-cloud-vault-parent
+
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+ Copyright 2014-2021 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+ dsyer
+ Dave Syer
+ dsyer at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ sgibb
+ Spencer Gibb
+ sgibb at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ mgrzejszczak
+ Marcin Grzejszczak
+ mgrzejszczak at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ rbaxter
+ Ryan Baxter
+ rbaxter at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ omaciaszeksharma
+ Olga Maciaszek-Sharma
+ omaciaszeksharma at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+
+ scm:git:git://github.com/spring-cloud/spring-cloud-vault.git
+ scm:git:ssh://git@github.com/spring-cloud/spring-cloud-vault.git
+ https://github.com/spring-cloud/spring-cloud-vault
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+ provided
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 8.0.0.Final
+ provided
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ 3.2.0-SNAPSHOT
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 3.2.0-SNAPSHOT
+ provided
+
+
+
+
+ spring
+
+ true
+
+
+
+
+ false
+
+
+ true
+
+ spring-snapshots
+ Spring Snapshots
+ https://repo.spring.io/snapshot
+
+
+
+ false
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/libs-milestone-local
+
+
+
+ false
+
+ spring-releases
+ Spring Releases
+ https://repo.spring.io/release
+
+
+
+
+
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index d3204a48..00000000
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: waiting-for-triage
-assignees: ''
-
----
-
-**Describe the bug**
-Please provide details of the problem, including the version of Spring Cloud that you
-are using.
-
-**Sample**
-If possible, please provide a test case or sample application that reproduces
-the problem. This makes it much easier for us to diagnose the problem and to verify that
-we have fixed it.
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
deleted file mode 100644
index b2e33c5f..00000000
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-name: Feature request
-about: Suggest an idea for this project
-title: ''
-labels: waiting-for-triage
-assignees: ''
-
----
-
-**Is your feature request related to a problem? Please describe.**
-A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
-
-**Describe the solution you'd like**
-A clear and concise description of what you want to happen.
-
-**Describe alternatives you've considered**
-A clear and concise description of any alternative solutions or features you've considered.
-
-**Additional context**
-Add any other context or screenshots about the feature request here.
\ No newline at end of file
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
new file mode 100644
index 00000000..463218ed
--- /dev/null
+++ b/.github/workflows/deploy-docs.yml
@@ -0,0 +1,53 @@
+name: Deploy Docs
+run-name: ${{ format('{0} ({1})', github.workflow, github.event.inputs.build-refname || 'all') }}
+on:
+ workflow_dispatch:
+ inputs:
+ build-refname:
+ description: Enter git refname to build (e.g., 5.7.x).
+ required: false
+ push:
+ branches: docs-build
+env:
+ GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
+permissions:
+ contents: write
+jobs:
+ build:
+ if: github.repository_owner == 'spring-cloud'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 5
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ - name: Set up refname build
+ if: github.event.inputs.build-refname
+ run: |
+ git fetch --depth 1 https://github.com/$GITHUB_REPOSITORY ${{ github.event.inputs.build-refname }}
+ export BUILD_REFNAME=${{ github.event.inputs.build-refname }}
+ echo "BUILD_REFNAME=$BUILD_REFNAME" >> $GITHUB_ENV
+ export BUILD_VERSION=$(git cat-file --textconv FETCH_HEAD:pom.xml | python3 -c "import xml.etree.ElementTree as xml; from sys import stdin; print(xml.parse(stdin).getroot().find('{http://maven.apache.org/POM/4.0.0}version').text)")
+ echo BUILD_VERSION=$BUILD_VERSION >> $GITHUB_ENV
+ - name: Run Antora
+ run: |
+ ./mvnw --no-transfer-progress -B antora
+ - name: Publish Docs
+ uses: spring-io/spring-doc-actions/rsync-antora-reference@v0.0.11
+ with:
+ docs-username: ${{ secrets.DOCS_USERNAME }}
+ docs-host: ${{ secrets.DOCS_HOST }}
+ docs-ssh-key: ${{ secrets.DOCS_SSH_KEY }}
+ docs-ssh-host-key: ${{ secrets.DOCS_SSH_HOST_KEY }}
+ site-path: target/antora/site
+ - name: Bust Cloudflare Cache
+ uses: spring-io/spring-doc-actions/bust-cloudflare-antora-cache@v0.0.11
+ with:
+ context-root: spring-cloud-vault
+ cloudflare-zone-id: ${{ secrets.CLOUDFLARE_ZONE_ID }}
+ cloudflare-cache-token: ${{ secrets.CLOUDFLARE_CACHE_TOKEN }}
diff --git a/.gitignore b/.gitignore
index e155f0dc..6be8a4a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,28 +1,22 @@
-*~
-#*
-*#
-.#*
-.classpath
-.project
-.settings/
-.springBeans
target/
-bin/
-_site/
-.idea
+.settings/
+.project
+.classpath
+*.orig
+.springBeans
+.factorypath
+.sts4-cache
+.ant-targets-build.xml
+src/ant/.ant-targets-upload-dist.xml
+*.sonar4clipse*
+.DS_Store
*.iml
*.ipr
*.iws
-.factorypath
-download/
-/vault/
-/consul/
-/rabbitmq/
-work
-build/
-pom.xml.releaseBackup
-.flattened-pom.xml
-release.properties
-.vscode/
-plugins/
-
+/.idea/
+*.graphml
+node
+node_modules
+build
+package.json
+package-lock.json
diff --git a/.mvn/jvm.config b/.mvn/jvm.config
new file mode 100644
index 00000000..0e7dabef
--- /dev/null
+++ b/.mvn/jvm.config
@@ -0,0 +1 @@
+-Xmx1024m -XX:CICompilerCount=1 -XX:TieredStopAtLevel=1 -Djava.security.egd=file:/dev/./urandom
\ No newline at end of file
diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java
new file mode 100644
index 00000000..b901097f
--- /dev/null
+++ b/.mvn/wrapper/MavenWrapperDownloader.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2007-present the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+ private static final String WRAPPER_VERSION = "0.5.6";
+ /**
+ * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+ */
+ private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/"
+ + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar";
+
+ /**
+ * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+ * use instead of the default one.
+ */
+ private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+ ".mvn/wrapper/maven-wrapper.properties";
+
+ /**
+ * Path where the maven-wrapper.jar will be saved to.
+ */
+ private static final String MAVEN_WRAPPER_JAR_PATH =
+ ".mvn/wrapper/maven-wrapper.jar";
+
+ /**
+ * Name of the property which should be used to override the default download url for the wrapper.
+ */
+ private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+ public static void main(String args[]) {
+ System.out.println("- Downloader started");
+ File baseDirectory = new File(args[0]);
+ System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+ // If the maven-wrapper.properties exists, read it and check if it contains a custom
+ // wrapperUrl parameter.
+ File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+ String url = DEFAULT_DOWNLOAD_URL;
+ if(mavenWrapperPropertyFile.exists()) {
+ FileInputStream mavenWrapperPropertyFileInputStream = null;
+ try {
+ mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+ Properties mavenWrapperProperties = new Properties();
+ mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+ url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+ } catch (IOException e) {
+ System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+ } finally {
+ try {
+ if(mavenWrapperPropertyFileInputStream != null) {
+ mavenWrapperPropertyFileInputStream.close();
+ }
+ } catch (IOException e) {
+ // Ignore ...
+ }
+ }
+ }
+ System.out.println("- Downloading from: " + url);
+
+ File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+ if(!outputFile.getParentFile().exists()) {
+ if(!outputFile.getParentFile().mkdirs()) {
+ System.out.println(
+ "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+ }
+ }
+ System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+ try {
+ downloadFileFromURL(url, outputFile);
+ System.out.println("Done");
+ System.exit(0);
+ } catch (Throwable e) {
+ System.out.println("- Error downloading");
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+ if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) {
+ String username = System.getenv("MVNW_USERNAME");
+ char[] password = System.getenv("MVNW_PASSWORD").toCharArray();
+ Authenticator.setDefault(new Authenticator() {
+ @Override
+ protected PasswordAuthentication getPasswordAuthentication() {
+ return new PasswordAuthentication(username, password);
+ }
+ });
+ }
+ URL website = new URL(urlString);
+ ReadableByteChannel rbc;
+ rbc = Channels.newChannel(website.openStream());
+ FileOutputStream fos = new FileOutputStream(destination);
+ fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+ fos.close();
+ rbc.close();
+ }
+
+}
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
index 5fd4d502..2cc7d4a5 100644
Binary files a/.mvn/wrapper/maven-wrapper.jar and b/.mvn/wrapper/maven-wrapper.jar differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
index c3150437..642d572c 100644
--- a/.mvn/wrapper/maven-wrapper.properties
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -1 +1,2 @@
-distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar
diff --git a/.sdkmanrc b/.sdkmanrc
deleted file mode 100644
index 415f9083..00000000
--- a/.sdkmanrc
+++ /dev/null
@@ -1,3 +0,0 @@
-# Enable auto-env through the sdkman_auto_env config
-# Add key=value pairs of SDKs to use below
-java=17.0.1-tem
diff --git a/.settings.xml b/.settings.xml
deleted file mode 100644
index 171351c0..00000000
--- a/.settings.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
- repo.spring.io
- ${env.CI_DEPLOY_USERNAME}
- ${env.CI_DEPLOY_PASSWORD}
-
-
-
-
- spring
-
- true
-
-
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/libs-snapshot-local
-
- true
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/libs-milestone-local
-
- false
-
-
-
- spring-releases
- Spring Releases
- https://repo.spring.io/release
-
- false
-
-
-
-
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/libs-snapshot-local
-
- true
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/libs-milestone-local
-
- false
-
-
-
-
-
-
diff --git a/CODE_OF_CONDUCT.adoc b/CODE_OF_CONDUCT.adoc
deleted file mode 100644
index 33ae7bc9..00000000
--- a/CODE_OF_CONDUCT.adoc
+++ /dev/null
@@ -1,27 +0,0 @@
-= Contributor Code of Conduct
-
-As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
-
-We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery
-* Personal attacks
-* Trolling or insulting/derogatory comments
-* Public or private harassment
-* Publishing other's private information, such as physical or electronic addresses,
- without explicit permission
-* Other unethical or unprofessional conduct
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a project maintainer at spring-code-of-conduct@pivotal.io.
-All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
-Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident.
-
-This Code of Conduct is adapted from the https://contributor-covenant.org[Contributor Covenant], version 1.3.0, available at https://contributor-covenant.org/version/1/3/0/[contributor-covenant.org/version/1/3/0/].
\ No newline at end of file
diff --git a/LICENSE.txt b/LICENSE.txt
deleted file mode 100644
index 62589edd..00000000
--- a/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- https://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- https://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/README.adoc b/README.adoc
index 813174ac..aabf34c6 100644
--- a/README.adoc
+++ b/README.adoc
@@ -1,641 +1,23 @@
-////
-DO NOT EDIT THIS FILE. IT WAS GENERATED.
-Manual changes to this file will be lost when it is generated again.
-Edit the files in the src/main/asciidoc/ directory instead.
-////
+= Spring Cloud Vault Docs Build
+You're currently viewing the Antora playbook branch.
+The playbook branch hosts the docs build that is used to build and publish the production docs site.
-:docs: https://cloud.spring.io/spring-cloud-vault/spring-cloud-vault.html
+The Spring Cloud Vault reference docs are built using https://antora.org[Antora].
+This README covers how to build the docs in a software branch as well as how to build the production docs site locally.
-Spring Cloud Vault Config provides client-side support for externalized configuration in a distributed system.
-With https://www.vaultproject.io[HashiCorp's Vault] you have a central place to manage external secret properties for applications across all environments.
-Vault can manage static and dynamic secrets such as username/password for remote applications/resources and provide credentials for external services such as MySQL, PostgreSQL, Apache Cassandra, Couchbase, MongoDB, Consul, AWS and more.
+== Building the Site
-== Features
-
-=== Spring Cloud Vault Config Client
-
-Specifically for Spring applications:
-
-* Retrieve secrets from Vault and initialize Spring Environment with remote property sources.
-* Obtain {docs}#vault.config.backends.kv[Key-Value secrets] secured with SSL.
-* Generate credentials for
-{docs}#vault.config.backends.mysql[MySQL],
-{docs}#vault.config.backends.postgresql[PostgreSQL],
-{docs}#vault.config.backends.cassandra[Apache Cassandra],
-{docs}#vault.config.backends.mongodb[MongoDB],
-{docs}#vault.config.backends.consul[Consul],
-{docs}#vault.config.backends.aws[AWS], and {docs}#vault.config.backends.rabbitmq[RabbitMQ].
-* {docs}#vault.config.authentication.token[Token],
-{docs}#vault.config.authentication.appid[AppId],
-{docs}#vault.config.authentication.approle[AppRole],
-{docs}#vault.config.authentication.clientcert[Client Certificate],
-{docs}#vault.config.authentication.cubbyhole[Cubbyhole],
-{docs}#vault.config.authentication.awsec2[AWS-EC2] authentication,
-{docs}#vault.config.authentication.awsiam[AWS-IAM] authentication, and
-{docs}#vault.config.authentication.kubernetes[Kubernetes] authentication.
-
-* Bootstrap application context: a parent context for the main application that can be trained to do anything.
-
-== Quick Start
-
-:docs: https://cloud.spring.io/spring-cloud-vault/reference/html/
-
-*Prerequisites*
-
-To get started with Vault and this guide you need a *NIX-like operating systems that provides:
-
-* `wget`, `openssl` and `unzip`
-* at least Java 8 and a properly configured `JAVA_HOME` environment variable
-
-NOTE: This guide explains Vault setup from a Spring Cloud Vault perspective for integration testing.
-You can find a getting started guide directly on the Vault project site: https://learn.hashicorp.com/vault
-
-*Install Vault*
+You can build the entire site by invoking the following on the docs-build branch and then viewing the site at `target/site/index.html`
[source,bash]
----
-$ wget https://releases.hashicorp.com/vault/${vault_version}/vault_${vault_version}_${platform}.zip
-$ unzip vault_${vault_version}_${platform}.zip
+./mvnw antora
----
-NOTE: These steps can be achieved by downloading and running https://github.com/spring-cloud/spring-cloud-vault/blob/master/src/test/bash/install_vault.sh[`install_vault.sh`].
-
-*Create SSL certificates for Vault*
-
-Next, you'r required to generate a set of certificates:
-
-* Root CA
-* Vault Certificate (decrypted key `work/ca/private/localhost.decrypted.key.pem` and certificate `work/ca/certs/localhost.cert.pem`)
-
-Make sure to import the Root Certificate into a Java-compliant truststore.
-
-The easiest way to achieve this is by using OpenSSL.
-
-NOTE: https://github.com/spring-cloud/spring-cloud-vault/blob/master/src/test/bash/[`create_certificates.sh`] creates certificates in `work/ca` and a JKS truststore `work/keystore.jks`.
-If you want to run Spring Cloud Vault using this quickstart guide you need to configure the truststore the `spring.cloud.vault.ssl.trust-store` property to `file:work/keystore.jks`.
-
-[[quickstart.vault.start]]
-*Start Vault server*
-
-Next create a config file along the lines of:
-
-[source]
-----
-backend "inmem" {
-}
-
-listener "tcp" {
- address = "0.0.0.0:8200"
- tls_cert_file = "work/ca/certs/localhost.cert.pem"
- tls_key_file = "work/ca/private/localhost.decrypted.key.pem"
-}
-
-disable_mlock = true
-----
-
-NOTE: You can find an example config file at https://github.com/spring-clod/spring-cloud-vault/blob/master/src/test/bash/vault.conf[`vault.conf`].
+== Building a Specific Branch
[source,bash]
----
-$ vault server -config=vault.conf
+./mvnw antora
----
-
-Vault is started listening on `0.0.0.0:8200` using the `inmem` storage and `https`.
-Vault is sealed and not initialized when starting up.
-
-NOTE: If you want to run tests, leave Vault uninitialized.
-The tests will initialize Vault and create a root token `00000000-0000-0000-0000-000000000000`.
-
-If you want to use Vault for your application or give it a try then you need to initialize it first.
-
-[source,bash]
-----
-$ export VAULT_ADDR="https://localhost:8200"
-$ export VAULT_SKIP_VERIFY=true # Don't do this for production
-$ vault operator init
-----
-
-You should see something like:
-
-[source,bash]
-----
-Key 1: 7149c6a2e16b8833f6eb1e76df03e47f6113a3288b3093faf5033d44f0e70fe701
-Key 2: 901c534c7988c18c20435a85213c683bdcf0efcd82e38e2893779f152978c18c02
-Key 3: 03ff3948575b1165a20c20ee7c3e6edf04f4cdbe0e82dbff5be49c63f98bc03a03
-Key 4: 216ae5cc3ddaf93ceb8e1d15bb9fc3176653f5b738f5f3d1ee00cd7dccbe926e04
-Key 5: b2898fc8130929d569c1677ee69dc5f3be57d7c4b494a6062693ce0b1c4d93d805
-Initial Root Token: 19aefa97-cccc-bbbb-aaaa-225940e63d76
-
-Vault initialized with 5 keys and a key threshold of 3. Please
-securely distribute the above keys. When the Vault is re-sealed,
-restarted, or stopped, you must provide at least 3 of these keys
-to unseal it again.
-
-Vault does not store the master key. Without at least 3 keys,
-your Vault will remain permanently sealed.
-----
-
-Vault will initialize and return a set of unsealing keys and the root token.
-Pick 3 keys and unseal Vault.
-Store the Vault token in the `VAULT_TOKEN`
-environment variable.
-
-[source,bash]
-----
-$ vault operator unseal (Key 1)
-$ vault operator unseal (Key 2)
-$ vault operator unseal (Key 3)
-$ export VAULT_TOKEN=(Root token)
-# Required to run Spring Cloud Vault tests after manual initialization
-$ vault token create -id="00000000-0000-0000-0000-000000000000" -policy="root"
-----
-
-Spring Cloud Vault accesses different resources.
-By default, the secret backend is enabled which accesses secret config settings via JSON endpoints.
-
-The HTTP service has resources in the form:
-
-----
-/secret/{application}/{profile}
-/secret/{application}
-/secret/{defaultContext}/{profile}
-/secret/{defaultContext}
-----
-
-where the "application" is injected as the `spring.application.name` in the
-`SpringApplication` (i.e. what is normally "application" in a regular Spring Boot app), "profile" is an active profile (or comma-separated list of properties).
-Properties retrieved from Vault will be used "as-is" without further prefixing of the property names.
-
-== Client Side Usage
-
-To use these features in an application, just build it as a Spring Boot application that depends on `spring-cloud-vault-config` (e.g. see the test cases).
-Example Maven configuration:
-
-.pom.xml
-====
-[source,xml,indent=0,subs="verbatim,quotes,attributes"]
-----
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.0.RELEASE
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-vault-config
- {project-version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
-----
-====
-
-Then you can create a standard Spring Boot application, like this simple HTTP server:
-
-====
-[source,java]
-----
-@SpringBootApplication
-@RestController
-public class Application {
-
- @RequestMapping("/")
- public String home() {
- return "Hello World!";
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-}
-----
-====
-
-When it runs it will pick up the external configuration from the default local Vault server on port `8200` if it is running.
-To modify the startup behavior you can change the location of the Vault server using `application.properties`, for example
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- host: localhost
- port: 8200
- scheme: https
- uri: https://localhost:8200
- connection-timeout: 5000
- read-timeout: 15000
- config:
-spring.config.import: vault://
-----
-====
-
-* `host` sets the hostname of the Vault host.
-The host name will be used 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
-* `spring.config.import` mounts Vault as `PropertySource` using all enabled secret backends (key-value enabled by default)
-
-Enabling further integrations requires additional dependencies and configuration.
-Depending on how you have set up Vault you might need additional configuration like
-{docs}#vault.config.ssl[SSL] and
-{docs}#vault.config.authentication[authentication].
-
-If the application imports the `spring-boot-starter-actuator` project, the status of the vault server will be available via the `/health` endpoint.
-
-The vault health indicator can be enabled or disabled through the property `management.health.vault.enabled` (default to `true`).
-
-NOTE: With Spring Cloud Vault 3.0 and Spring Boot 2.4, the bootstrap context initialization (`bootstrap.yml`, `bootstrap.properties`) of property sources was deprecated.
-Instead, Spring Cloud Vault favors Spring Boot's Config Data API which allows importing configuration from Vault. With Spring Boot Config Data approach, you need to set the `spring.config.import` property in order to bind to Vault. You can read more about it in the <>.
-You can enable the bootstrap context either by setting the configuration property `spring.cloud.bootstrap.enabled=true` or by including the dependency `org.springframework.cloud:spring-cloud-starter-bootstrap`.
-
-=== Authentication
-
-Vault requires an https://www.vaultproject.io/docs/concepts/auth.html[authentication mechanism] to https://www.vaultproject.io/docs/concepts/tokens.html[authorize client requests].
-
-Spring Cloud Vault supports multiple {docs}#vault.config.authentication[authentication mechanisms] to authenticate applications with Vault.
-
-For a quickstart, use the root token printed by the <>.
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- token: 19aefa97-cccc-bbbb-aaaa-225940e63d76
-spring.config.import: vault://
-----
-====
-
-WARNING: Consider carefully your security requirements.
-Static token authentication is fine if you want quickly get started with Vault, but a static token is not protected any further.
-Any disclosure to unintended parties allows Vault use with the associated token roles.
-
-
-
-
-== Building
-
-=== Build requirements for Vault
-
-Spring Cloud Vault Config requires SSL certificates and a running Vault instance listening on `localhost:8200`.
-Certificates and the Vault setup are scripted, the scripts are located in `src/test/bash`.
-
-The following scripts need to be run prior to building the project for the tests to pass.
-
-[source,bash]
-----
-$ ./src/test/bash/install_vault.sh
-$ ./src/test/bash/create_certificates.sh
-$ ./src/test/bash/local_run_vault.sh
-----
-
-Leave Vault uninitialized, the tests will initialize and unseal Vault.
-They will also create a root token `00000000-0000-0000-0000-000000000000`.
-
-Changes to the documentation should be made to the adocs found under `docs/src/main/asciidoc/`
-
-`README.adoc` can be re-generated via the following
-
-[source,bash]
-----
-$ ./docs/src/main/ruby/generate_readme.sh > README.adoc
-----
-
-This script requires ruby and the asciidoctor gem installed (`gem install asciidoctor`)
-
-:jdkversion: 17
-
-=== Basic Compile and Test
-
-To build the source you will need to install JDK {jdkversion}.
-
-Spring Cloud uses Maven for most build-related activities, and you
-should be able to get off the ground quite quickly by cloning the
-project you are interested in and typing
-
-----
-$ ./mvnw install
-----
-
-NOTE: You can also install Maven (>=3.3.3) yourself and run the `mvn` command
-in place of `./mvnw` in the examples below. If you do that you also
-might need to add `-P spring` if your local Maven settings do not
-contain repository declarations for spring pre-release artifacts.
-
-NOTE: Be aware that you might need to increase the amount of memory
-available to Maven by setting a `MAVEN_OPTS` environment variable with
-a value like `-Xmx512m -XX:MaxPermSize=128m`. We try to cover this in
-the `.mvn` configuration, so if you find you have to do it to make a
-build succeed, please raise a ticket to get the settings added to
-source control.
-
-The projects that require middleware (i.e. Redis) for testing generally
-require that a local instance of [Docker](https://www.docker.com/get-started) is installed and running.
-
-
-=== Documentation
-
-The spring-cloud-build module has a "docs" profile, and if you switch
-that on it will try to build asciidoc sources from
-`src/main/asciidoc`. As part of that process it will look for a
-`README.adoc` and process it by loading all the includes, but not
-parsing or rendering it, just copying it to `${main.basedir}`
-(defaults to `${basedir}`, i.e. the root of the project). If there are
-any changes in the README it will then show up after a Maven build as
-a modified file in the correct place. Just commit it and push the change.
-
-=== Working with the code
-If you don't have an IDE preference we would recommend that you use
-https://www.springsource.com/developer/sts[Spring Tools Suite] or
-https://eclipse.org[Eclipse] when working with the code. We use the
-https://eclipse.org/m2e/[m2eclipse] eclipse plugin for maven support. Other IDEs and tools
-should also work without issue as long as they use Maven 3.3.3 or better.
-
-==== Activate the Spring Maven profile
-Spring Cloud projects require the 'spring' Maven profile to be activated to resolve
-the spring milestone and snapshot repositories. Use your preferred IDE to set this
-profile to be active, or you may experience build errors.
-
-==== Importing into eclipse with m2eclipse
-We recommend the https://eclipse.org/m2e/[m2eclipse] eclipse plugin when working with
-eclipse. If you don't already have m2eclipse installed it is available from the "eclipse
-marketplace".
-
-NOTE: Older versions of m2e do not support Maven 3.3, so once the
-projects are imported into Eclipse you will also need to tell
-m2eclipse to use the right profile for the projects. If you
-see many different errors related to the POMs in the projects, check
-that you have an up to date installation. If you can't upgrade m2e,
-add the "spring" profile to your `settings.xml`. Alternatively you can
-copy the repository settings from the "spring" profile of the parent
-pom into your `settings.xml`.
-
-==== Importing into eclipse without m2eclipse
-If you prefer not to use m2eclipse you can generate eclipse project metadata using the
-following command:
-
-[indent=0]
-----
- $ ./mvnw eclipse:eclipse
-----
-
-The generated eclipse projects can be imported by selecting `import existing projects`
-from the `file` menu.
-
-
-== Contributing
-
-:spring-cloud-build-branch: master
-
-Spring Cloud is released under the non-restrictive Apache 2.0 license,
-and follows a very standard Github development process, using Github
-tracker for issues and merging pull requests into master. If you want
-to contribute even something trivial please do not hesitate, but
-follow the guidelines below.
-
-=== Sign the Contributor License Agreement
-Before we accept a non-trivial patch or pull request we will need you to sign the
-https://cla.pivotal.io/sign/spring[Contributor License Agreement].
-Signing the contributor's agreement does not grant anyone commit rights to the main
-repository, but it does mean that we can accept your contributions, and you will get an
-author credit if we do. Active contributors might be asked to join the core team, and
-given the ability to merge pull requests.
-
-=== Code of Conduct
-This project adheres to the Contributor Covenant https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[code of
-conduct]. By participating, you are expected to uphold this code. Please report
-unacceptable behavior to spring-code-of-conduct@pivotal.io.
-
-=== Code Conventions and Housekeeping
-None of these is essential for a pull request, but they will all help. They can also be
-added after the original pull request but before a merge.
-
-* Use the Spring Framework code format conventions. If you use Eclipse
- you can import formatter settings using the
- `eclipse-code-formatter.xml` file from the
- https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-dependencies-parent/eclipse-code-formatter.xml[Spring
- Cloud Build] project. If using IntelliJ, you can use the
- https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter
- Plugin] to import the same file.
-* Make sure all new `.java` files to have a simple Javadoc class comment with at least an
- `@author` tag identifying you, and preferably at least a paragraph on what the class is
- for.
-* Add the ASF license header comment to all new `.java` files (copy from existing files
- in the project)
-* Add yourself as an `@author` to the .java files that you modify substantially (more
- than cosmetic changes).
-* Add some Javadocs and, if you change the namespace, some XSD doc elements.
-* A few unit tests would help a lot as well -- someone has to do it.
-* If no-one else is using your branch, please rebase it against the current master (or
- other target branch in the main project).
-* When writing a commit message please follow https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html[these conventions],
- if you are fixing an existing issue please add `Fixes gh-XXXX` at the end of the commit
- message (where XXXX is the issue number).
-
-=== Checkstyle
-
-Spring Cloud Build comes with a set of checkstyle rules. You can find them in the `spring-cloud-build-tools` module. The most notable files under the module are:
-
-.spring-cloud-build-tools/
-----
-└── src
- ├── checkstyle
- │ └── checkstyle-suppressions.xml <3>
- └── main
- └── resources
- ├── checkstyle-header.txt <2>
- └── checkstyle.xml <1>
-----
-<1> Default Checkstyle rules
-<2> File header setup
-<3> Default suppression rules
-
-==== Checkstyle configuration
-
-Checkstyle rules are *disabled by default*. To add checkstyle to your project just define the following properties and plugins.
-
-.pom.xml
-----
-
-true <1>
- true
- <2>
- true
- <3>
-
-
-
-
- <4>
- io.spring.javaformat
- spring-javaformat-maven-plugin
-
- <5>
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
-
-
-
-
- <5>
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
-
-
-
-----
-<1> Fails the build upon Checkstyle errors
-<2> Fails the build upon Checkstyle violations
-<3> Checkstyle analyzes also the test sources
-<4> Add the Spring Java Format plugin that will reformat your code to pass most of the Checkstyle formatting rules
-<5> Add checkstyle plugin to your build and reporting phases
-
-If you need to suppress some rules (e.g. line length needs to be longer), then it's enough for you to define a file under `${project.root}/src/checkstyle/checkstyle-suppressions.xml` with your suppressions. Example:
-
-.projectRoot/src/checkstyle/checkstyle-suppresions.xml
-----
-
-
-
-
-
-
-----
-
-It's advisable to copy the `${spring-cloud-build.rootFolder}/.editorconfig` and `${spring-cloud-build.rootFolder}/.springformat` to your project. That way, some default formatting rules will be applied. You can do so by running this script:
-
-```bash
-$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
-$ touch .springformat
-```
-
-=== IDE setup
-
-==== Intellij IDEA
-
-In order to setup Intellij you should import our coding conventions, inspection profiles and set up the checkstyle plugin.
-The following files can be found in the https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] project.
-
-.spring-cloud-build-tools/
-----
-└── src
- ├── checkstyle
- │ └── checkstyle-suppressions.xml <3>
- └── main
- └── resources
- ├── checkstyle-header.txt <2>
- ├── checkstyle.xml <1>
- └── intellij
- ├── Intellij_Project_Defaults.xml <4>
- └── Intellij_Spring_Boot_Java_Conventions.xml <5>
-----
-<1> Default Checkstyle rules
-<2> File header setup
-<3> Default suppression rules
-<4> Project defaults for Intellij that apply most of Checkstyle rules
-<5> Project style conventions for Intellij that apply most of Checkstyle rules
-
-.Code style
-
-image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-code-style.png[Code style]
-
-Go to `File` -> `Settings` -> `Editor` -> `Code style`. There click on the icon next to the `Scheme` section. There, click on the `Import Scheme` value and pick the `Intellij IDEA code style XML` option. Import the `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml` file.
-
-.Inspection profiles
-
-image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-inspections.png[Code style]
-
-Go to `File` -> `Settings` -> `Editor` -> `Inspections`. There click on the icon next to the `Profile` section. There, click on the `Import Profile` and import the `spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml` file.
-
-.Checkstyle
-
-To have Intellij work with Checkstyle, you have to install the `Checkstyle` plugin. It's advisable to also install the `Assertions2Assertj` to automatically convert the JUnit assertions
-
-image::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/{spring-cloud-build-branch}/docs/src/main/asciidoc/images/intellij-checkstyle.png[Checkstyle]
-
-Go to `File` -> `Settings` -> `Other settings` -> `Checkstyle`. There click on the `+` icon in the `Configuration file` section. There, you'll have to define where the checkstyle rules should be picked from. In the image above, we've picked the rules from the cloned Spring Cloud Build repository. However, you can point to the Spring Cloud Build's GitHub repository (e.g. for the `checkstyle.xml` : `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml`). We need to provide the following variables:
-
-- `checkstyle.header.file` - please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt` URL.
-- `checkstyle.suppressions.file` - default suppressions. Please point it to the Spring Cloud Build's, `spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` file either in your cloned repo or via the `https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml` URL.
-- `checkstyle.additional.suppressions.file` - this variable corresponds to suppressions in your local project. E.g. you're working on `spring-cloud-contract`. Then point to the `project-root/src/checkstyle/checkstyle-suppressions.xml` folder. Example for `spring-cloud-contract` would be: `/home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml`.
-
-IMPORTANT: Remember to set the `Scan Scope` to `All sources` since we apply checkstyle rules for production and test sources.
-
-=== Duplicate Finder
-
-Spring Cloud Build brings along the `basepom:duplicate-finder-maven-plugin`, that enables flagging duplicate and conflicting classes and resources on the java classpath.
-
-==== Duplicate Finder configuration
-
-Duplicate finder is *enabled by default* and will run in the `verify` phase of your Maven build, but it will only take effect in your project if you add the `duplicate-finder-maven-plugin` to the `build` section of the projecst's `pom.xml`.
-
-.pom.xml
-[source,xml]
-----
-
-
-
- org.basepom.maven
- duplicate-finder-maven-plugin
-
-
-
-----
-
-For other properties, we have set defaults as listed in the https://github.com/basepom/duplicate-finder-maven-plugin/wiki[plugin documentation].
-
-You can easily override them but setting the value of the selected property prefixed with `duplicate-finder-maven-plugin`. For example, set `duplicate-finder-maven-plugin.skip` to `true` in order to skip duplicates check in your build.
-
-If you need to add `ignoredClassPatterns` or `ignoredResourcePatterns` to your setup, make sure to add them in the plugin configuration section of your project:
-
-[source,xml]
-----
-
-
-
- org.basepom.maven
- duplicate-finder-maven-plugin
-
-
- org.joda.time.base.BaseDateTime
- .*module-info
-
-
- changelog.txt
-
-
-
-
-
-
-
-----
-
diff --git a/SECURITY.md b/SECURITY.md
deleted file mode 100644
index 04685956..00000000
--- a/SECURITY.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Security Policy
-
-## Reporting a Vulnerability
-
-To report security vulnerabilities, please go to https://pivotal.io/security.
diff --git a/docs/antora-playbook.yml b/antora-playbook.yml
similarity index 61%
rename from docs/antora-playbook.yml
rename to antora-playbook.yml
index 9a70e676..93d8a572 100644
--- a/docs/antora-playbook.yml
+++ b/antora-playbook.yml
@@ -6,38 +6,39 @@ antora:
- '@antora/collector-extension'
- '@antora/atlas-extension'
- require: '@springio/antora-extensions/root-component-extension'
- root_component_name: 'PROJECT_WITHOUT_SPRING'
- # FIXME: Run antora once using this extension to migrate to the Asciidoc Tabs syntax
- # and then remove this extension
- - require: '@springio/antora-extensions/tabs-migration-extension'
- unwrap_example_block: always
- save_result: true
+ root_component_name: 'cloud-vault'
site:
- title: PROJECT_FULL_NAME
- url: https://docs.spring.io/PROJECT_NAME/reference/
+ title: Spring Cloud Vault
+ url: https://docs.spring.io/spring-cloud-vault/reference
+ robots: allow
+git:
+ ensure_git_suffix: false
content:
sources:
- - url: ./..
- branches: HEAD
+ - url: https://github.com/spring-cloud/spring-cloud-vault
+ # Refname matching:
+ # https://docs.antora.org/antora/latest/playbook/content-refname-matching/
+ branches: [ main ]
+ tags: [ '({4..9}).+({1..9}).+({0..9})?(-{RC,M}+({0..9}))', '!4.1.0-M1' ]
start_path: docs
- worktrees: true
asciidoc:
attributes:
page-stackoverflow-url: https://stackoverflow.com/tags/spring-cloud
page-pagination: ''
hide-uri-scheme: '@'
tabs-sync-option: '@'
- chomp: 'all'
extensions:
- '@asciidoctor/tabs'
- '@springio/asciidoctor-extensions'
- sourcemap: true
urls:
+ latest_version_segment_strategy: redirect:to
latest_version_segment: ''
+ redirect_facility: httpd
+ui:
+ bundle:
+ url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.3.5/ui-bundle.zip
+ snapshot: true
runtime:
log:
failure_level: warn
format: pretty
-ui:
- bundle:
- url: https://github.com/spring-io/antora-ui-spring/releases/download/v0.3.5/ui-bundle.zip
diff --git a/config/build.sh b/config/build.sh
deleted file mode 100755
index aeb541a7..00000000
--- a/config/build.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/bash
-
-./src/test/bash/install_vault.sh
-./src/test/bash/create_certificates.sh
-./src/test/bash/local_run_vault.sh &
-./mvnw clean install -Pdocs && pkill -f "vault server"
diff --git a/config/releaser.yml b/config/releaser.yml
deleted file mode 100644
index 7a1b4c30..00000000
--- a/config/releaser.yml
+++ /dev/null
@@ -1,3 +0,0 @@
-releaser:
- maven:
- buildCommand: ./config/build.sh
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index 39f5469c..00000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-# Work in Progress
-vault:
- image: cgswong/vault
- volumes:
- - ./src/test/resources:/config
- ports:
- - "8200:8200"
- command: server -config /config/vault.conf
diff --git a/docs/.flattened-pom.xml b/docs/.flattened-pom.xml
new file mode 100644
index 00000000..c14db461
--- /dev/null
+++ b/docs/.flattened-pom.xml
@@ -0,0 +1,155 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-vault-parent
+ 4.1.0-SNAPSHOT
+ ..
+
+ org.springframework.cloud
+ spring-cloud-vault-docs
+ 4.1.0-SNAPSHOT
+ Spring Cloud Vault Docs
+ Spring Cloud Docs
+ https://spring.io/spring-cloud/spring-cloud-vault-parent/spring-cloud-vault-docs
+
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+ Copyright 2014-2021 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+ dsyer
+ Dave Syer
+ dsyer at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ sgibb
+ Spencer Gibb
+ sgibb at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ mgrzejszczak
+ Marcin Grzejszczak
+ mgrzejszczak at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ rbaxter
+ Ryan Baxter
+ rbaxter at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ omaciaszeksharma
+ Olga Maciaszek-Sharma
+ omaciaszeksharma at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+
+ scm:git:git://github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-vault-docs
+ scm:git:ssh://git@github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-vault-docs
+ https://github.com/spring-cloud/spring-cloud-vault/spring-cloud-vault-docs
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-vault-config
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config-aws
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config-consul
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config-databases
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config-rabbitmq
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+ provided
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 8.0.0.Final
+ provided
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ 3.2.0-SNAPSHOT
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 3.2.0-SNAPSHOT
+ provided
+
+
+
diff --git a/docs/.github/workflows/deploy-docs.yml b/docs/.github/workflows/deploy-docs.yml
deleted file mode 100644
index be4b92df..00000000
--- a/docs/.github/workflows/deploy-docs.yml
+++ /dev/null
@@ -1,32 +0,0 @@
-name: Deploy Docs
-on:
- push:
- branches-ignore: [ gh-pages ]
- tags: '**'
- repository_dispatch:
- types: request-build-reference # legacy
- #schedule:
- #- cron: '0 10 * * *' # Once per day at 10am UTC
- workflow_dispatch:
-permissions:
- actions: write
-jobs:
- build:
- runs-on: ubuntu-latest
- # if: github.repository_owner == 'spring-cloud'
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- with:
- ref: docs-build
- fetch-depth: 1
- - name: Dispatch (partial build)
- if: github.ref_type == 'branch'
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD) -f build-refname=${{ github.ref_name }}
- - name: Dispatch (full build)
- if: github.ref_type == 'tag'
- env:
- GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: gh workflow run deploy-docs.yml -r $(git rev-parse --abbrev-ref HEAD)
diff --git a/docs/antora.yml b/docs/antora.yml
deleted file mode 100644
index 15b346da..00000000
--- a/docs/antora.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-name: PROJECT_WITHOUT_SPRING
-version: true
-title: PROJECT_NAME
-nav:
- - modules/ROOT/nav.adoc
-ext:
- collector:
- run:
- command: ./mvnw --no-transfer-progress -B process-resources -Pdocs -pl docs -Dantora-maven-plugin.phase=none -Dgenerate-docs.phase=none -Dgenerate-readme.phase=none -Dgenerate-cloud-resources.phase=none -Dmaven-dependency-plugin-for-docs.phase=none -Dmaven-dependency-plugin-for-docs-classes.phase=none -DskipTests
- local: true
- scan:
- dir: ./target/classes/antora-resources/
diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc
deleted file mode 100644
index 4c1d92a4..00000000
--- a/docs/modules/ROOT/nav.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-* xref:index.adoc[]
-* xref:intro.adoc[]
-* xref:_attributes.adoc[]
-* xref:new-features.adoc[]
-* xref:quickstart.adoc[]
-* xref:config-data.adoc[]
-* xref:authentication.adoc[]
-* xref:secret-backends.adoc[]
-* xref:other-topics.adoc[]
-* xref:appendix.adoc[]
-* xref:_configprops.adoc[]
-* xref:README.adoc[]
-* xref:spring-cloud-vault.adoc[]
diff --git a/docs/modules/ROOT/pages/README.adoc b/docs/modules/ROOT/pages/README.adoc
deleted file mode 100644
index bff0b295..00000000
--- a/docs/modules/ROOT/pages/README.adoc
+++ /dev/null
@@ -1,73 +0,0 @@
-:docs: https://cloud.spring.io/spring-cloud-vault/spring-cloud-vault.html
-
-
-[[features]]
-= Features
-
-[[spring-cloud-vault-config-client]]
-== Spring Cloud Vault Config Client
-
-Specifically for Spring applications:
-
-* Retrieve secrets from Vault and initialize Spring Environment with remote property sources.
-* Obtain {docs}#vault.config.backends.kv[Key-Value secrets] secured with SSL.
-* Generate credentials for
-{docs}#vault.config.backends.mysql[MySQL],
-{docs}#vault.config.backends.postgresql[PostgreSQL],
-{docs}#vault.config.backends.cassandra[Apache Cassandra],
-{docs}#vault.config.backends.mongodb[MongoDB],
-{docs}#vault.config.backends.consul[Consul],
-{docs}#vault.config.backends.aws[AWS], and {docs}#vault.config.backends.rabbitmq[RabbitMQ].
-* {docs}#vault.config.authentication.token[Token],
-{docs}#vault.config.authentication.appid[AppId],
-{docs}#vault.config.authentication.approle[AppRole],
-{docs}#vault.config.authentication.clientcert[Client Certificate],
-{docs}#vault.config.authentication.cubbyhole[Cubbyhole],
-{docs}#vault.config.authentication.awsec2[AWS-EC2] authentication,
-{docs}#vault.config.authentication.awsiam[AWS-IAM] authentication, and
-{docs}#vault.config.authentication.kubernetes[Kubernetes] authentication.
-
-* Bootstrap application context: a parent context for the main application that can be trained to do anything.
-
-[[quick-start]]
-= Quick Start
-
-
-[[building]]
-= Building
-
-[[build-requirements-for-vault]]
-== Build requirements for Vault
-
-Spring Cloud Vault Config requires SSL certificates and a running Vault instance listening on `localhost:8200`.
-Certificates and the Vault setup are scripted, the scripts are located in `src/test/bash`.
-
-The following scripts need to be run prior to building the project for the tests to pass.
-
-[source,bash]
-----
-$ ./src/test/bash/install_vault.sh
-$ ./src/test/bash/create_certificates.sh
-$ ./src/test/bash/local_run_vault.sh
-----
-
-Leave Vault uninitialized, the tests will initialize and unseal Vault.
-They will also create a root token `00000000-0000-0000-0000-000000000000`.
-
-Changes to the documentation should be made to the adocs found under `docs/src/main/asciidoc/`
-
-`README.adoc` can be re-generated via the following
-
-[source,bash]
-----
-$ ./docs/src/main/ruby/generate_readme.sh > README.adoc
-----
-
-This script requires ruby and the asciidoctor gem installed (`gem install asciidoctor`)
-
-include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/docs/src/main/asciidoc/building.adoc[]
-
-[[contributing]]
-= Contributing
-
-include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/docs/src/main/asciidoc/contributing.adoc[]
diff --git a/docs/modules/ROOT/pages/_attributes.adoc b/docs/modules/ROOT/pages/_attributes.adoc
deleted file mode 100644
index 731e8d7c..00000000
--- a/docs/modules/ROOT/pages/_attributes.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-:doctype: book
-:idprefix:
-:idseparator: -
-:tabsize: 4
-:numbered:
-:sectanchors:
-:sectnums:
-:icons: font
-:hide-uri-scheme:
-:docinfo: shared,private
-
-:sc-ext: java
-:project-full-name: Spring Cloud Vault
diff --git a/docs/modules/ROOT/pages/_configprops.adoc b/docs/modules/ROOT/pages/_configprops.adoc
deleted file mode 100644
index 0a77b628..00000000
--- a/docs/modules/ROOT/pages/_configprops.adoc
+++ /dev/null
@@ -1,140 +0,0 @@
-|===
-|Name | Default | Description
-
-|spring.cloud.vault.app-id.app-id-path | `+++app-id+++` | Mount path of the AppId authentication backend.
-|spring.cloud.vault.app-id.network-interface | | Network interface hint for the "MAC_ADDRESS" UserId mechanism.
-|spring.cloud.vault.app-id.user-id | `+++MAC_ADDRESS+++` | UserId mechanism. Can be either "MAC_ADDRESS", "IP_ADDRESS", a string or a class name.
-|spring.cloud.vault.app-role.app-role-path | `+++approle+++` | Mount path of the AppRole authentication backend.
-|spring.cloud.vault.app-role.role | | Name of the role, optional, used for pull-mode.
-|spring.cloud.vault.app-role.role-id | | The RoleId.
-|spring.cloud.vault.app-role.secret-id | | The SecretId.
-|spring.cloud.vault.application-name | `+++application+++` | Application name for AppId authentication.
-|spring.cloud.vault.authentication | |
-|spring.cloud.vault.aws-ec2.aws-ec2-path | `+++aws-ec2+++` | Mount path of the AWS-EC2 authentication backend.
-|spring.cloud.vault.aws-ec2.identity-document | `+++http://169.254.169.254/latest/dynamic/instance-identity/pkcs7+++` | URL of the AWS-EC2 PKCS7 identity document.
-|spring.cloud.vault.aws-ec2.nonce | | Nonce used for AWS-EC2 authentication. An empty nonce defaults to nonce generation.
-|spring.cloud.vault.aws-ec2.role | | Name of the role, optional.
-|spring.cloud.vault.aws-iam.aws-path | `+++aws+++` | Mount path of the AWS authentication backend.
-|spring.cloud.vault.aws-iam.endpoint-uri | | STS server URI. @since 2.2
-|spring.cloud.vault.aws-iam.region | | Name of the region, optional. Inferred by AWS defaults if not set. @since 4.0.1
-|spring.cloud.vault.aws-iam.role | | Name of the role, optional. Defaults to the friendly IAM name if not set.
-|spring.cloud.vault.aws-iam.server-name | | Name of the server used to set {@code X-Vault-AWS-IAM-Server-ID} header in the headers of login requests.
-|spring.cloud.vault.aws.access-key-property | `+++cloud.aws.credentials.accessKey+++` | Target property for the obtained access key.
-|spring.cloud.vault.aws.backend | `+++aws+++` | aws backend path.
-|spring.cloud.vault.aws.credential-type | | aws credential type
-|spring.cloud.vault.aws.enabled | `+++false+++` | Enable aws backend usage.
-|spring.cloud.vault.aws.role | | Role name for credentials.
-|spring.cloud.vault.aws.role-arn | | Role arn for assumed_role in case we have multiple roles associated with the vault role. @since 3.0.2
-|spring.cloud.vault.aws.secret-key-property | `+++cloud.aws.credentials.secretKey+++` | Target property for the obtained secret key.
-|spring.cloud.vault.aws.session-token-key-property | `+++cloud.aws.credentials.sessionToken+++` | Target property for the obtained secret key.
-|spring.cloud.vault.aws.ttl | `+++0+++` | TTL for sts tokens. Defaults to whatever the vault Role may have for Max. Also limited to what AWS supports to be the max for STS. @since 3.0.2
-|spring.cloud.vault.azure-msi.azure-path | `+++azure+++` | Mount path of the Azure MSI authentication backend.
-|spring.cloud.vault.azure-msi.identity-token-service | | Identity token service URI. @since 3.0
-|spring.cloud.vault.azure-msi.metadata-service | | Instance metadata service URI. @since 3.0
-|spring.cloud.vault.azure-msi.role | | Name of the role.
-|spring.cloud.vault.cassandra.backend | `+++cassandra+++` | Cassandra backend path.
-|spring.cloud.vault.cassandra.enabled | `+++false+++` | Enable cassandra backend usage.
-|spring.cloud.vault.cassandra.password-property | `+++spring.data.cassandra.password+++` | Target property for the obtained password.
-|spring.cloud.vault.cassandra.role | | Role name for credentials.
-|spring.cloud.vault.cassandra.static-role | `+++false+++` | Enable static role usage. @since 2.2
-|spring.cloud.vault.cassandra.username-property | `+++spring.data.cassandra.username+++` | Target property for the obtained username.
-|spring.cloud.vault.config.lifecycle.enabled | `+++true+++` | Enable lifecycle management.
-|spring.cloud.vault.config.lifecycle.expiry-threshold | | The expiry threshold. {@link Lease} is renewed the given {@link Duration} before it expires. @since 2.2
-|spring.cloud.vault.config.lifecycle.lease-endpoints | | Set the {@link LeaseEndpoints} to delegate renewal/revocation calls to. {@link LeaseEndpoints} encapsulates differences between Vault versions that affect the location of renewal/revocation endpoints. Can be {@link LeaseEndpoints#SysLeases} for version 0.8 or above of Vault or {@link LeaseEndpoints#Legacy} for older versions (the default). @since 2.2
-|spring.cloud.vault.config.lifecycle.min-renewal | | The time period that is at least required before renewing a lease. @since 2.2
-|spring.cloud.vault.config.order | `+++0+++` | Used to set a {@link org.springframework.core.env.PropertySource} priority. This is useful to use Vault as an override on other property sources. @see org.springframework.core.PriorityOrdered
-|spring.cloud.vault.connection-timeout | `+++5000+++` | Connection timeout.
-|spring.cloud.vault.consul.backend | `+++consul+++` | Consul backend path.
-|spring.cloud.vault.consul.enabled | `+++false+++` | Enable consul backend usage.
-|spring.cloud.vault.consul.role | | Role name for credentials.
-|spring.cloud.vault.consul.token-property | `+++spring.cloud.consul.token+++` | Target property for the obtained token.
-|spring.cloud.vault.couchbase.backend | `+++database+++` | Couchbase backend path.
-|spring.cloud.vault.couchbase.enabled | `+++false+++` | Enable couchbase backend usage.
-|spring.cloud.vault.couchbase.password-property | `+++spring.couchbase.password+++` | Target property for the obtained password.
-|spring.cloud.vault.couchbase.role | | Role name for credentials.
-|spring.cloud.vault.couchbase.static-role | `+++false+++` | Enable static role usage.
-|spring.cloud.vault.couchbase.username-property | `+++spring.couchbase.username+++` | Target property for the obtained username.
-|spring.cloud.vault.database.backend | `+++database+++` | Database backend path.
-|spring.cloud.vault.database.enabled | `+++false+++` | Enable database backend usage.
-|spring.cloud.vault.database.password-property | `+++spring.datasource.password+++` | Target property for the obtained password.
-|spring.cloud.vault.database.role | | Role name for credentials.
-|spring.cloud.vault.database.static-role | `+++false+++` | Enable static role usage.
-|spring.cloud.vault.database.username-property | `+++spring.datasource.username+++` | Target property for the obtained username.
-|spring.cloud.vault.databases | |
-|spring.cloud.vault.discovery.enabled | `+++false+++` | Flag to indicate that Vault server discovery is enabled (vault server URL will be looked up via discovery).
-|spring.cloud.vault.discovery.service-id | `+++vault+++` | Service id to locate Vault.
-|spring.cloud.vault.elasticsearch.backend | `+++database+++` | Database backend path.
-|spring.cloud.vault.elasticsearch.enabled | `+++false+++` | Enable elasticsearch backend usage.
-|spring.cloud.vault.elasticsearch.password-property | `+++spring.elasticsearch.rest.password+++` | Target property for the obtained password.
-|spring.cloud.vault.elasticsearch.role | | Role name for credentials.
-|spring.cloud.vault.elasticsearch.static-role | `+++false+++` | Enable static role usage.
-|spring.cloud.vault.elasticsearch.username-property | `+++spring.elasticsearch.rest.username+++` | Target property for the obtained username.
-|spring.cloud.vault.enabled | `+++true+++` | Enable Vault config server.
-|spring.cloud.vault.fail-fast | `+++false+++` | Fail fast if data cannot be obtained from Vault.
-|spring.cloud.vault.gcp-gce.gcp-path | `+++gcp+++` | Mount path of the Kubernetes authentication backend.
-|spring.cloud.vault.gcp-gce.role | | Name of the role against which the login is being attempted.
-|spring.cloud.vault.gcp-gce.service-account | | Optional service account id. Using the default id if left unconfigured.
-|spring.cloud.vault.gcp-iam.credentials.encoded-key | | The base64 encoded contents of an OAuth2 account private key in JSON format.
-|spring.cloud.vault.gcp-iam.credentials.location | | Location of the OAuth2 credentials private key.
Since this is a Resource, the private key can be in a multitude of locations, such as a local file system, classpath, URL, etc.
-|spring.cloud.vault.gcp-iam.gcp-path | `+++gcp+++` | Mount path of the Kubernetes authentication backend.
-|spring.cloud.vault.gcp-iam.jwt-validity | `+++15m+++` | Validity of the JWT token.
-|spring.cloud.vault.gcp-iam.project-id | | Overrides the GCP project Id.
-|spring.cloud.vault.gcp-iam.role | | Name of the role against which the login is being attempted.
-|spring.cloud.vault.gcp-iam.service-account-id | | Overrides the GCP service account Id.
-|spring.cloud.vault.host | `+++localhost+++` | Vault server host.
-|spring.cloud.vault.kubernetes.kubernetes-path | `+++kubernetes+++` | Mount path of the Kubernetes authentication backend.
-|spring.cloud.vault.kubernetes.role | | Name of the role against which the login is being attempted.
-|spring.cloud.vault.kubernetes.service-account-token-file | `+++/var/run/secrets/kubernetes.io/serviceaccount/token+++` | Path to the service account token file.
-|spring.cloud.vault.kv.application-name | `+++application+++` | Application name to be used for the context.
-|spring.cloud.vault.kv.backend | `+++secret+++` | Name of the default backend.
-|spring.cloud.vault.kv.backend-version | `+++2+++` | Key-Value backend version. Currently supported versions are:
Version 1 (unversioned key-value backend).
Version 2 (versioned key-value backend).
-|spring.cloud.vault.kv.default-context | `+++application+++` | Name of the default context.
-|spring.cloud.vault.kv.enabled | `+++true+++` | Enable the key-value backend.
-|spring.cloud.vault.kv.profile-separator | `+++/+++` | Profile-separator to combine application name and profile.
-|spring.cloud.vault.kv.profiles | | List of active profiles. @since 3.0
-|spring.cloud.vault.mongodb.backend | `+++mongodb+++` | MongoDB backend path.
-|spring.cloud.vault.mongodb.enabled | `+++false+++` | Enable mongodb backend usage.
-|spring.cloud.vault.mongodb.password-property | `+++spring.data.mongodb.password+++` | Target property for the obtained password.
-|spring.cloud.vault.mongodb.role | | Role name for credentials.
-|spring.cloud.vault.mongodb.static-role | `+++false+++` | Enable static role usage. @since 2.2
-|spring.cloud.vault.mongodb.username-property | `+++spring.data.mongodb.username+++` | Target property for the obtained username.
-|spring.cloud.vault.mysql.backend | `+++mysql+++` | mysql backend path.
-|spring.cloud.vault.mysql.enabled | `+++false+++` | Enable mysql backend usage.
-|spring.cloud.vault.mysql.password-property | `+++spring.datasource.password+++` | Target property for the obtained username.
-|spring.cloud.vault.mysql.role | | Role name for credentials.
-|spring.cloud.vault.mysql.username-property | `+++spring.datasource.username+++` | Target property for the obtained username.
-|spring.cloud.vault.namespace | | Vault namespace (requires Vault Enterprise).
-|spring.cloud.vault.pcf.instance-certificate | | Path to the instance certificate (PEM). Defaults to {@code CF_INSTANCE_CERT} env variable.
-|spring.cloud.vault.pcf.instance-key | | Path to the instance key (PEM). Defaults to {@code CF_INSTANCE_KEY} env variable.
-|spring.cloud.vault.pcf.pcf-path | `+++pcf+++` | Mount path of the Kubernetes authentication backend.
-|spring.cloud.vault.pcf.role | | Name of the role against which the login is being attempted.
-|spring.cloud.vault.port | `+++8200+++` | Vault server port.
-|spring.cloud.vault.postgresql.backend | `+++postgresql+++` | postgresql backend path.
-|spring.cloud.vault.postgresql.enabled | `+++false+++` | Enable postgresql backend usage.
-|spring.cloud.vault.postgresql.password-property | `+++spring.datasource.password+++` | Target property for the obtained username.
-|spring.cloud.vault.postgresql.role | | Role name for credentials.
-|spring.cloud.vault.postgresql.username-property | `+++spring.datasource.username+++` | Target property for the obtained username.
-|spring.cloud.vault.rabbitmq.backend | `+++rabbitmq+++` | rabbitmq backend path.
-|spring.cloud.vault.rabbitmq.enabled | `+++false+++` | Enable rabbitmq backend usage.
-|spring.cloud.vault.rabbitmq.password-property | `+++spring.rabbitmq.password+++` | Target property for the obtained password.
-|spring.cloud.vault.rabbitmq.role | | Role name for credentials.
-|spring.cloud.vault.rabbitmq.username-property | `+++spring.rabbitmq.username+++` | Target property for the obtained username.
-|spring.cloud.vault.reactive.enabled | `+++true+++` | Flag to indicate that reactive discovery is enabled
-|spring.cloud.vault.read-timeout | `+++15000+++` | Read timeout.
-|spring.cloud.vault.scheme | `+++https+++` | Protocol scheme. Can be either "http" or "https".
-|spring.cloud.vault.session.lifecycle.enabled | `+++true+++` | Enable session lifecycle management.
-|spring.cloud.vault.session.lifecycle.expiry-threshold | `+++7s+++` | The expiry threshold for a {@link LoginToken}. The threshold represents a minimum TTL duration to consider a login token as valid. Tokens with a shorter TTL are considered expired and are not used anymore. Should be greater than {@code refreshBeforeExpiry} to prevent token expiry.
-|spring.cloud.vault.session.lifecycle.refresh-before-expiry | `+++5s+++` | The time period that is at least required before renewing the {@link LoginToken}.
-|spring.cloud.vault.ssl.cert-auth-path | `+++cert+++` | Mount path of the TLS cert authentication backend.
-|spring.cloud.vault.ssl.enabled-cipher-suites | | List of enabled SSL/TLS cipher suites. @since 3.0.2
-|spring.cloud.vault.ssl.enabled-protocols | | List of enabled SSL/TLS protocol. @since 3.0.2
-|spring.cloud.vault.ssl.key-store | | Trust store that holds certificates and private keys.
-|spring.cloud.vault.ssl.key-store-password | | Password used to access the key store.
-|spring.cloud.vault.ssl.key-store-type | | Type of the key store. @since 3.0
-|spring.cloud.vault.ssl.trust-store | | Trust store that holds SSL certificates.
-|spring.cloud.vault.ssl.trust-store-password | | Password used to access the trust store.
-|spring.cloud.vault.ssl.trust-store-type | | Type of the trust store. @since 3.0
-|spring.cloud.vault.token | | Static vault token. Required if {@link #authentication} is {@code TOKEN}.
-|spring.cloud.vault.uri | | Vault URI. Can be set with scheme, host and port.
-
-|===
diff --git a/docs/modules/ROOT/pages/appendix.adoc b/docs/modules/ROOT/pages/appendix.adoc
deleted file mode 100644
index eef1c905..00000000
--- a/docs/modules/ROOT/pages/appendix.adoc
+++ /dev/null
@@ -1,13 +0,0 @@
-:numbered!:
-[appendix]
-[[common-application-properties]]
-= Common application properties
-:page-section-summary-toc: 1
-
-
-Various properties can be specified inside your `application.properties` file, inside your `application.yml` file, or as command line switches.
-This appendix provides a list of common {project-full-name} properties and references to the underlying classes that consume them.
-
-NOTE: Property contributions can come from additional jar files on your classpath, so you should not consider this an exhaustive list.
-Also, you can define your own properties.
-
diff --git a/docs/modules/ROOT/pages/authentication.adoc b/docs/modules/ROOT/pages/authentication.adoc
deleted file mode 100644
index e6bb7e6d..00000000
--- a/docs/modules/ROOT/pages/authentication.adoc
+++ /dev/null
@@ -1,725 +0,0 @@
-[[vault.config.authentication]]
-= Authentication methods
-
-Different organizations have different requirements for security and authentication.
-Vault reflects that need by shipping multiple authentication methods.
-Spring Cloud Vault supports token and AppId authentication.
-
-[[vault.config.authentication.token]]
-== Token authentication
-
-Tokens are the core method for authentication within Vault.
-Token authentication requires a static token to be provided using the configuration.
-As a fallback, the token may also be retrieved from `~/.vault-token` which is the default location used by the Vault CLI to cache tokens.
-
-NOTE: Token authentication is the default authentication method.
-If a token is disclosed an unintended party gains access to Vault and can access secrets for the intended client.
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: TOKEN
- token: 00000000-0000-0000-0000-000000000000
-----
-====
-
-* `authentication` setting this value to `TOKEN` selects the Token authentication method
-* `token` sets the static token to use. If missing or empty, then an attempt will be made to retrieve a token from ~/.vault-token.
-
-See also:
-
-* https://www.vaultproject.io/docs/concepts/tokens.html[Vault Documentation: Tokens]
-* https://www.vaultproject.io/docs/commands/login[Vault Documentation: CLI login]
-* https://www.vaultproject.io/docs/commands/token-helper[Vault Documentation: CLI default to ~/.vault-token]
-
-[[vault.config.authentication.vault-agent]]
-== Vault Agent authentication
-
-Vault ships a sidecar utility with Vault Agent since version 0.11.0. Vault Agent implements the functionality of Spring Vault's `SessionManager`
-with its Auto-Auth feature.
-Applications can reuse cached session credentials by relying on Vault Agent running on `localhost`.
-Spring Vault can send requests without the
-`X-Vault-Token` header.
-Disable Spring Vault's authentication infrastructure to disable client authentication and session management.
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: NONE
-----
-====
-
-* `authentication` setting this value to `NONE` disables `ClientAuthentication`
-and `SessionManager`.
-
-See also: https://www.vaultproject.io/docs/agent/index.html[Vault Documentation: Agent]
-
-[[vault.config.authentication.appid]]
-== AppId authentication
-
-Vault supports https://www.vaultproject.io/docs/auth/app-id.html[AppId]
-authentication that consists of two hard to guess tokens.
-The AppId defaults to `spring.application.name` that is statically configured.
-The second token is the UserId which is a part determined by the application, usually related to the runtime environment.
-IP address, Mac address or a Docker container name are good examples.
-Spring Cloud Vault Config supports IP address, Mac address and static UserId's (e.g. supplied via System properties).
-The IP and Mac address are represented as Hex-encoded SHA256 hash.
-
-IP address-based UserId's use the local host's IP address.
-
-.application.yml using SHA256 IP-Address UserId's
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: APPID
- app-id:
- user-id: IP_ADDRESS
-----
-====
-
-* `authentication` setting this value to `APPID` selects the AppId authentication method
-* `app-id-path` sets the path of the AppId mount to use
-* `user-id` sets the UserId method.
-Possible values are `IP_ADDRESS`,
-`MAC_ADDRESS` or a class name implementing a custom `AppIdUserIdMechanism`
-
-The corresponding command to generate the IP address UserId from a command line is:
-
-----
-$ echo -n 192.168.99.1 | sha256sum
-----
-
-NOTE: Including the line break of `echo` leads to a different hash value so make sure to include the `-n` flag.
-
-Mac address-based UserId's obtain their network device from the localhost-bound device.
-The configuration also allows specifying a `network-interface` hint to pick the right device.
-The value of
-`network-interface` is optional and can be either an interface name or interface index (0-based).
-
-.application.yml using SHA256 Mac-Address UserId's
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: APPID
- app-id:
- user-id: MAC_ADDRESS
- network-interface: eth0
-----
-====
-
-* `network-interface` sets network interface to obtain the physical address
-
-
-The corresponding command to generate the IP address UserId from a command line is:
-
-----
-$ echo -n 0AFEDE1234AC | sha256sum
-----
-
-NOTE: The Mac address is specified uppercase and without colons.
-Including the line break of `echo` leads to a different hash value so make sure to include the `-n` flag.
-
-[[custom-userid]]
-=== Custom UserId
-
-The UserId generation is an open mechanism.
-You can set
-`spring.cloud.vault.app-id.user-id` to any string and the configured value will be used as static UserId.
-
-A more advanced approach lets you set `spring.cloud.vault.app-id.user-id` to a classname.
-This class must be on your classpath and must implement the `org.springframework.cloud.vault.AppIdUserIdMechanism` interface and the `createUserId` method.
-Spring Cloud Vault will obtain the UserId by calling `createUserId` each time it authenticates using AppId to obtain a token.
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: APPID
- app-id:
- user-id: com.examlple.MyUserIdMechanism
-----
-====
-
-.MyUserIdMechanism.java
-====
-[source,yaml]
-----
-public class MyUserIdMechanism implements AppIdUserIdMechanism {
-
- @Override
- public String createUserId() {
- String userId = ...
- return userId;
- }
-}
-----
-====
-
-See also: https://www.vaultproject.io/docs/auth/app-id.html[Vault Documentation: Using the App ID auth backend]
-
-[[approle-authentication]]
-== AppRole authentication
-
-https://www.vaultproject.io/docs/auth/app-id.html[AppRole] is intended for machine authentication, like the deprecated (since Vault 0.6.1) xref:authentication.adoc#vault.config.authentication.appid[AppId authentication].
-AppRole authentication consists of two hard to guess (secret) tokens: RoleId and SecretId.
-
-Spring Vault supports various AppRole scenarios (push/pull mode and wrapped).
-
-RoleId and optionally SecretId must be provided by configuration, Spring Vault will not look up these or create a custom SecretId.
-
-.application.yml with AppRole authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: APPROLE
- app-role:
- role-id: bde2076b-cccb-3cf0-d57e-bca7b1e83a52
-----
-====
-
-The following scenarios are supported along the required configuration details:
-
-.Configuration
-|===
-| *Method* | *RoleId* | *SecretId*| *RoleName* | *Token*
-| Provided RoleId/SecretId | Provided | Provided | |
-| Provided RoleId without SecretId | Provided | | |
-| Provided RoleId, Pull SecretId | Provided | | Provided | Provided
-| Pull RoleId, provided SecretId | | Provided | Provided | Provided
-| Full Pull Mode | | | Provided | Provided
-| Wrapped | | | | Provided
-| Wrapped RoleId, provided SecretId | | Provided | | Provided
-| Provided RoleId, wrapped SecretId | Provided | | | Provided
-|===
-
-.Pull/Push/Wrapped Matrix
-|===
-| *RoleId* | *SecretId* | *Supported*
-| Provided | Provided | ✅
-| Provided | Pull | ✅
-| Provided | Wrapped | ✅
-| Provided | Absent | ✅
-| Pull | Provided | ✅
-| Pull | Pull | ✅
-| Pull | Wrapped | ❌
-| Pull | Absent | ❌
-| Wrapped | Provided | ✅
-| Wrapped | Pull | ❌
-| Wrapped | Wrapped | ✅
-| Wrapped | Absent | ❌
-|===
-
-NOTE: You can use still all combinations of push/pull/wrapped modes by providing a configured `AppRoleAuthentication` bean within the context.
-Spring Cloud Vault cannot derive all possible AppRole combinations from the configuration properties.
-
-IMPORTANT: AppRole authentication is limited to simple pull mode using reactive infrastructure.
-Full pull mode is not yet supported.
-Using Spring Cloud Vault with the Spring WebFlux stack enables Vault's reactive auto-configuration which can be disabled by setting `spring.cloud.vault.reactive.enabled=false`.
-
-.application.yml with all AppRole authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: APPROLE
- app-role:
- role-id: bde2076b-cccb-3cf0-d57e-bca7b1e83a52
- secret-id: 1696536f-1976-73b1-b241-0b4213908d39
- role: my-role
- app-role-path: approle
-----
-====
-
-* `role-id` sets the RoleId.
-* `secret-id` sets the SecretId.
-SecretId can be omitted if AppRole is configured without requiring SecretId (See `bind_secret_id`).
-* `role`: sets the AppRole name for pull mode.
-* `app-role-path` sets the path of the approle authentication mount to use.
-
-See also: https://www.vaultproject.io/docs/auth/approle.html[Vault Documentation: Using the AppRole auth backend]
-
-[[vault.config.authentication.awsec2]]
-== AWS-EC2 authentication
-
-The https://www.vaultproject.io/docs/auth/aws-ec2.html[aws-ec2]
-auth backend provides a secure introduction mechanism for AWS EC2 instances, allowing automated retrieval of a Vault token.
-Unlike most Vault authentication backends, this backend does not require first-deploying, or provisioning security-sensitive credentials (tokens, username/password, client certificates, etc.).
-Instead, it treats AWS as a Trusted Third Party and uses the cryptographically signed dynamic metadata information that uniquely represents each EC2 instance.
-
-.application.yml using AWS-EC2 Authentication
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AWS_EC2
-----
-====
-
-AWS-EC2 authentication enables nonce by default to follow the Trust On First Use (TOFU) principle.
-Any unintended party that gains access to the PKCS#7 identity metadata can authenticate against Vault.
-
-During the first login, Spring Cloud Vault generates a nonce that is stored in the auth backend aside the instance Id.
-Re-authentication requires the same nonce to be sent.
-Any other party does not have the nonce and can raise an alert in Vault for further investigation.
-
-The nonce is kept in memory and is lost during application restart.
-You can configure a static nonce with `spring.cloud.vault.aws-ec2.nonce`.
-
-AWS-EC2 authentication roles are optional and default to the AMI.
-You can configure the authentication role by setting the
-`spring.cloud.vault.aws-ec2.role` property.
-
-.application.yml with configured role
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AWS_EC2
- aws-ec2:
- role: application-server
-----
-====
-
-.application.yml with all AWS EC2 authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AWS_EC2
- aws-ec2:
- role: application-server
- aws-ec2-path: aws-ec2
- identity-document: http://...
- nonce: my-static-nonce
-----
-====
-
-* `authentication` setting this value to `AWS_EC2` selects the AWS EC2 authentication method
-* `role` sets the name of the role against which the login is being attempted.
-* `aws-ec2-path` sets the path of the AWS EC2 mount to use
-* `identity-document` sets URL of the PKCS#7 AWS EC2 identity document
-* `nonce` used for AWS-EC2 authentication.
-An empty nonce defaults to nonce generation
-
-See also: https://www.vaultproject.io/docs/auth/aws.html[Vault Documentation: Using the aws auth backend]
-
-[[vault.config.authentication.awsiam]]
-== AWS-IAM authentication
-
-The https://www.vaultproject.io/docs/auth/aws-ec2.html[aws] backend provides a secure authentication mechanism for AWS IAM roles, allowing the automatic authentication with vault based on the current IAM role of the running application.
-Unlike most Vault authentication backends, this backend does not require first-deploying, or provisioning security-sensitive credentials (tokens, username/password, client certificates, etc.).
-Instead, it treats AWS as a Trusted Third Party and uses the 4 pieces of information signed by the caller with their IAM credentials to verify that the caller is indeed using that IAM role.
-
-The current IAM role the application is running in is automatically calculated.
-If you are running your application on AWS ECS then the application will use the IAM role assigned to the ECS task of the running container.
-If you are running your application naked on top of an EC2 instance then the IAM role used will be the one assigned to the EC2 instance.
-
-When using the AWS-IAM authentication you must create a role in Vault and assign it to your IAM role.
-An empty `role` defaults to the friendly name the current IAM role.
-
-.application.yml with required AWS-IAM Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AWS_IAM
-----
-====
-
-.application.yml with all AWS-IAM Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AWS_IAM
- aws-iam:
- region: aws-global
- role: my-dev-role
- aws-path: aws
- server-name: some.server.name
- endpoint-uri: https://sts.eu-central-1.amazonaws.com
-----
-====
-
-* `region` sets the name of the AWS region. If not supplied, the region will be determined by AWS defaults.
-* `role` sets the name of the role against which the login is being attempted.
-This should be bound to your IAM role.
-If one is not supplied then the friendly name of the current IAM user will be used as the vault role.
-* `aws-path` sets the path of the AWS mount to use
-* `server-name` sets the value to use for the `X-Vault-AWS-IAM-Server-ID` header preventing certain types of replay attacks.
-* `endpoint-uri` sets the value to use for the AWS STS API used for the `iam_request_url` parameter.
-
-AWS-IAM requires the AWS Java SDK v2 dependency (`software.amazon.awssdk:auth`) as the authentication implementation uses AWS SDK types for credentials and request signing.
-
-See also: https://www.vaultproject.io/docs/auth/aws.html[Vault Documentation: Using the aws auth backend]
-
-[[vault.config.authentication.azuremsi]]
-== Azure MSI authentication
-
-The https://www.vaultproject.io/docs/auth/azure.html[azure]
-auth backend provides a secure introduction mechanism for Azure VM instances, allowing automated retrieval of a Vault token.
-Unlike most Vault authentication backends, this backend does not require first-deploying, or provisioning security-sensitive credentials (tokens, username/password, client certificates, etc.).
-Instead, it treats Azure as a Trusted Third Party and uses the managed service identity and instance metadata information that can be bound to a VM instance.
-
-.application.yml with required Azure Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AZURE_MSI
- azure-msi:
- role: my-dev-role
-----
-====
-
-.application.yml with all Azure Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: AZURE_MSI
- azure-msi:
- role: my-dev-role
- azure-path: azure
- metadata-service: http://169.254.169.254/metadata/instance…
- identity-token-service: http://169.254.169.254/metadata/identity…
-----
-====
-
-* `role` sets the name of the role against which the login is being attempted.
-* `azure-path` sets the path of the Azure mount to use
-* `metadata-service` sets the URI at which to access the instance metadata service
-* `identity-token-service` sets the URI at which to access the identity token service
-
-Azure MSI authentication obtains environmental details about the virtual machine (subscription Id, resource group, VM name) from the instance metadata service.
-The Vault server has Resource Id defaults to `https://vault.hashicorp.com`.
-To change this, set `spring.cloud.vault.azure-msi.identity-token-service` accordingly.
-
-See also:
-
-* https://www.vaultproject.io/docs/auth/azure.html[Vault Documentation: Using the azure auth backend]
-* https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service[Azure Documentation: Azure Instance Metadata Service]
-
-[[vault.config.authentication.clientcert]]
-== TLS certificate authentication
-
-The `cert` auth backend allows authentication using SSL/TLS client certificates that are either signed by a CA or self-signed.
-
-To enable `cert` authentication you need to:
-
-1. Use SSL, see xref:other-topics.adoc#vault.config.ssl[Vault Client SSL configuration]
-2. Configure a Java `Keystore` that contains the client certificate and the private key
-3. Set the `spring.cloud.vault.authentication` to `CERT`
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: CERT
- ssl:
- key-store: classpath:keystore.jks
- key-store-password: changeit
- key-store-type: JKS
- cert-auth-path: cert
-----
-====
-
-See also: https://www.vaultproject.io/docs/auth/cert.html[Vault Documentation: Using the Cert auth backend]
-
-[[vault.config.authentication.cubbyhole]]
-== Cubbyhole authentication
-
-Cubbyhole authentication uses Vault primitives to provide a secured authentication workflow.
-Cubbyhole authentication uses tokens as primary login method.
-An ephemeral token is used to obtain a second, login VaultToken from Vault's Cubbyhole secret backend.
-The login token is usually longer-lived and used to interact with Vault.
-The login token will be retrieved from a wrapped response stored at `/cubbyhole/response`.
-
-*Creating a wrapped token*
-
-NOTE: Response Wrapping for token creation requires Vault 0.6.0 or higher.
-
-.Creating and storing tokens
-====
-[source,shell]
-----
-$ vault token-create -wrap-ttl="10m"
-Key Value
---- -----
-wrapping_token: 397ccb93-ff6c-b17b-9389-380b01ca2645
-wrapping_token_ttl: 0h10m0s
-wrapping_token_creation_time: 2016-09-18 20:29:48.652957077 +0200 CEST
-wrapped_accessor: 46b6aebb-187f-932a-26d7-4f3d86a68319
-----
-====
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: CUBBYHOLE
- token: 397ccb93-ff6c-b17b-9389-380b01ca2645
-----
-====
-
-See also:
-
-* https://www.vaultproject.io/docs/concepts/tokens.html[Vault Documentation: Tokens]
-* https://www.vaultproject.io/docs/secrets/cubbyhole/index.html[Vault Documentation: Cubbyhole Secret Backend]
-* https://www.vaultproject.io/docs/concepts/response-wrapping.html[Vault Documentation: Response Wrapping]
-
-[[vault.config.authentication.gcpgce]]
-== GCP-GCE authentication
-
-The https://www.vaultproject.io/docs/auth/gcp.html[gcp]
-auth backend allows Vault login by using existing GCP (Google Cloud Platform) IAM and GCE credentials.
-
-GCP GCE (Google Compute Engine) authentication creates a signature in the form of a JSON Web Token (JWT) for a service account.
-A JWT for a Compute Engine instance is obtained from the GCE metadata service using https://cloud.google.com/compute/docs/instances/verifying-instance-identity[Instance identification].
-This API creates a JSON Web Token that can be used to confirm the instance identity.
-
-Unlike most Vault authentication backends, this backend does not require first-deploying, or provisioning security-sensitive credentials (tokens, username/password, client certificates, etc.).
-Instead, it treats GCP as a Trusted Third Party and uses the cryptographically signed dynamic metadata information that uniquely represents each GCP service account.
-
-.application.yml with required GCP-GCE Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: GCP_GCE
- gcp-gce:
- role: my-dev-role
-----
-====
-
-.application.yml with all GCP-GCE Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: GCP_GCE
- gcp-gce:
- gcp-path: gcp
- role: my-dev-role
- service-account: my-service@projectid.iam.gserviceaccount.com
-----
-====
-
-* `role` sets the name of the role against which the login is being attempted.
-* `gcp-path` sets the path of the GCP mount to use
-* `service-account` allows overriding the service account Id to a specific value.
-Defaults to the `default` service account.
-
-See also:
-
-* https://www.vaultproject.io/docs/auth/gcp.html[Vault Documentation: Using the GCP auth backend]
-* https://cloud.google.com/compute/docs/instances/verifying-instance-identity[GCP Documentation: Verifying the Identity of Instances]
-
-[[vault.config.authentication.gcpiam]]
-== GCP-IAM authentication
-
-The https://www.vaultproject.io/docs/auth/gcp.html[gcp]
-auth backend allows Vault login by using existing GCP (Google Cloud Platform) IAM and GCE credentials.
-
-GCP IAM authentication creates a signature in the form of a JSON Web Token (JWT) for a service account.
-A JWT for a service account is obtained by calling GCP IAM's https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/signJwt[`projects.serviceAccounts.signJwt`] API. The caller authenticates against GCP IAM and proves thereby its identity.
-This Vault backend treats GCP as a Trusted Third Party.
-
-IAM credentials can be obtained from either the runtime environment , specifically the https://cloud.google.com/docs/authentication/production[`GOOGLE_APPLICATION_CREDENTIALS`]
-environment variable, the Google Compute metadata service, or supplied externally as e.g. JSON or base64 encoded.
-JSON is the preferred form as it carries the project id and service account identifier required for calling ``projects.serviceAccounts.signJwt``.
-
-.application.yml with required GCP-IAM Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: GCP_IAM
- gcp-iam:
- role: my-dev-role
-----
-====
-
-.application.yml with all GCP-IAM Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: GCP_IAM
- gcp-iam:
- credentials:
- location: classpath:credentials.json
- encoded-key: e+KApn0=
- gcp-path: gcp
- jwt-validity: 15m
- project-id: my-project-id
- role: my-dev-role
- service-account-id: my-service@projectid.iam.gserviceaccount.com
-----
-====
-
-* `role` sets the name of the role against which the login is being attempted.
-* `credentials.location` path to the credentials resource that contains Google credentials in JSON format.
-* `credentials.encoded-key` the base64 encoded contents of an OAuth2 account private key in the JSON format.
-* `gcp-path` sets the path of the GCP mount to use
-* `jwt-validity` configures the JWT token validity.
-Defaults to 15 minutes.
-* `project-id` allows overriding the project Id to a specific value.
-Defaults to the project Id from the obtained credential.
-* `service-account` allows overriding the service account Id to a specific value.
-Defaults to the service account from the obtained credential.
-
-GCP IAM authentication requires the Google Cloud Java SDK dependency (`com.google.apis:google-api-services-iam` and `com.google.auth:google-auth-library-oauth2-http`) as the authentication implementation uses Google APIs for credentials and JWT signing.
-
-NOTE: Google credentials require an OAuth 2 token maintaining the token lifecycle.
-All API is synchronous therefore, `GcpIamAuthentication` does not support `AuthenticationSteps` which is required for reactive usage.
-
-See also:
-
-* https://www.vaultproject.io/docs/auth/gcp.html[Vault Documentation: Using the GCP auth backend]
-* https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/signJwt[GCP Documentation: projects.serviceAccounts.signJwt]
-
-[[vault.authentication.gcpiam]]
-[[vault.config.authentication.kubernetes]]
-== Kubernetes authentication
-
-Kubernetes authentication mechanism (since Vault 0.8.3) allows to authenticate with Vault using a Kubernetes Service Account Token.
-The authentication is role based and the role is bound to a service account name and a namespace.
-
-A file containing a JWT token for a pod’s service account is automatically mounted at `/var/run/secrets/kubernetes.io/serviceaccount/token`.
-
-.application.yml with all Kubernetes authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: KUBERNETES
- kubernetes:
- role: my-dev-role
- kubernetes-path: kubernetes
- service-account-token-file: /var/run/secrets/kubernetes.io/serviceaccount/token
-----
-====
-
-* `role` sets the Role.
-* `kubernetes-path` sets the path of the Kubernetes mount to use.
-* `service-account-token-file` sets the location of the file containing the Kubernetes Service Account Token.
-Defaults to `/var/run/secrets/kubernetes.io/serviceaccount/token`.
-
-See also:
-
-* https://www.vaultproject.io/docs/auth/kubernetes.html[Vault Documentation: Kubernetes]
-* https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/[Kubernetes Documentation: Configure Service Accounts for Pods]
-
-[[vault.config.authentication.pcf]]
-== Pivotal CloudFoundry authentication
-
-The https://www.vaultproject.io/docs/auth/pcf.html[pcf]
-auth backend provides a secure introduction mechanism for applications running within Pivotal's CloudFoundry instances allowing automated retrieval of a Vault token.
-Unlike most Vault authentication backends, this backend does not require first-deploying, or provisioning security-sensitive credentials (tokens, username/password, client certificates, etc.) as identity provisioning is handled by PCF itself.
-Instead, it treats PCF as a Trusted Third Party and uses the managed instance identity.
-
-.application.yml with required PCF Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: PCF
- pcf:
- role: my-dev-role
-----
-====
-
-.application.yml with all PCF Authentication properties
-====
-[source,yaml]
-----
-spring.cloud.vault:
- authentication: PCF
- pcf:
- role: my-dev-role
- pcf-path: path
- instance-certificate: /etc/cf-instance-credentials/instance.crt
- instance-key: /etc/cf-instance-credentials/instance.key
-----
-====
-
-* `role` sets the name of the role against which the login is being attempted.
-* `pcf-path` sets the path of the PCF mount to use.
-* `instance-certificate` sets the path to the PCF instance identity certificate.
-Defaults to `${CF_INSTANCE_CERT}` env variable.
-* `instance-key` sets the path to the PCF instance identity key.
-Defaults to `${CF_INSTANCE_KEY}` env variable.
-
-NOTE: PCF authentication requires BouncyCastle (bcpkix-jdk15on) to be on the classpath for RSA PSS signing.
-
-See also: https://www.vaultproject.io/docs/auth/pcf.html[Vault Documentation: Using the pcf auth backend]
-
-[[vault.config.acl]]
-= ACL Requirements
-
-This section explains which paths are accessed by Spring Vault so you can derive your policy declarations from the required capabilities.
-
-|===
-|Capability |Associated HTTP verbs
-
-|create
-|`POST`/`PUT`
-
-|read
-|`GET`
-
-|update
-|`POST`/`PUT`
-
-|delete
-|`DELETE`
-
-|list
-|`LIST` (`GET`)
-|===
-
-
-See also https://www.vaultproject.io/guides/identity/policies.
-
-[[authentication]]
-== Authentication
-
-Login: `POST auth/$authMethod/login`
-
-[[keyvalue-mount-discovery]]
-== KeyValue Mount Discovery
-
-`GET sys/internal/ui/mounts/$mountPath`
-
-[[secretleasecontainer]]
-== SecretLeaseContainer
-
-`SecretLeaseContainer` uses different paths depending on the configured lease endpoint.
-
-`LeaseEndpoints.Legacy`
-
-* Revocation: `PUT sys/revoke`
-* Renewal: `PUT sys/renew`
-
-`LeaseEndpoints.Leases` (`SysLeases`)
-
-* Revocation: `PUT sys/leases/revoke`
-* Renewal: `PUT sys/leases/renew`
-
-[[session-management]]
-== Session Management
-
-* Token lookup: `GET auth/token/lookup-self`
-* Renewal: `POST auth/token/renew-self`
-* Revoke: `POST auth/token/revoke-self`
diff --git a/docs/modules/ROOT/pages/config-data.adoc b/docs/modules/ROOT/pages/config-data.adoc
deleted file mode 100644
index 49c0fdff..00000000
--- a/docs/modules/ROOT/pages/config-data.adoc
+++ /dev/null
@@ -1,112 +0,0 @@
-[[vault.configdata]]
-= ConfigData API
-
-Spring Boot provides since version 2.4 a ConfigData API that allows the declaration of configuration sources and importing these as property sources.
-
-Spring Cloud Vault uses as of version 3.0 the ConfigData API to mount Vault's secret backends as property sources.
-In previous versions, the Bootstrap context was used.
-The ConfigData API is much more flexible as it allows specifying which configuration systems to import and in which order.
-
-NOTE: You can enable the bootstrap context either by setting the configuration property `spring.cloud.bootstrap.enabled=true` or by including the dependency `org.springframework.cloud:spring-cloud-starter-bootstrap`.
-Using the boostrap context should be only rarely required hence we recommend using the Config Data API for more flexibility regarding property source ordering.
-
-[[vault.configdata.locations]]
-== ConfigData Locations
-
-You can mount Vault configuration through one or more `PropertySource` that are materialized from Vault.
-Spring Cloud Vault supports two config locations:
-
-* `vault://` (default location)
-* `vault:///` (contextual location)
-
-Using the default location mounts property sources for all enabled xref:secret-backends.adoc[Secret Backends].
-Without further configuration, Spring Cloud Vault mounts the key-value backend at `/secret/${spring.application.name}`.
-Each activated profile adds another context path following the form `/secret/${spring.application.name}/${profile}`.
-Adding further modules to the classpath, such as `spring-cloud-config-databases`, provides additional secret backend configuration options which get mounted as property sources if enabled.
-
-If you want to control which context paths are mounted from Vault as `PropertySource`, you can either use a contextual location (`vault:///my/context/path`) or configure a xref:secret-backends.adoc#vault.config.backends.configurer[`VaultConfigurer`].
-
-Contextual locations are specified and mounted individually.
-Spring Cloud Vault mounts each location as a unique `PropertySource`.
-You can mix the default locations with contextual locations (or other config systems) to control the order of property sources.
-This approach is useful in particular if you want to disable the default key-value path computation and mount each key-value backend yourself instead.
-
-.application.yml
-====
-[source,yaml]
-----
-spring.config.import: vault://first/context/path, vault://other/path, vault://
-----
-====
-
-Property names within a Spring `Environment` must be unique to avoid shadowing.
-If you use the same secret names in different context paths and you want to expose these as individual properties you can distinguish them by adding a `prefix` query parameter to the location.
-
-.application.yml
-====
-[source,yaml]
-----
-spring.config.import: vault://my/path?prefix=foo., vault://my/other/path?prefix=bar.
-secret: ${foo.secret}
-other.secret: ${bar.secret}
-----
-
-NOTE: Prefixes are added as-is to all property names returned by Vault. If you want key names to be separated with a dot between the prefix and key name, make sure to add a trailing dot to the prefix.
-
-====
-
-[[vault.configdata.location.optional]]
-== Conditionally enable/disable Vault Configuration
-
-In some cases, it can be required to launch an application without Vault. You can express whether a Vault config location should be optional or mandatory (default) through the location string:
-
-* `optional:vault://` (default location)
-* `optional:vault:///` (contextual location)
-
-Optional locations are skipped during application startup if Vault support was disabled through `spring.cloud.vault.enabled=false`.
-
-NOTE: Vault context paths that cannot be found (HTTP Status 404) are skipped regardless of whether the config location is marked optional. xref:other-topics.adoc#vault.config.fail-fast[Vault Client Fail Fast] allows failing on start if a Vault context path cannot be found because of HTTP Status 404.
-
-
-[[vault.configdata.customization]]
-== Infrastructure Customization
-
-Spring Cloud Vault requires infrastructure classes to interact with Vault. When not using the ConfigData API (meaning that you haven't specified `spring.config.import=vault://` or a contextual Vault path), Spring Cloud Vault defines its beans through `VaultAutoConfiguration` and `VaultReactiveAutoConfiguration`.
-Spring Boot bootstraps the application before a Spring Context is available. Therefore `VaultConfigDataLoader` registers beans itself to propagate these later on into the application context.
-
-You can customize the infrastructure used by Spring Cloud Vault by registering custom instances using the `Bootstrapper` API:
-
-.Customizing `ClientHttpRequestFactory`
-====
-[source,java]
-----
-ClientOptions options = new ClientOptions();
-SslConfiguration sslConfiguration = SslConfiguration.unconfigured();
-HttpClientBuilder builder = HttpComponents.getHttpClientBuilder(options, sslConfiguration);
-
-InstanceSupplier supplier = context ->
-new ClientFactoryWrapper(new HttpComponentsClientHttpRequestFactory(builder.build()));
-
-SpringApplication application = new SpringApplication(MyApplication.class);
-application.addBootstrapRegistryInitializer(registry -> registry.register(ClientFactoryWrapper.class, supplier));
-----
-====
-
-.Customizing `RestTemplateBuilder`
-====
-[source,java]
-----
-InstanceSupplier supplier = context -> {
-
- return RestTemplateBuilder
- .builder()
- .requestFactory(context.get(ClientFactoryWrapper.class).getClientHttpRequestFactory())
- .defaultHeader("X-Vault-Namespace", "my-namespace");
-};
-
-SpringApplication application = new SpringApplication(MyApplication.class);
-application.addBootstrapRegistryInitializer(registry -> registry.register(RestTemplateBuilder.class, supplier));
-----
-====
-
-See also xref:secret-backends.adoc#vault.config.backends.configurer[Customize which secret backends to expose as PropertySource] and the source of `VaultConfigDataLoader` for customization hooks.
diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc
deleted file mode 120000
index 7d4aae93..00000000
--- a/docs/modules/ROOT/pages/index.adoc
+++ /dev/null
@@ -1 +0,0 @@
-spring-cloud-vault.adoc
\ No newline at end of file
diff --git a/docs/modules/ROOT/pages/intro.adoc b/docs/modules/ROOT/pages/intro.adoc
deleted file mode 100644
index 9d6514e6..00000000
--- a/docs/modules/ROOT/pages/intro.adoc
+++ /dev/null
@@ -1,3 +0,0 @@
-Spring Cloud Vault Config provides client-side support for externalized configuration in a distributed system.
-With https://www.vaultproject.io[HashiCorp's Vault] you have a central place to manage external secret properties for applications across all environments.
-Vault can manage static and dynamic secrets such as username/password for remote applications/resources and provide credentials for external services such as MySQL, PostgreSQL, Apache Cassandra, Couchbase, MongoDB, Consul, AWS and more.
diff --git a/docs/modules/ROOT/pages/new-features.adoc b/docs/modules/ROOT/pages/new-features.adoc
deleted file mode 100644
index 5865f5ef..00000000
--- a/docs/modules/ROOT/pages/new-features.adoc
+++ /dev/null
@@ -1,14 +0,0 @@
-[[new-noteworthy]]
-= New & Noteworthy
-:page-section-summary-toc: 1
-
-This section briefly covers items that are new and noteworthy in the latest releases.
-
-[[new-in-3.0.0]]
-== New in Spring Cloud Vault 3.0
-
-* Migration of `PropertySource` initialization from Spring Cloud's Bootstrap Context to Spring Boot's xref:config-data.adoc[ConfigData API].
-* Support for the xref:secret-backends.adoc#vault.config.backends.couchbase[Couchbase Database] backend.
-* Configuration of keystore/truststore types through `spring.cloud.vault.ssl.key-store-type=…`/`spring.cloud.vault.ssl.trust-store-type=…` including PEM support.
-* Support for `ReactiveDiscoveryClient` by configuring a `ReactiveVaultEndpointProvider`.
-* Support to configure xref:secret-backends.adoc#vault.config.backends.databases[Multiple Databases].
diff --git a/docs/modules/ROOT/pages/other-topics.adoc b/docs/modules/ROOT/pages/other-topics.adoc
deleted file mode 100644
index 805e8df6..00000000
--- a/docs/modules/ROOT/pages/other-topics.adoc
+++ /dev/null
@@ -1,173 +0,0 @@
-[[service-registry-configuration]]
-= Service Registry Configuration
-
-You can use a `DiscoveryClient` (such as from Spring Cloud Consul) to locate a Vault server by setting spring.cloud.vault.discovery.enabled=true (default `false`).
-The net result of that is that your apps need a application.yml (or an environment variable) with the appropriate discovery configuration.
-The benefit is that the Vault can change its co-ordinates, as long as the discovery service is a fixed point.
-The default service id is `vault` but you can change that on the client with
-`spring.cloud.vault.discovery.serviceId`.
-
-The discovery client implementations all support some kind of metadata map (e.g. for Eureka we have eureka.instance.metadataMap).
-Some additional properties of the service may need to be configured in its service registration metadata so that clients can connect correctly.
-Service registries that do not provide details about transport layer security need to provide a `scheme` metadata entry to be set either to `https` or `http`.
-If no scheme is configured and the service is not exposed as secure service, then configuration defaults to `spring.cloud.vault.scheme` which is `https` when it's not set.
-
-====
-[source,yaml]
-----
-spring.cloud.vault.discovery:
- enabled: true
- service-id: my-vault-service
-----
-====
-
-[[vault.config.fail-fast]]
-= Vault Client Fail Fast
-
-In some cases, it may be desirable to fail startup of a service if it cannot connect to the Vault Server.
-If this is the desired behavior, set the bootstrap configuration property
-`spring.cloud.vault.fail-fast=true` and the client will halt with an Exception.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- fail-fast: true
-----
-====
-
-[[vault.config.namespaces]]
-= Vault Enterprise Namespace Support
-
-Vault Enterprise allows using namespaces to isolate multiple Vaults on a single Vault server.
-Configuring a namespace by setting
-`spring.cloud.vault.namespace=…` enables the namespace header
-`X-Vault-Namespace` on every outgoing HTTP request when using the Vault
-`RestTemplate` or `WebClient`.
-
-Please note that this feature is not supported by Vault Community edition and has no effect on Vault operations.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- namespace: my-namespace
-----
-====
-
-See also: https://www.vaultproject.io/docs/enterprise/namespaces/index.html[Vault Enterprise: Namespaces]
-
-[[vault.config.ssl]]
-= Vault Client SSL configuration
-
-SSL can be configured declaratively by setting various properties.
-You can set either `javax.net.ssl.trustStore` to configure JVM-wide SSL settings or `spring.cloud.vault.ssl.trust-store`
-to set SSL settings only for Spring Cloud Vault Config.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- ssl:
- trust-store: classpath:keystore.jks
- trust-store-password: changeit
- trust-store-type: JKS
- enabled-protocols: TLSv1.2,TLSv1.3
- enabled-cipher-suites: TLS_AES_128_GCM_SHA256
-----
-====
-
-* `trust-store` sets the resource for the trust-store.
-SSL-secured Vault communication will validate the Vault SSL certificate with the specified trust-store.
-* `trust-store-password` sets the trust-store password
-* `trust-store-type` sets the trust-store type. Supported values are all supported `KeyStore` types including `PEM`.
-* `enabled-protocols` sets the list of enabled SSL/TLS protocols (since 3.0.2).
-* `enabled-cipher-suites` sets the list of enabled SSL/TLS cipher suites (since 3.0.2).
-
-Please note that configuring `spring.cloud.vault.ssl.*` can be only applied when either Apache Http Components or the OkHttp client is on your class-path.
-
-[[vault-lease-renewal]]
-= Lease lifecycle management (renewal and revocation)
-
-With every secret, Vault creates a lease:
-metadata containing information such as a time duration, renewability, and more.
-
-Vault promises that the data will be valid for the given duration, or Time To Live (TTL).
-Once the lease is expired, Vault can revoke the data, and the consumer of the secret can no longer be certain that it is valid.
-
-Spring Cloud Vault maintains a lease lifecycle beyond the creation of login tokens and secrets.
-That said, login tokens and secrets associated with a lease are scheduled for renewal just before the lease expires until terminal expiry.
-Application shutdown revokes obtained login tokens and renewable leases.
-
-Secret service and database backends (such as MongoDB or MySQL) usually generate a renewable lease so generated credentials will be disabled on application shutdown.
-
-NOTE: Static tokens are not renewed or revoked.
-
-Lease renewal and revocation is enabled by default and can be disabled by setting `spring.cloud.vault.config.lifecycle.enabled`
-to `false`.
-This is not recommended as leases can expire and Spring Cloud Vault cannot longer access Vault or services using generated credentials and valid credentials remain active after application shutdown.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- config.lifecycle:
- enabled: true
- min-renewal: 10s
- expiry-threshold: 1m
- lease-endpoints: Legacy
-
-----
-====
-
-* `enabled` controls whether leases associated with secrets are considered to be renewed and expired secrets are rotated.
-Enabled by default.
-* `min-renewal` sets the duration that is at least required before renewing a lease.
-This setting prevents renewals from happening too often.
-* `expiry-threshold` sets the expiry threshold.
-A lease is renewed the configured period of time before it expires.
-* `lease-endpoints` sets the endpoints for renew and revoke.
-Legacy for vault versions before 0.8 and SysLeases for later.
-
-See also: https://www.vaultproject.io/docs/concepts/lease.html[Vault Documentation: Lease, Renew, and Revoke]
-
-[[vault-session-lifecycle]]
-= Session token lifecycle management (renewal, re-login and revocation)
-
-A Vault session token (also referred to as `LoginToken`) is quite similar to a lease as it has a TTL, max TTL, and may expire.
-Once a login token expires, it cannot be used anymore to interact with Vault.
-Therefore, Spring Vault ships with a `SessionManager` API for imperative and reactive use.
-
-Spring Cloud Vault maintains the session token lifecycle by default.
-Session tokens are obtained lazily so the actual login is deferred until the first session-bound use of Vault.
-Once Spring Cloud Vault obtains a session token, it retains it until expiry.
-The next time a session-bound activity is used, Spring Cloud Vault re-logins into Vault and obtains a new session token.
-On application shut down, Spring Cloud Vault revokes the token if it was still active to terminate the session.
-
-Session lifecycle is enabled by default and can be disabled by setting `spring.cloud.vault.session.lifecycle.enabled`
-to `false`.
-Disabling is not recommended as session tokens can expire and Spring Cloud Vault cannot longer access Vault.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- session.lifecycle:
- enabled: true
- refresh-before-expiry: 10s
- expiry-threshold: 20s
-----
-====
-
-* `enabled` controls whether session lifecycle management is enabled to renew session tokens.
-Enabled by default.
-* `refresh-before-expiry` controls the point in time when the session token gets renewed.
-The refresh time is calculated by subtracting `refresh-before-expiry` from the token expiry time.
-Defaults to `5 seconds`.
-* `expiry-threshold` sets the expiry threshold.
-The threshold represents a minimum TTL duration to consider a session token as valid.
-Tokens with a shorter TTL are considered expired and are not used anymore.
-Should be greater than `refresh-before-expiry` to prevent token expiry.
-Defaults to `7 seconds`.
-
-See also: https://www.vaultproject.io/api-docs/auth/token#renew-a-token-self[Vault Documentation: Token Renewal]
diff --git a/docs/modules/ROOT/pages/quickstart.adoc b/docs/modules/ROOT/pages/quickstart.adoc
deleted file mode 100644
index 56e41b41..00000000
--- a/docs/modules/ROOT/pages/quickstart.adoc
+++ /dev/null
@@ -1,259 +0,0 @@
-:docs: https://cloud.spring.io/spring-cloud-vault/reference/html/
-
-*Prerequisites*
-
-To get started with Vault and this guide you need a *NIX-like operating systems that provides:
-
-* `wget`, `openssl` and `unzip`
-* at least Java 8 and a properly configured `JAVA_HOME` environment variable
-
-NOTE: This guide explains Vault setup from a Spring Cloud Vault perspective for integration testing.
-You can find a getting started guide directly on the Vault project site: https://learn.hashicorp.com/vault
-
-*Install Vault*
-
-[source,bash]
-----
-$ wget https://releases.hashicorp.com/vault/${vault_version}/vault_${vault_version}_${platform}.zip
-$ unzip vault_${vault_version}_${platform}.zip
-----
-
-NOTE: These steps can be achieved by downloading and running https://github.com/spring-cloud/spring-cloud-vault/blob/master/src/test/bash/install_vault.sh[`install_vault.sh`].
-
-*Create SSL certificates for Vault*
-
-Next, you'r required to generate a set of certificates:
-
-* Root CA
-* Vault Certificate (decrypted key `work/ca/private/localhost.decrypted.key.pem` and certificate `work/ca/certs/localhost.cert.pem`)
-
-Make sure to import the Root Certificate into a Java-compliant truststore.
-
-The easiest way to achieve this is by using OpenSSL.
-
-NOTE: https://github.com/spring-cloud/spring-cloud-vault/blob/master/src/test/bash/[`create_certificates.sh`] creates certificates in `work/ca` and a JKS truststore `work/keystore.jks`.
-If you want to run Spring Cloud Vault using this quickstart guide you need to configure the truststore the `spring.cloud.vault.ssl.trust-store` property to `file:work/keystore.jks`.
-
-[[quickstart.vault.start]]
-*Start Vault server*
-
-Next create a config file along the lines of:
-
-[source]
-----
-backend "inmem" {
-}
-
-listener "tcp" {
- address = "0.0.0.0:8200"
- tls_cert_file = "work/ca/certs/localhost.cert.pem"
- tls_key_file = "work/ca/private/localhost.decrypted.key.pem"
-}
-
-disable_mlock = true
-----
-
-NOTE: You can find an example config file at https://github.com/spring-clod/spring-cloud-vault/blob/master/src/test/bash/vault.conf[`vault.conf`].
-
-[source,bash]
-----
-$ vault server -config=vault.conf
-----
-
-Vault is started listening on `0.0.0.0:8200` using the `inmem` storage and `https`.
-Vault is sealed and not initialized when starting up.
-
-NOTE: If you want to run tests, leave Vault uninitialized.
-The tests will initialize Vault and create a root token `00000000-0000-0000-0000-000000000000`.
-
-If you want to use Vault for your application or give it a try then you need to initialize it first.
-
-[source,bash]
-----
-$ export VAULT_ADDR="https://localhost:8200"
-$ export VAULT_SKIP_VERIFY=true # Don't do this for production
-$ vault operator init
-----
-
-You should see something like:
-
-[source,bash]
-----
-Key 1: 7149c6a2e16b8833f6eb1e76df03e47f6113a3288b3093faf5033d44f0e70fe701
-Key 2: 901c534c7988c18c20435a85213c683bdcf0efcd82e38e2893779f152978c18c02
-Key 3: 03ff3948575b1165a20c20ee7c3e6edf04f4cdbe0e82dbff5be49c63f98bc03a03
-Key 4: 216ae5cc3ddaf93ceb8e1d15bb9fc3176653f5b738f5f3d1ee00cd7dccbe926e04
-Key 5: b2898fc8130929d569c1677ee69dc5f3be57d7c4b494a6062693ce0b1c4d93d805
-Initial Root Token: 19aefa97-cccc-bbbb-aaaa-225940e63d76
-
-Vault initialized with 5 keys and a key threshold of 3. Please
-securely distribute the above keys. When the Vault is re-sealed,
-restarted, or stopped, you must provide at least 3 of these keys
-to unseal it again.
-
-Vault does not store the master key. Without at least 3 keys,
-your Vault will remain permanently sealed.
-----
-
-Vault will initialize and return a set of unsealing keys and the root token.
-Pick 3 keys and unseal Vault.
-Store the Vault token in the `VAULT_TOKEN`
-environment variable.
-
-[source,bash]
-----
-$ vault operator unseal (Key 1)
-$ vault operator unseal (Key 2)
-$ vault operator unseal (Key 3)
-$ export VAULT_TOKEN=(Root token)
-# Required to run Spring Cloud Vault tests after manual initialization
-$ vault token create -id="00000000-0000-0000-0000-000000000000" -policy="root"
-----
-
-Spring Cloud Vault accesses different resources.
-By default, the secret backend is enabled which accesses secret config settings via JSON endpoints.
-
-The HTTP service has resources in the form:
-
-----
-/secret/{application}/{profile}
-/secret/{application}
-/secret/{defaultContext}/{profile}
-/secret/{defaultContext}
-----
-
-where the "application" is injected as the `spring.application.name` in the
-`SpringApplication` (i.e. what is normally "application" in a regular Spring Boot app), "profile" is an active profile (or comma-separated list of properties).
-Properties retrieved from Vault will be used "as-is" without further prefixing of the property names.
-
-[[client-side-usage]]
-= Client Side Usage
-
-To use these features in an application, just build it as a Spring Boot application that depends on `spring-cloud-vault-config` (e.g. see the test cases).
-Example Maven configuration:
-
-.pom.xml
-====
-[source,xml,indent=0,subs="verbatim,quotes,attributes"]
-----
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.0.RELEASE
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-vault-config
- {project-version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
-
-----
-====
-
-Then you can create a standard Spring Boot application, like this simple HTTP server:
-
-====
-[source,java]
-----
-@SpringBootApplication
-@RestController
-public class Application {
-
- @RequestMapping("/")
- public String home() {
- return "Hello World!";
- }
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-}
-----
-====
-
-When it runs it will pick up the external configuration from the default local Vault server on port `8200` if it is running.
-To modify the startup behavior you can change the location of the Vault server using `application.properties`, for example
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- host: localhost
- port: 8200
- scheme: https
- uri: https://localhost:8200
- connection-timeout: 5000
- read-timeout: 15000
- config:
-spring.config.import: vault://
-----
-====
-
-* `host` sets the hostname of the Vault host.
-The host name will be used 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
-* `spring.config.import` mounts Vault as `PropertySource` using all enabled secret backends (key-value enabled by default)
-
-Enabling further integrations requires additional dependencies and configuration.
-Depending on how you have set up Vault you might need additional configuration like
-{docs}#vault.config.ssl[SSL] and
-{docs}#vault.config.authentication[authentication].
-
-If the application imports the `spring-boot-starter-actuator` project, the status of the vault server will be available via the `/health` endpoint.
-
-The vault health indicator can be enabled or disabled through the property `management.health.vault.enabled` (default to `true`).
-
-NOTE: With Spring Cloud Vault 3.0 and Spring Boot 2.4, the bootstrap context initialization (`bootstrap.yml`, `bootstrap.properties`) of property sources was deprecated.
-Instead, Spring Cloud Vault favors Spring Boot's Config Data API which allows importing configuration from Vault. With Spring Boot Config Data approach, you need to set the `spring.config.import` property in order to bind to Vault. You can read more about it in the xref:config-data.adoc#vault.configdata.locations[Config Data Locations section].
-You can enable the bootstrap context either by setting the configuration property `spring.cloud.bootstrap.enabled=true` or by including the dependency `org.springframework.cloud:spring-cloud-starter-bootstrap`.
-
-[[authentication]]
-== Authentication
-
-Vault requires an https://www.vaultproject.io/docs/concepts/auth.html[authentication mechanism] to https://www.vaultproject.io/docs/concepts/tokens.html[authorize client requests].
-
-Spring Cloud Vault supports multiple {docs}#vault.config.authentication[authentication mechanisms] to authenticate applications with Vault.
-
-For a quickstart, use the root token printed by the xref:quickstart.adoc#quickstart.vault.start[Vault initialization].
-
-.application.yml
-====
-[source,yaml]
-----
-spring.cloud.vault:
- token: 19aefa97-cccc-bbbb-aaaa-225940e63d76
-spring.config.import: vault://
-----
-====
-
-WARNING: Consider carefully your security requirements.
-Static token authentication is fine if you want quickly get started with Vault, but a static token is not protected any further.
-Any disclosure to unintended parties allows Vault use with the associated token roles.
-
-
-
diff --git a/docs/modules/ROOT/pages/secret-backends.adoc b/docs/modules/ROOT/pages/secret-backends.adoc
deleted file mode 100644
index e83ae86d..00000000
--- a/docs/modules/ROOT/pages/secret-backends.adoc
+++ /dev/null
@@ -1,632 +0,0 @@
-[[vault.config.backends]]
-= Secret Backends
-
-[[vault.config.backends.kv]]
-[[vault.config.backends.generic]]
-[[vault.config.backends.kv.versioned]]
-== Key-Value Backend
-
-Spring Cloud Vault supports both Key-Value secret backends, the versioned (v2) and unversioned (v1).
-The key-value backend allows storage of arbitrary values as key-value store.
-A single context can store one or many key-value tuples.
-Contexts can be organized hierarchically.
-Spring Cloud Vault determines itself whether a secret is using versioning and maps the path to its appropriate URL.
-Spring Cloud Vault allows using the Application name, and a default context name (`application`) in combination with active profiles.
-
-----
-/secret/{application}/{profile}
-/secret/{application}
-/secret/{default-context}/{profile}
-/secret/{default-context}
-----
-
-The application name is determined by the properties:
-
-* `spring.cloud.vault.kv.application-name`
-* `spring.cloud.vault.application-name`
-* `spring.application.name`
-
-The profiles are determined by the properties:
-
-* `spring.cloud.vault.kv.profiles`
-* `spring.profiles.active`
-
-Secrets can be obtained from other contexts within the key-value backend by adding their paths to the application name, separated by commas.
-For example, given the application name `usefulapp,mysql1,projectx/aws`, each of these folders will be used:
-
-* `/secret/usefulapp`
-* `/secret/mysql1`
-* `/secret/projectx/aws`
-
-Spring Cloud Vault adds all active profiles to the list of possible context paths.
-No active profiles will skip accessing contexts with a profile name.
-
-Properties are exposed like they are stored (i.e. without additional prefixes).
-
-NOTE: Spring Cloud Vault adds the `data/` context between the mount path and the actual context path depending on whether the mount uses the versioned key-value backend.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- kv:
- enabled: true
- backend: secret
- profile-separator: '/'
- default-context: application
- application-name: my-app
- profiles: local, cloud
-----
-====
-
-* `enabled` setting this value to `false` disables the secret backend config usage
-* `backend` sets the path of the secret mount to use
-* `default-context` sets the context name used by all applications
-* `application-name` overrides the application name for use in the key-value backend
-* `profiles` overrides the active profiles for use in the key-value backend
-* `profile-separator` separates the profile name from the context in property sources with profiles
-
-NOTE: The key-value secret backend can be operated in versioned (v2) and non-versioned (v1) modes.
-
-See also:
-
-* https://www.vaultproject.io/docs/secrets/kv/kv-v1.html[Vault Documentation: Using the KV Secrets Engine - Version 1 (generic secret backend)]
-* https://www.vaultproject.io/docs/secrets/kv/kv-v2.html[Vault Documentation: Using the KV Secrets Engine - Version 2 (versioned key-value backend)]
-
-[[vault.config.backends.consul]]
-== Consul
-
-Spring Cloud Vault can obtain credentials for HashiCorp Consul.
-The Consul integration requires the `spring-cloud-vault-config-consul`
-dependency.
-
-.pom.xml
-====
-[source,xml,indent=0,subs="verbatim,quotes,attributes"]
-----
-
-
- org.springframework.cloud
- spring-cloud-vault-config-consul
- {project-version}
-
-
-----
-====
-
-The integration can be enabled by setting
-`spring.cloud.vault.consul.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.consul.role=…`.
-
-The obtained token is stored in `spring.cloud.consul.token`
-so using Spring Cloud Consul can pick up the generated credentials without further configuration.
-You can configure the property name by setting `spring.cloud.vault.consul.token-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- consul:
- enabled: true
- role: readonly
- backend: consul
- token-property: spring.cloud.consul.token
-----
-====
-
-* `enabled` setting this value to `true` enables the Consul backend config usage
-* `role` sets the role name of the Consul role definition
-* `backend` sets the path of the Consul mount to use
-* `token-property` sets the property name in which the Consul ACL token is stored
-
-See also: https://www.vaultproject.io/docs/secrets/consul/index.html[Vault Documentation: Setting up Consul with Vault]
-
-[[vault.config.backends.rabbitmq]]
-== RabbitMQ
-
-Spring Cloud Vault can obtain credentials for RabbitMQ.
-
-The RabbitMQ integration requires the `spring-cloud-vault-config-rabbitmq`
-dependency.
-
-.pom.xml
-====
-[source,xml,indent=0,subs="verbatim,quotes,attributes"]
-----
-
-
- org.springframework.cloud
- spring-cloud-vault-config-rabbitmq
- {project-version}
-
-
-----
-====
-
-The integration can be enabled by setting
-`spring.cloud.vault.rabbitmq.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.rabbitmq.role=…`.
-
-Username and password are stored in `spring.rabbitmq.username`
-and `spring.rabbitmq.password` so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting `spring.cloud.vault.rabbitmq.username-property` and
-`spring.cloud.vault.rabbitmq.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- rabbitmq:
- enabled: true
- role: readonly
- backend: rabbitmq
- username-property: spring.rabbitmq.username
- password-property: spring.rabbitmq.password
-----
-====
-
-* `enabled` setting this value to `true` enables the RabbitMQ backend config usage
-* `role` sets the role name of the RabbitMQ role definition
-* `backend` sets the path of the RabbitMQ mount to use
-* `username-property` sets the property name in which the RabbitMQ username is stored
-* `password-property` sets the property name in which the RabbitMQ password is stored
-
-See also: https://www.vaultproject.io/docs/secrets/rabbitmq/index.html[Vault Documentation: Setting up RabbitMQ with Vault]
-
-[[vault.config.backends.aws]]
-== AWS
-
-Spring Cloud Vault can obtain credentials for AWS.
-
-The AWS integration requires the `spring-cloud-vault-config-aws`
-dependency.
-
-.pom.xml
-====
-[source,xml,indent=0,subs="verbatim,quotes,attributes"]
-----
-
-
- org.springframework.cloud
- spring-cloud-vault-config-aws
- {project-version}
-
-
-----
-====
-
-The integration can be enabled by setting
-`spring.cloud.vault.aws=true` (default `false`) and providing the role name with `spring.cloud.vault.aws.role=…`.
-
-Supported AWS credential Types:
-
-* iam_user (Defaults)
-* assumed_role (STS)
-* federation_token (STS)
-
-The access key and secret key are stored in `cloud.aws.credentials.accessKey`
-and `cloud.aws.credentials.secretKey`. So using Spring Cloud AWS will pick up the generated credentials without further configuration.
-
-You can configure the property names by setting `spring.cloud.vault.aws.access-key-property` and
-`spring.cloud.vault.aws.secret-key-property`.
-
-For STS security token, you can configure the property name by setting `spring.cloud.vault.aws.session-token-key-property`. The security token is stored under `cloud.aws.credentials.sessionToken` (defaults).
-
-Example: iam_user
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- aws:
- enabled: true
- role: readonly
- backend: aws
- access-key-property: cloud.aws.credentials.accessKey
- secret-key-property: cloud.aws.credentials.secretKey
-----
-====
-
-Example: assumed_role (STS)
-====
-[source,yaml]
-----
-spring.cloud.vault:
- aws:
- enabled: true
- role: sts-vault-role
- backend: aws
- credential-type: assumed_role
- access-key-property: cloud.aws.credentials.accessKey
- secret-key-property: cloud.aws.credentials.secretKey
- session-token-key-property: cloud.aws.credentials.sessionToken
- ttl: 3600s
- role-arn: arn:aws:iam::${AWS_ACCOUNT}:role/sts-app-role
-----
-====
-
-* `enabled` setting this value to `true` enables the AWS backend config usage
-* `role` sets the role name of the AWS role definition
-* `backend` sets the path of the AWS mount to use
-* `access-key-property` sets the property name in which the AWS access key is stored
-* `secret-key-property` sets the property name in which the AWS secret key is stored
-* `session-token-key-property` sets the property name in which the AWS STS security token is stored.
-* `credential-type` sets the aws credential type to use for this backend. Defaults to `iam_user`
-* `ttl` sets the ttl for the STS token when using `assumed_role` or `federation_token`. Defaults to the ttl specified by the vault role. Min/Max values are also limited to what AWS would support for STS.
-* `role-arn` sets the IAM role to assume if more than one are configured for the vault role when using `assumed_role`.
-
-See also: https://www.vaultproject.io/docs/secrets/aws/index.html[Vault Documentation: Setting up AWS with Vault]
-
-[[vault.config.backends.database-backends]]
-= Database backends
-
-Vault supports several database secret backends to generate database credentials dynamically based on configured roles.
-This means services that need to access a database no longer need to configure credentials: they can request them from Vault, and use Vault's leasing mechanism to more easily roll keys.
-
-Spring Cloud Vault integrates with these backends:
-
-* xref:secret-backends.adoc#vault.config.backends.database[Database]
-* xref:secret-backends.adoc#vault.config.backends.cassandra[Apache Cassandra]
-* xref:secret-backends.adoc#vault.config.backends.couchbase[Couchbase Database]
-* xref:secret-backends.adoc#vault.config.backends.elasticsearch[Elasticsearch]
-* xref:secret-backends.adoc#vault.config.backends.mongodb[MongoDB]
-* xref:secret-backends.adoc#vault.config.backends.mysql[MySQL]
-* xref:secret-backends.adoc#vault.config.backends.postgresql[PostgreSQL]
-
-Using a database secret backend requires to enable the backend in the configuration and the `spring-cloud-vault-config-databases`
-dependency.
-
-Vault ships since 0.7.1 with a dedicated `database` secret backend that allows database integration via plugins.
-You can use that specific backend by using the generic database backend.
-Make sure to specify the appropriate backend path, e.g. `spring.cloud.vault.mysql.role.backend=database`.
-
-.pom.xml
-====
-[source,xml,indent=0,subs="verbatim,quotes,attributes"]
-----
-
-
- org.springframework.cloud
- spring-cloud-vault-config-databases
- {project-version}
-
-
-----
-====
-
-NOTE: Enabling multiple JDBC-compliant databases will generate credentials and store them by default in the same property keys hence property names for JDBC secrets need to be configured separately.
-
-[[vault.config.backends.database]]
-== Database
-
-Spring Cloud Vault can obtain credentials for any database listed at
-https://www.vaultproject.io/api/secret/databases/index.html.
-The integration can be enabled by setting
-`spring.cloud.vault.database.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.database.role=…`.
-
-While the database backend is a generic one, `spring.cloud.vault.database`
-specifically targets JDBC databases.
-Username and password are available from `spring.datasource.username` and `spring.datasource.password` properties
-so using Spring Boot will pick up the generated credentials for your `DataSource` without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.database.username-property` and
-`spring.cloud.vault.database.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- database:
- enabled: true
- role: readonly
- backend: database
- username-property: spring.datasource.username
- password-property: spring.datasource.password
-----
-====
-
-[[vault.config.backends.databases]]
-== Multiple Databases
-
-Sometimes, credentials for a single database isn't sufficient because an application might connect to two or more databases of the same kind.
-Beginning with version 3.0.5, Spring Vault supports the configuration of multiple database secret backends under the `spring.cloud.vault.databases.*` namespace.
-
-The configuration accepts multiple database backends to materialize credentials into the specified properties. Make sure to configure `username-property` and `password-property` appropriately.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- databases:
- primary:
- enabled: true
- role: readwrite
- backend: database
- username-property: spring.primary-datasource.username
- password-property: spring.primary-datasource.password
- other-database:
- enabled: true
- role: readonly
- backend: database
- username-property: spring.secondary-datasource.username
- password-property: spring.secondary-datasource.password
-----
-====
-
-* `` descriptive name of the database configuration.
-* `.enabled` setting this value to `true` enables the Database backend config usage
-* `.role` sets the role name of the Database role definition
-* `.backend` sets the path of the Database mount to use
-* `.username-property` sets the property name in which the Database username is stored. Make sure to use unique property names to avoid property shadowing.
-* `.password-property` sets the property name in which the Database password is stored Make sure to use unique property names to avoid property shadowing.
-
-See also: https://www.vaultproject.io/docs/secrets/databases/index.html[Vault Documentation: Database Secrets backend]
-
-WARNING: Spring Cloud Vault does not support getting new credentials and configuring your `DataSource` with them when the maximum lease time has been reached.
-That is, if `max_ttl` of the Database role in Vault is set to `24h` that means that 24 hours after your application has started it can no longer authenticate with the database.
-
-[[vault.config.backends.cassandra]]
-== Apache Cassandra
-
-NOTE: The `cassandra` backend has been deprecated in Vault 0.7.1 and it is recommended to use the `database` backend and mount it as `cassandra`.
-
-Spring Cloud Vault can obtain credentials for Apache Cassandra.
-The integration can be enabled by setting
-`spring.cloud.vault.cassandra.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.cassandra.role=…`.
-
-Username and password are available from `spring.data.cassandra.username`
-and `spring.data.cassandra.password` properties so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.cassandra.username-property` and
-`spring.cloud.vault.cassandra.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- cassandra:
- enabled: true
- role: readonly
- backend: cassandra
- username-property: spring.data.cassandra.username
- password-property: spring.data.cassandra.password
-----
-====
-
-* `enabled` setting this value to `true` enables the Cassandra backend config usage
-* `role` sets the role name of the Cassandra role definition
-* `backend` sets the path of the Cassandra mount to use
-* `username-property` sets the property name in which the Cassandra username is stored
-* `password-property` sets the property name in which the Cassandra password is stored
-
-See also: https://www.vaultproject.io/docs/secrets/cassandra/index.html[Vault Documentation: Setting up Apache Cassandra with Vault]
-
-[[vault.config.backends.couchbase]]
-== Couchbase Database
-
-Spring Cloud Vault can obtain credentials for Couchbase.
-The integration can be enabled by setting
-`spring.cloud.vault.couchbase.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.couchbase.role=…`.
-
-Username and password are available from `spring.couchbase.username`
-and `spring.couchbase.password` properties so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.couchbase.username-property` and
-`spring.cloud.vault.couchbase.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- couchbase:
- enabled: true
- role: readonly
- backend: database
- username-property: spring.couchbase.username
- password-property: spring.couchbase.password
-----
-====
-
-* `enabled` setting this value to `true` enables the Couchbase backend config usage
-* `role` sets the role name of the Couchbase role definition
-* `backend` sets the path of the Couchbase mount to use
-* `username-property` sets the property name in which the Couchbase username is stored
-* `password-property` sets the property name in which the Couchbase password is stored
-
-See also: https://github.com/hashicorp/vault-plugin-database-couchbase[Couchbase Database Plugin Documentation]
-
-[[vault.config.backends.elasticsearch]]
-== Elasticsearch
-
-Spring Cloud Vault can obtain since version 3.0 credentials for Elasticsearch.
-The integration can be enabled by setting
-`spring.cloud.vault.elasticsearch.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.elasticsearch.role=…`.
-
-Username and password are available from `spring.elasticsearch.rest.username`
-and `spring.elasticsearch.rest.password` properties so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.elasticsearch.username-property` and
-`spring.cloud.vault.elasticsearch.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- elasticsearch:
- enabled: true
- role: readonly
- backend: mongodb
- username-property: spring.elasticsearch.rest.username
- password-property: spring.elasticsearch.rest.password
-----
-====
-
-* `enabled` setting this value to `true` enables the Elasticsearch database backend config usage
-* `role` sets the role name of the Elasticsearch role definition
-* `backend` sets the path of the Elasticsearch mount to use
-* `username-property` sets the property name in which the Elasticsearch username is stored
-* `password-property` sets the property name in which the Elasticsearch password is stored
-
-See also: https://www.vaultproject.io/docs/secrets/databases/elasticdb[Vault Documentation: Setting up Elasticsearch with Vault]
-
-[[vault.config.backends.mongodb]]
-== MongoDB
-
-NOTE: The `mongodb` backend has been deprecated in Vault 0.7.1 and it is recommended to use the `database` backend and mount it as `mongodb`.
-
-Spring Cloud Vault can obtain credentials for MongoDB.
-The integration can be enabled by setting
-`spring.cloud.vault.mongodb.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.mongodb.role=…`.
-
-Username and password are stored in `spring.data.mongodb.username`
-and `spring.data.mongodb.password` so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.mongodb.username-property` and
-`spring.cloud.vault.mongodb.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- mongodb:
- enabled: true
- role: readonly
- backend: mongodb
- username-property: spring.data.mongodb.username
- password-property: spring.data.mongodb.password
-----
-====
-
-* `enabled` setting this value to `true` enables the MongodB backend config usage
-* `role` sets the role name of the MongoDB role definition
-* `backend` sets the path of the MongoDB mount to use
-* `username-property` sets the property name in which the MongoDB username is stored
-* `password-property` sets the property name in which the MongoDB password is stored
-
-See also: https://www.vaultproject.io/docs/secrets/mongodb/index.html[Vault Documentation: Setting up MongoDB with Vault]
-
-[[vault.config.backends.mysql]]
-== MySQL
-
-NOTE: The `mysql` backend has been deprecated in Vault 0.7.1 and it is recommended to use the `database` backend and mount it as `mysql`.
-Configuration for `spring.cloud.vault.mysql` will be removed in a future version.
-
-Spring Cloud Vault can obtain credentials for MySQL.
-The integration can be enabled by setting
-`spring.cloud.vault.mysql.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.mysql.role=…`.
-
-Username and password are available from `spring.datasource.username`
-and `spring.datasource.password` properties so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.mysql.username-property` and
-`spring.cloud.vault.mysql.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- mysql:
- enabled: true
- role: readonly
- backend: mysql
- username-property: spring.datasource.username
- password-property: spring.datasource.password
-----
-====
-
-* `enabled` setting this value to `true` enables the MySQL backend config usage
-* `role` sets the role name of the MySQL role definition
-* `backend` sets the path of the MySQL mount to use
-* `username-property` sets the property name in which the MySQL username is stored
-* `password-property` sets the property name in which the MySQL password is stored
-
-See also: https://www.vaultproject.io/docs/secrets/mysql/index.html[Vault Documentation: Setting up MySQL with Vault]
-
-[[vault.config.backends.postgresql]]
-== PostgreSQL
-
-NOTE: The `postgresql` backend has been deprecated in Vault 0.7.1 and it is recommended to use the `database` backend and mount it as `postgresql`.
-Configuration for `spring.cloud.vault.postgresql` will be removed in a future version.
-
-Spring Cloud Vault can obtain credentials for PostgreSQL.
-The integration can be enabled by setting
-`spring.cloud.vault.postgresql.enabled=true` (default `false`) and providing the role name with `spring.cloud.vault.postgresql.role=…`.
-
-Username and password are available from `spring.datasource.username`
-and `spring.datasource.password` properties so using Spring Boot will pick up the generated credentials without further configuration.
-You can configure the property names by setting
-`spring.cloud.vault.postgresql.username-property` and
-`spring.cloud.vault.postgresql.password-property`.
-
-====
-[source,yaml]
-----
-spring.cloud.vault:
- postgresql:
- enabled: true
- role: readonly
- backend: postgresql
- username-property: spring.datasource.username
- password-property: spring.datasource.password
-----
-====
-
-* `enabled` setting this value to `true` enables the PostgreSQL backend config usage
-* `role` sets the role name of the PostgreSQL role definition
-* `backend` sets the path of the PostgreSQL mount to use
-* `username-property` sets the property name in which the PostgreSQL username is stored
-* `password-property` sets the property name in which the PostgreSQL password is stored
-
-See also: https://www.vaultproject.io/docs/secrets/postgresql/index.html[Vault Documentation: Setting up PostgreSQL with Vault]
-
-[[vault.config.backends.configurer]]
-= Customize which secret backends to expose as PropertySource
-
-Spring Cloud Vault uses property-based configuration to create ``PropertySource``s for key-value and discovered secret backends.
-
-Discovered backends provide `VaultSecretBackendDescriptor` beans to describe the configuration state to use secret backend as `PropertySource`.
-A `SecretBackendMetadataFactory` is required to create a `SecretBackendMetadata` object which contains path, name and property transformation configuration.
-
-`SecretBackendMetadata` is used to back a particular `PropertySource`.
-
-You can register a `VaultConfigurer` for customization.
-Default key-value and discovered backend registration is disabled if you provide a `VaultConfigurer`.
-You can however enable default registration with
-`SecretBackendConfigurer.registerDefaultKeyValueSecretBackends()` and `SecretBackendConfigurer.registerDefaultDiscoveredSecretBackends()`.
-
-====
-[source,java]
-----
-public class CustomizationBean implements VaultConfigurer {
-
- @Override
- public void addSecretBackends(SecretBackendConfigurer configurer) {
-
- configurer.add("secret/my-application");
-
- configurer.registerDefaultKeyValueSecretBackends(false);
- configurer.registerDefaultDiscoveredSecretBackends(true);
- }
-}
-----
-[source,java]
-----
-SpringApplication application = new SpringApplication(MyApplication.class);
-application.addBootstrapper(VaultBootstrapper.fromConfigurer(new CustomizationBean()));
-----
-====
-
-[[vault.config.backends.custom]]
-= Custom Secret Backend Implementations
-
-Spring Cloud Vault ships with secret backend support for the most common backend integrations.
-You can integrate with any kind of backend by providing an implementation that describes how to obtain data from the backend you want to use and how to surface data provided by that backend by providing a `PropertyTransformer`.
-
-Adding a custom implementation for a backend requires implementation of two interfaces:
-
-* `org.springframework.cloud.vault.config.VaultSecretBackendDescriptor`
-* `org.springframework.cloud.vault.config.SecretBackendMetadataFactory`
-
-`VaultSecretBackendDescriptor` is typically an object that holds configuration data, such as `VaultDatabaseProperties`. Spring Cloud Vault requires that your type is annotated with `@ConfigurationProperties` to materialize the class from the configuration.
-
-`SecretBackendMetadataFactory` accepts `VaultSecretBackendDescriptor` to create the actual `SecretBackendMetadata` object which holds the context path within your Vault server, any path variables required to resolve parametrized context paths and `PropertyTransformer`.
-
-Both, `VaultSecretBackendDescriptor` and `SecretBackendMetadataFactory` types must be registered in `spring.factories` which is an extension mechanism provided by Spring, similar to Java's ServiceLoader.
diff --git a/docs/modules/ROOT/pages/spring-cloud-vault.adoc b/docs/modules/ROOT/pages/spring-cloud-vault.adoc
deleted file mode 100644
index a44d3bf1..00000000
--- a/docs/modules/ROOT/pages/spring-cloud-vault.adoc
+++ /dev/null
@@ -1,25 +0,0 @@
-[[spring-cloud-vault]]
-= Spring Cloud Vault
-:page-section-summary-toc: 1
-:page-section-summary-toc: 1
-:github: https://github.com/spring-cloud/spring-cloud-vault
-:githubmaster: {github}/tree/master
-:revnumber: {project-version}
-:docslink: {githubmaster}/docs/src/main/asciidoc
-:nofooter:
-
-(C) 2016-2021 the original authors.
-
-NOTE: _Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further provided that each copy contains this Copyright Notice, whether distributed in print or electronically._
-
-
-
-
-[[quick-start]]
-== Quick Start
-
-
-
-
-
-
diff --git a/docs/pom.xml b/docs/pom.xml
deleted file mode 100644
index a0ea35a7..00000000
--- a/docs/pom.xml
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
- 4.0.0
-
-
- org.springframework.cloud
- spring-cloud-vault-parent
- 4.1.0-SNAPSHOT
- ..
-
-
- spring-cloud-vault-docs
- 4.1.0-SNAPSHOT
-
- jar
- Spring Cloud Vault Docs
- Spring Cloud Docs
-
-
- spring-cloud-vault
- ${basedir}/..
- spring.cloud.vault.*|
-
- deploy
-
-
-
-
- ${project.groupId}
- spring-cloud-starter-vault-config
-
-
- ${project.groupId}
- spring-cloud-vault-config-aws
-
-
- ${project.groupId}
- spring-cloud-vault-config-consul
-
-
- ${project.groupId}
- spring-cloud-vault-config-databases
-
-
- ${project.groupId}
- spring-cloud-vault-config-rabbitmq
-
-
-
-
- src/main/asciidoc
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 3.2.0
-
-
- org.apache.maven.plugins
- maven-source-plugin
- 3.2.1
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 3.2.0
-
-
- org.apache.maven.plugins
- maven-deploy-plugin
- 2.8.2
-
-
- org.apache.maven.plugins
- maven-release-plugin
- 2.5.3
-
-
-
-
-
-
-
- docs
-
-
-
- pl.project13.maven
- git-commit-id-plugin
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- org.apache.maven.plugins
- maven-resources-plugin
-
-
- org.codehaus.mojo
- exec-maven-plugin
-
-
- org.asciidoctor
- asciidoctor-maven-plugin
-
-
- org.apache.maven.plugins
- maven-antrun-plugin
-
-
- maven-deploy-plugin
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
- false
-
-
-
-
diff --git a/docs/src/main/asciidoc/ghpages.sh b/docs/src/main/asciidoc/ghpages.sh
deleted file mode 100755
index 55e76be1..00000000
--- a/docs/src/main/asciidoc/ghpages.sh
+++ /dev/null
@@ -1,330 +0,0 @@
-#!/bin/bash -x
-
-set -e
-
-# Set default props like MAVEN_PATH, ROOT_FOLDER etc.
-function set_default_props() {
- # The script should be executed from the root folder
- ROOT_FOLDER=`pwd`
- echo "Current folder is ${ROOT_FOLDER}"
-
- if [[ ! -e "${ROOT_FOLDER}/.git" ]]; then
- echo "You're not in the root folder of the project!"
- exit 1
- fi
-
- # Prop that will let commit the changes
- COMMIT_CHANGES="no"
- MAVEN_PATH=${MAVEN_PATH:-}
- echo "Path to Maven is [${MAVEN_PATH}]"
- REPO_NAME=${PWD##*/}
- echo "Repo name is [${REPO_NAME}]"
- SPRING_CLOUD_STATIC_REPO=${SPRING_CLOUD_STATIC_REPO:-git@github.com:spring-cloud/spring-cloud-static.git}
- echo "Spring Cloud Static repo is [${SPRING_CLOUD_STATIC_REPO}"
-}
-
-# Check if gh-pages exists and docs have been built
-function check_if_anything_to_sync() {
- git remote set-url --push origin `git config remote.origin.url | sed -e 's/^git:/https:/'`
-
- if ! (git remote set-branches --add origin gh-pages && git fetch -q); then
- echo "No gh-pages, so not syncing"
- exit 0
- fi
-
- if ! [ -d docs/target/generated-docs ] && ! [ "${BUILD}" == "yes" ]; then
- echo "No gh-pages sources in docs/target/generated-docs, so not syncing"
- exit 0
- fi
-}
-
-function retrieve_current_branch() {
- # Code getting the name of the current branch. For master we want to publish as we did until now
- # https://stackoverflow.com/questions/1593051/how-to-programmatically-determine-the-current-checked-out-git-branch
- # If there is a branch already passed will reuse it - otherwise will try to find it
- CURRENT_BRANCH=${BRANCH}
- if [[ -z "${CURRENT_BRANCH}" ]] ; then
- CURRENT_BRANCH=$(git symbolic-ref -q HEAD)
- CURRENT_BRANCH=${CURRENT_BRANCH##refs/heads/}
- CURRENT_BRANCH=${CURRENT_BRANCH:-HEAD}
- fi
- echo "Current branch is [${CURRENT_BRANCH}]"
- git checkout ${CURRENT_BRANCH} || echo "Failed to check the branch... continuing with the script"
-}
-
-# Switches to the provided value of the release version. We always prefix it with `v`
-function switch_to_tag() {
- git checkout v${VERSION}
-}
-
-# Build the docs if switch is on
-function build_docs_if_applicable() {
- if [[ "${BUILD}" == "yes" ]] ; then
- ./mvnw clean install -P docs -pl docs -DskipTests
- fi
-}
-
-# Get the name of the `docs.main` property
-# Get whitelisted branches - assumes that a `docs` module is available under `docs` profile
-function retrieve_doc_properties() {
- MAIN_ADOC_VALUE=$("${MAVEN_PATH}"mvn -q \
- -Dexec.executable="echo" \
- -Dexec.args='${docs.main}' \
- --non-recursive \
- org.codehaus.mojo:exec-maven-plugin:1.3.1:exec)
- echo "Extracted 'main.adoc' from Maven build [${MAIN_ADOC_VALUE}]"
-
-
- WHITELIST_PROPERTY=${WHITELIST_PROPERTY:-"docs.whitelisted.branches"}
- WHITELISTED_BRANCHES_VALUE=$("${MAVEN_PATH}"mvn -q \
- -Dexec.executable="echo" \
- -Dexec.args="\${${WHITELIST_PROPERTY}}" \
- org.codehaus.mojo:exec-maven-plugin:1.3.1:exec \
- -P docs \
- -pl docs)
- echo "Extracted '${WHITELIST_PROPERTY}' from Maven build [${WHITELISTED_BRANCHES_VALUE}]"
-}
-
-# Stash any outstanding changes
-function stash_changes() {
- git diff-index --quiet HEAD && dirty=$? || (echo "Failed to check if the current repo is dirty. Assuming that it is." && dirty="1")
- if [ "$dirty" != "0" ]; then git stash; fi
-}
-
-# Switch to gh-pages branch to sync it with current branch
-function add_docs_from_target() {
- local DESTINATION_REPO_FOLDER
- if [[ -z "${DESTINATION}" && -z "${CLONE}" ]] ; then
- DESTINATION_REPO_FOLDER=${ROOT_FOLDER}
- elif [[ "${CLONE}" == "yes" ]]; then
- mkdir -p ${ROOT_FOLDER}/target
- local clonedStatic=${ROOT_FOLDER}/target/spring-cloud-static
- if [[ ! -e "${clonedStatic}/.git" ]]; then
- echo "Cloning Spring Cloud Static to target"
- git clone ${SPRING_CLOUD_STATIC_REPO} ${clonedStatic} && git checkout gh-pages
- else
- echo "Spring Cloud Static already cloned - will pull changes"
- cd ${clonedStatic} && git checkout gh-pages && git pull origin gh-pages
- fi
- DESTINATION_REPO_FOLDER=${clonedStatic}/${REPO_NAME}
- mkdir -p ${DESTINATION_REPO_FOLDER}
- else
- if [[ ! -e "${DESTINATION}/.git" ]]; then
- echo "[${DESTINATION}] is not a git repository"
- exit 1
- fi
- DESTINATION_REPO_FOLDER=${DESTINATION}/${REPO_NAME}
- mkdir -p ${DESTINATION_REPO_FOLDER}
- echo "Destination was provided [${DESTINATION}]"
- fi
- cd ${DESTINATION_REPO_FOLDER}
- git checkout gh-pages
- git pull origin gh-pages
-
- # Add git branches
- ###################################################################
- if [[ -z "${VERSION}" ]] ; then
- copy_docs_for_current_version
- else
- copy_docs_for_provided_version
- fi
- commit_changes_if_applicable
-}
-
-
-# Copies the docs by using the retrieved properties from Maven build
-function copy_docs_for_current_version() {
- if [[ "${CURRENT_BRANCH}" == "master" ]] ; then
- echo -e "Current branch is master - will copy the current docs only to the root folder"
- for f in docs/target/generated-docs/*; do
- file=${f#docs/target/generated-docs/*}
- if ! git ls-files -i -o --exclude-standard --directory | grep -q ^$file$; then
- # Not ignored...
- cp -rf $f ${ROOT_FOLDER}/
- git add -A ${ROOT_FOLDER}/$file
- fi
- done
- COMMIT_CHANGES="yes"
- else
- echo -e "Current branch is [${CURRENT_BRANCH}]"
- # https://stackoverflow.com/questions/29300806/a-bash-script-to-check-if-a-string-is-present-in-a-comma-separated-list-of-strin
- if [[ ",${WHITELISTED_BRANCHES_VALUE}," = *",${CURRENT_BRANCH},"* ]] ; then
- mkdir -p ${ROOT_FOLDER}/${CURRENT_BRANCH}
- echo -e "Branch [${CURRENT_BRANCH}] is whitelisted! Will copy the current docs to the [${CURRENT_BRANCH}] folder"
- for f in docs/target/generated-docs/*; do
- file=${f#docs/target/generated-docs/*}
- if ! git ls-files -i -o --exclude-standard --directory | grep -q ^$file$; then
- # Not ignored...
- # We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
- if [[ "${file}" == "${MAIN_ADOC_VALUE}.html" ]] ; then
- # We don't want to copy the spring-cloud-sleuth.html
- # we want it to be converted to index.html
- cp -rf $f ${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html
- git add -A ${ROOT_FOLDER}/${CURRENT_BRANCH}/index.html
- else
- cp -rf $f ${ROOT_FOLDER}/${CURRENT_BRANCH}
- git add -A ${ROOT_FOLDER}/${CURRENT_BRANCH}/$file
- fi
- fi
- done
- COMMIT_CHANGES="yes"
- else
- echo -e "Branch [${CURRENT_BRANCH}] is not on the white list! Check out the Maven [${WHITELIST_PROPERTY}] property in
- [docs] module available under [docs] profile. Won't commit any changes to gh-pages for this branch."
- fi
- fi
-}
-
-# Copies the docs by using the explicitly provided version
-function copy_docs_for_provided_version() {
- local FOLDER=${DESTINATION_REPO_FOLDER}/${VERSION}
- mkdir -p ${FOLDER}
- echo -e "Current tag is [v${VERSION}] Will copy the current docs to the [${FOLDER}] folder"
- for f in ${ROOT_FOLDER}/docs/target/generated-docs/*; do
- file=${f#${ROOT_FOLDER}/docs/target/generated-docs/*}
- copy_docs_for_branch ${file} ${FOLDER}
- done
- COMMIT_CHANGES="yes"
- CURRENT_BRANCH="v${VERSION}"
-}
-
-# Copies the docs from target to the provided destination
-# Params:
-# $1 - file from target
-# $2 - destination to which copy the files
-function copy_docs_for_branch() {
- local file=$1
- local destination=$2
- if ! git ls-files -i -o --exclude-standard --directory | grep -q ^${file}$; then
- # Not ignored...
- # We want users to access 1.0.0.RELEASE/ instead of 1.0.0.RELEASE/spring-cloud.sleuth.html
- if [[ ("${file}" == "${MAIN_ADOC_VALUE}.html") || ("${file}" == "${REPO_NAME}.html") ]] ; then
- # We don't want to copy the spring-cloud-sleuth.html
- # we want it to be converted to index.html
- cp -rf $f ${destination}/index.html
- git add -A ${destination}/index.html
- else
- cp -rf $f ${destination}
- git add -A ${destination}/$file
- fi
- fi
-}
-
-function commit_changes_if_applicable() {
- if [[ "${COMMIT_CHANGES}" == "yes" ]] ; then
- COMMIT_SUCCESSFUL="no"
- git commit -a -m "Sync docs from ${CURRENT_BRANCH} to gh-pages" && COMMIT_SUCCESSFUL="yes" || echo "Failed to commit changes"
-
- # Uncomment the following push if you want to auto push to
- # the gh-pages branch whenever you commit to master locally.
- # This is a little extreme. Use with care!
- ###################################################################
- if [[ "${COMMIT_SUCCESSFUL}" == "yes" ]] ; then
- git push origin gh-pages
- fi
- fi
-}
-
-# Switch back to the previous branch and exit block
-function checkout_previous_branch() {
- # If -version was provided we need to come back to root project
- cd ${ROOT_FOLDER}
- git checkout ${CURRENT_BRANCH} || echo "Failed to check the branch... continuing with the script"
- if [ "$dirty" != "0" ]; then git stash pop; fi
- exit 0
-}
-
-# Assert if properties have been properly passed
-function assert_properties() {
-echo "VERSION [${VERSION}], DESTINATION [${DESTINATION}], CLONE [${CLONE}]"
-if [[ "${VERSION}" != "" && (-z "${DESTINATION}" && -z "${CLONE}") ]] ; then echo "Version was set but destination / clone was not!"; exit 1;fi
-if [[ ("${DESTINATION}" != "" && "${CLONE}" != "") && -z "${VERSION}" ]] ; then echo "Destination / clone was set but version was not!"; exit 1;fi
-if [[ "${DESTINATION}" != "" && "${CLONE}" == "yes" ]] ; then echo "Destination and clone was set. Pick one!"; exit 1;fi
-}
-
-# Prints the usage
-function print_usage() {
-cat </`
-- if the destination switch is passed (-d) then the script will check if the provided dir is a git repo and then will
- switch to gh-pages of that repo and copy the generated docs to `docs//`
-
-USAGE:
-
-You can use the following options:
-
--v|--version - the script will apply the whole procedure for a particular library version
--d|--destination - the root of destination folder where the docs should be copied. You have to use the full path.
- E.g. point to spring-cloud-static folder. Can't be used with (-c)
--b|--build - will run the standard build process after checking out the branch
--c|--clone - will automatically clone the spring-cloud-static repo instead of providing the destination.
- Obviously can't be used with (-d)
-
-EOF
-}
-
-
-# ==========================================
-# ____ ____ _____ _____ _____ _______
-# / ____|/ ____| __ \|_ _| __ \__ __|
-# | (___ | | | |__) | | | | |__) | | |
-# \___ \| | | _ / | | | ___/ | |
-# ____) | |____| | \ \ _| |_| | | |
-# |_____/ \_____|_| \_\_____|_| |_|
-#
-# ==========================================
-
-while [[ $# > 0 ]]
-do
-key="$1"
-case ${key} in
- -v|--version)
- VERSION="$2"
- shift # past argument
- ;;
- -d|--destination)
- DESTINATION="$2"
- shift # past argument
- ;;
- -b|--build)
- BUILD="yes"
- ;;
- -c|--clone)
- CLONE="yes"
- ;;
- -h|--help)
- print_usage
- exit 0
- ;;
- *)
- echo "Invalid option: [$1]"
- print_usage
- exit 1
- ;;
-esac
-shift # past argument or value
-done
-
-assert_properties
-set_default_props
-check_if_anything_to_sync
-if [[ -z "${VERSION}" ]] ; then
- retrieve_current_branch
-else
- switch_to_tag
-fi
-build_docs_if_applicable
-retrieve_doc_properties
-stash_changes
-add_docs_from_target
-checkout_previous_branch
\ No newline at end of file
diff --git a/download/vault_1.5.0_darwin_amd64.zip b/download/vault_1.5.0_darwin_amd64.zip
new file mode 100644
index 00000000..150889c8
Binary files /dev/null and b/download/vault_1.5.0_darwin_amd64.zip differ
diff --git a/etc/ide/eclipse-code-formatter.xml b/etc/ide/eclipse-code-formatter.xml
deleted file mode 100644
index 24955522..00000000
--- a/etc/ide/eclipse-code-formatter.xml
+++ /dev/null
@@ -1,755 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mvnw b/mvnw
index 41f7bd60..41c0f0c2 100755
--- a/mvnw
+++ b/mvnw
@@ -8,7 +8,7 @@
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
-# https://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
@@ -19,7 +19,7 @@
# ----------------------------------------------------------------------------
# ----------------------------------------------------------------------------
-# Maven2 Start Up Batch script
+# Maven Start Up Batch script
#
# Required ENV vars:
# ------------------
@@ -54,38 +54,16 @@ case "`uname`" in
CYGWIN*) cygwin=true ;;
MINGW*) mingw=true;;
Darwin*) darwin=true
- #
- # Look for the Apple JDKs first to preserve the existing behaviour, and then look
- # for the new JDKs provided by Oracle.
- #
- if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then
- #
- # Apple JDKs
- #
- export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
- fi
-
- if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then
- #
- # Apple JDKs
- #
- export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
- fi
-
- if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then
- #
- # Oracle JDKs
- #
- export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home
- fi
-
- if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
- #
- # Apple JDKs
- #
- export JAVA_HOME=`/usr/libexec/java_home`
- fi
- ;;
+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+ if [ -z "$JAVA_HOME" ]; then
+ if [ -x "/usr/libexec/java_home" ]; then
+ export JAVA_HOME="`/usr/libexec/java_home`"
+ else
+ export JAVA_HOME="/Library/Java/Home"
+ fi
+ fi
+ ;;
esac
if [ -z "$JAVA_HOME" ] ; then
@@ -130,13 +108,12 @@ if $cygwin ; then
CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
fi
-# For Migwn, ensure paths are in UNIX format before anything is touched
+# For Mingw, ensure paths are in UNIX format before anything is touched
if $mingw ; then
[ -n "$M2_HOME" ] &&
M2_HOME="`(cd "$M2_HOME"; pwd)`"
[ -n "$JAVA_HOME" ] &&
JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
- # TODO classpath?
fi
if [ -z "$JAVA_HOME" ]; then
@@ -184,27 +161,28 @@ fi
CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin; then
- [ -n "$M2_HOME" ] &&
- M2_HOME=`cygpath --path --windows "$M2_HOME"`
- [ -n "$JAVA_HOME" ] &&
- JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
- [ -n "$CLASSPATH" ] &&
- CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
-fi
-
# traverses directory structure from process work directory to filesystem root
# first directory with .mvn subdirectory is considered project base directory
find_maven_basedir() {
- local basedir=$(pwd)
- local wdir=$(pwd)
+
+ if [ -z "$1" ]
+ then
+ echo "Path not specified to find_maven_basedir"
+ return 1
+ fi
+
+ basedir="$1"
+ wdir="$1"
while [ "$wdir" != '/' ] ; do
if [ -d "$wdir"/.mvn ] ; then
basedir=$wdir
break
fi
- wdir=$(cd "$wdir/.."; pwd)
+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+ if [ -d "${wdir}" ]; then
+ wdir=`cd "$wdir/.."; pwd`
+ fi
+ # end of workaround
done
echo "${basedir}"
}
@@ -216,9 +194,108 @@ concat_lines() {
fi
}
-export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)}
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+ exit 1;
+fi
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found .mvn/wrapper/maven-wrapper.jar"
+ fi
+else
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
+ fi
+ if [ -n "$MVNW_REPOURL" ]; then
+ jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+ else
+ jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+ fi
+ while IFS="=" read key value; do
+ case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
+ esac
+ done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Downloading from: $jarUrl"
+ fi
+ wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+ if $cygwin; then
+ wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
+ fi
+
+ if command -v wget > /dev/null; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found wget ... using wget"
+ fi
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ wget "$jarUrl" -O "$wrapperJarPath"
+ else
+ wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath"
+ fi
+ elif command -v curl > /dev/null; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found curl ... using curl"
+ fi
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ curl -o "$wrapperJarPath" "$jarUrl" -f
+ else
+ curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
+ fi
+
+ else
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Falling back to using Java to download"
+ fi
+ javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+ # For Cygwin, switch paths to Windows format before running javac
+ if $cygwin; then
+ javaClass=`cygpath --path --windows "$javaClass"`
+ fi
+ if [ -e "$javaClass" ]; then
+ if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo " - Compiling MavenWrapperDownloader.java ..."
+ fi
+ # Compiling the Java class
+ ("$JAVA_HOME/bin/javac" "$javaClass")
+ fi
+ if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+ # Running the downloader
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo " - Running MavenWrapperDownloader.java ..."
+ fi
+ ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
+ fi
+ fi
+ fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+if [ "$MVNW_VERBOSE" = true ]; then
+ echo $MAVEN_PROJECTBASEDIR
+fi
MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+ [ -n "$M2_HOME" ] &&
+ M2_HOME=`cygpath --path --windows "$M2_HOME"`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+ [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+ MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
# Provide a "standardized" way to retrieve the CLI args that will
# work with both Windows and non-Windows executions.
MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
@@ -226,20 +303,8 @@ export MAVEN_CMD_LINE_ARGS
WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-echo "Running version check"
-VERSION=$( sed '\!//' -e 's!.*$!!' )
-echo "The found version is [${VERSION}]"
-
-if echo $VERSION | egrep -q 'M|RC'; then
- echo Activating \"milestone\" profile for version=\"$VERSION\"
- echo $MAVEN_ARGS | grep -q milestone || MAVEN_ARGS="$MAVEN_ARGS -Pmilestone"
-else
- echo Deactivating \"milestone\" profile for version=\"$VERSION\"
- echo $MAVEN_ARGS | grep -q milestone && MAVEN_ARGS=$(echo $MAVEN_ARGS | sed -e 's/-Pmilestone//')
-fi
-
exec "$JAVACMD" \
$MAVEN_OPTS \
-classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
"-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
- ${WRAPPER_LAUNCHER} ${MAVEN_ARGS} "$@"
+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
index 4b98b78c..86115719 100644
--- a/mvnw.cmd
+++ b/mvnw.cmd
@@ -7,7 +7,7 @@
@REM "License"); you may not use this file except in compliance
@REM with the License. You may obtain a copy of the License at
@REM
-@REM https://www.apache.org/licenses/LICENSE-2.0
+@REM http://www.apache.org/licenses/LICENSE-2.0
@REM
@REM Unless required by applicable law or agreed to in writing,
@REM software distributed under the License is distributed on an
@@ -18,7 +18,7 @@
@REM ----------------------------------------------------------------------------
@REM ----------------------------------------------------------------------------
-@REM Maven2 Start Up Batch script
+@REM Maven Start Up Batch script
@REM
@REM Required ENV vars:
@REM JAVA_HOME - location of a JDK home dir
@@ -26,7 +26,7 @@
@REM Optional ENV vars
@REM M2_HOME - location of maven2's installed home dir
@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
-@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
@REM e.g. to debug Maven itself, use
@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
@@ -35,7 +35,9 @@
@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
@echo off
-@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on'
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
@REM set %HOME% to equivalent of $HOME
@@ -80,8 +82,6 @@ goto error
:init
-set MAVEN_CMD_LINE_ARGS=%*
-
@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
@REM Fallback to current working directory if not found.
@@ -117,11 +117,48 @@ for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do s
:endReadAdditionalConfig
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
-
-set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar""
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
-%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS%
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+
+FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %DOWNLOAD_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
if ERRORLEVEL 1 goto error
goto end
@@ -142,4 +179,4 @@ if "%MAVEN_BATCH_PAUSE%" == "on" pause
if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE%
-exit /B %ERROR_CODE%
\ No newline at end of file
+exit /B %ERROR_CODE%
diff --git a/pom.xml b/pom.xml
index 6ec4e0ad..cca499ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,362 +1,70 @@
-
-
+
+
+
4.0.0
-
- org.springframework.cloud
- spring-cloud-build
- 4.1.0-SNAPSHOT
-
-
-
-
- spring-cloud-vault-parent
- 4.1.0-SNAPSHOT
- pom
-
- Spring Cloud Vault
- Configuration Integration with HashiCorp Vault
-
-
- spring-cloud-vault-dependencies
- spring-cloud-vault-config
- spring-cloud-vault-config-databases
- spring-cloud-vault-config-consul
- spring-cloud-vault-config-rabbitmq
- spring-cloud-vault-config-aws
- spring-cloud-starter-vault-config
- docs
-
+ org.springframework.cloud
+ spring-cloud-vault-docs-build
+ 0.0.1-SNAPSHOT
+ Spring Cloud Vault Docs Build
+ Builds Spring Cloud Vault Docs.
+ https://spring.io/projects/spring-cloud-vault
- https://github.com/spring-cloud/spring-cloud-vault
- scm:git:git://github.com/spring-cloud/spring-cloud-vault.git
+ scm:git:https://github.com/spring-cloud/spring-cloud-vault.git
- scm:git:ssh://git@github.com/spring-cloud/spring-cloud-vault.git
+ scm:git:git@github.com:spring-cloud/spring-cloud-vault.git
- HEAD
+ https://github.com/spring-cloud/spring-cloud-vault
+
+ https://github.com/spring-cloud/spring-cloud-vault/issues
+
- UTF-8
- 4.1.0-SNAPSHOT
- 1.70
-
- v1-rev20201112-1.31.0
- 1.2.2
- 0.22.2
+ 0.0.3
-
-
-
- org.springframework.cloud
- spring-cloud-commons-dependencies
- ${spring-cloud-commons.version}
- pom
- import
-
-
-
- org.springframework.cloud
- spring-cloud-vault-config
- ${project.version}
- test-jar
- test
-
-
-
- org.springframework.cloud
- spring-cloud-vault-dependencies
- ${project.version}
- import
- pom
-
-
-
-
-
-
- org.bouncycastle
- bcpkix-jdk15on
- ${bcpkix-jdk15on.version}
- true
-
-
-
-
- com.google.apis
- google-api-services-iam
- ${google-api-services-iam.version}
- true
-
-
-
- com.google.cloud
- google-cloud-iamcredentials
- ${google-cloud-iamcredentials.version}
- true
-
-
- com.fasterxml.jackson.core
- jackson-core
-
-
- org.apache.httpcomponents
- httpclient
-
-
- commons-logging
- commons-logging
-
-
-
-
-
- com.google.auth
- google-auth-library-oauth2-http
- ${google-auth-library-oauth2-http.version}
- true
-
-
-
-
-
-
-
- jakarta.validation
- jakarta.validation-api
- provided
-
-
-
- org.hibernate.validator
- hibernate-validator
- provided
-
-
-
- org.springframework.boot
- spring-boot-autoconfigure
- provided
-
-
-
- org.springframework.boot
- spring-boot-starter
- provided
-
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- org.assertj
- assertj-core
- 3.18.1
- test
-
-
-
-
-
- ../src/main/resources
- META-INF
-
-
- src/main/resources
-
-
-
- org.codehaus.mojo
- flatten-maven-plugin
- 1.2.5
-
-
- io.spring.javaformat
- spring-javaformat-maven-plugin
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
+ io.spring.maven.antora
+ antora-maven-plugin
+ ${io.spring.maven.antora-version}
+ true
+
+
+
+
+
+
+
+ 9d489079e5ec46dbb238909fee5c9c29
+ WB1FQYI187
+ springcloudvault
+
+
-
-
-
-
- org.apache.maven.plugins
- maven-deploy-plugin
- 2.8.2
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 3.2.0
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 3.2.0
-
-
-
- org.apache.maven.plugins
- maven-release-plugin
- 2.5.3
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
- 3.2.1
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.22.2
-
- true
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
-
-
-
-
-
-
-
- sonar
-
- false
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- 0.8.6
-
- ${sonar.jacoco.reportPath}
- true
-
-
-
- agent
-
- prepare-agent
-
-
-
- report
-
- report
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
-
- listener
- org.sonar.java.jacoco.JUnitListener
-
-
-
-
-
-
-
-
- spring
-
- true
-
-
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
- true
-
-
- false
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/libs-milestone-local
-
- false
-
-
-
- spring-releases
- Spring Releases
- https://repo.spring.io/release
-
- false
-
-
-
-
-
- spring-snapshots
- Spring Snapshots
- https://repo.spring.io/snapshot
-
- true
-
-
- false
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/libs-milestone-local
-
- false
-
-
-
- spring-releases
- Spring Releases
- https://repo.spring.io/libs-release-local
-
- false
-
-
-
-
-
+
+
+ spring-snapshot
+ https://repo.spring.io/snapshot
+
+ true
+
+
+ false
+
+
+
+ spring-milestone
+ https://repo.spring.io/milestone
+
+
diff --git a/spring-cloud-starter-vault-config/.flattened-pom.xml b/spring-cloud-starter-vault-config/.flattened-pom.xml
new file mode 100644
index 00000000..e57977a1
--- /dev/null
+++ b/spring-cloud-starter-vault-config/.flattened-pom.xml
@@ -0,0 +1,169 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-vault-parent
+ 4.1.0-SNAPSHOT
+ ..
+
+ org.springframework.cloud
+ spring-cloud-starter-vault-config
+ 4.1.0-SNAPSHOT
+ Spring Cloud Starter Vault Config
+ Starter for exposing Spring Cloud Vault Config
+ https://cloud.spring.io/spring-cloud-vault/
+
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+ Copyright 2014-2021 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+ dsyer
+ Dave Syer
+ dsyer at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ sgibb
+ Spencer Gibb
+ sgibb at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ mgrzejszczak
+ Marcin Grzejszczak
+ mgrzejszczak at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ rbaxter
+ Ryan Baxter
+ rbaxter at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ omaciaszeksharma
+ Olga Maciaszek-Sharma
+ omaciaszeksharma at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+
+ scm:git:git://github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-starter-vault-config
+ scm:git:ssh://git@github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-starter-vault-config
+ https://github.com/spring-cloud/spring-cloud-vault/spring-cloud-starter-vault-config
+
+
+
+ org.apache.httpcomponents.client5
+ httpclient5
+ 5.2.1
+ compile
+
+
+ org.apache.httpcomponents.core5
+ httpcore5
+ 5.2.1
+ compile
+
+
+ org.springframework.cloud
+ spring-cloud-starter
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.vault
+ spring-vault-core
+ 3.0.2
+ compile
+
+
+ spring-core
+ org.springframework
+
+
+ spring-beans
+ org.springframework
+
+
+ spring-web
+ org.springframework
+
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+ provided
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 8.0.0.Final
+ provided
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ 3.2.0-SNAPSHOT
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 3.2.0-SNAPSHOT
+ provided
+
+
+
diff --git a/spring-cloud-starter-vault-config/pom.xml b/spring-cloud-starter-vault-config/pom.xml
deleted file mode 100644
index 841e2624..00000000
--- a/spring-cloud-starter-vault-config/pom.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
- 4.0.0
-
-
- org.springframework.cloud
- spring-cloud-vault-parent
- 4.1.0-SNAPSHOT
- ..
-
-
- spring-cloud-starter-vault-config
-
- Spring Cloud Starter Vault Config
- Starter for exposing Spring Cloud Vault Config
-
- https://cloud.spring.io/spring-cloud-vault/
-
- Pivotal Software, Inc.
- https://www.spring.io
-
-
-
-
- org.apache.httpcomponents.client5
- httpclient5
-
-
-
- org.apache.httpcomponents.core5
- httpcore5
-
-
-
- org.springframework.cloud
- spring-cloud-starter
-
-
-
- org.springframework.cloud
- spring-cloud-vault-config
-
-
-
- org.springframework.vault
- spring-vault-core
-
-
-
-
diff --git a/spring-cloud-starter-vault-config/src/main/resources/META-INF/spring.provides b/spring-cloud-starter-vault-config/src/main/resources/META-INF/spring.provides
deleted file mode 100644
index a4491fb8..00000000
--- a/spring-cloud-starter-vault-config/src/main/resources/META-INF/spring.provides
+++ /dev/null
@@ -1 +0,0 @@
-provides: spring-cloud-vault-config
\ No newline at end of file
diff --git a/spring-cloud-vault-config-aws/.flattened-pom.xml b/spring-cloud-vault-config-aws/.flattened-pom.xml
new file mode 100644
index 00000000..2172d6f3
--- /dev/null
+++ b/spring-cloud-vault-config-aws/.flattened-pom.xml
@@ -0,0 +1,145 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-vault-parent
+ 4.1.0-SNAPSHOT
+ ..
+
+ org.springframework.cloud
+ spring-cloud-vault-config-aws
+ 4.1.0-SNAPSHOT
+ Spring Cloud Vault Config AWS support
+ Spring Cloud Vault Config AWS support
+ https://spring.io/spring-cloud/spring-cloud-vault-parent/spring-cloud-vault-config-aws
+
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+ Copyright 2014-2021 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+ dsyer
+ Dave Syer
+ dsyer at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ sgibb
+ Spencer Gibb
+ sgibb at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ mgrzejszczak
+ Marcin Grzejszczak
+ mgrzejszczak at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ rbaxter
+ Ryan Baxter
+ rbaxter at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ omaciaszeksharma
+ Olga Maciaszek-Sharma
+ omaciaszeksharma at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+
+ scm:git:git://github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-vault-config-aws
+ scm:git:ssh://git@github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-vault-config-aws
+ https://github.com/spring-cloud/spring-cloud-vault/spring-cloud-vault-config-aws
+
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure-processor
+ 3.2.0-SNAPSHOT
+ compile
+ true
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ 3.2.0-SNAPSHOT
+ compile
+ true
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+ provided
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 8.0.0.Final
+ provided
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ 3.2.0-SNAPSHOT
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 3.2.0-SNAPSHOT
+ provided
+
+
+
diff --git a/spring-cloud-vault-config-aws/pom.xml b/spring-cloud-vault-config-aws/pom.xml
deleted file mode 100644
index c8e75052..00000000
--- a/spring-cloud-vault-config-aws/pom.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
- 4.0.0
-
-
- org.springframework.cloud
- spring-cloud-vault-parent
- 4.1.0-SNAPSHOT
- ..
-
-
- spring-cloud-vault-config-aws
- jar
-
- Spring Cloud Vault Config AWS support
- Spring Cloud Vault Config AWS support
-
-
-
-
- org.springframework.cloud
- spring-cloud-vault-config
-
-
-
-
- org.springframework.boot
- spring-boot-autoconfigure-processor
- true
-
-
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
-
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
-
- io.netty
- netty-all
- test
-
-
-
- org.springframework.cloud
- spring-cloud-vault-config
- test-jar
-
-
-
-
diff --git a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/AwsCredentialType.java b/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/AwsCredentialType.java
deleted file mode 100644
index 05733482..00000000
--- a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/AwsCredentialType.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2013-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-/**
- * Supported AWS credential types.
- *
- * @author Kris Iyer
- * @since 3.0.2
- */
-public enum AwsCredentialType {
-
- IAM_USER, ASSUMED_ROLE, FEDERATION_TOKEN
-
-}
diff --git a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/VaultAwsProperties.java b/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/VaultAwsProperties.java
deleted file mode 100644
index 9db95ec2..00000000
--- a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/VaultAwsProperties.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-import java.time.Duration;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.vault.config.VaultSecretBackendDescriptor;
-import org.springframework.lang.Nullable;
-
-/**
- * Configuration properties for Vault using the AWS integration.
- *
- * @author Mark Paluch
- * @author Kris Iyer
- */
-@ConfigurationProperties("spring.cloud.vault.aws")
-public class VaultAwsProperties implements VaultSecretBackendDescriptor {
-
- /**
- * Enable aws backend usage.
- */
- private boolean enabled;
-
- /**
- * Role name for credentials.
- */
- @Nullable
- private String role;
-
- /**
- * aws backend path.
- */
- private String backend = "aws";
-
- /**
- * aws credential type
- */
- private AwsCredentialType credentialType = AwsCredentialType.IAM_USER;
-
- /**
- * Target property for the obtained access key.
- */
- private String accessKeyProperty = "cloud.aws.credentials.accessKey";
-
- /**
- * Target property for the obtained secret key.
- */
- private String secretKeyProperty = "cloud.aws.credentials.secretKey";
-
- /**
- * Target property for the obtained secret key.
- */
- private String sessionTokenKeyProperty = "cloud.aws.credentials.sessionToken";
-
- /**
- * Role arn for assumed_role in case we have multiple roles associated with the vault
- * role.
- * @since 3.0.2
- */
- @Nullable
- private String roleArn;
-
- /**
- * TTL for sts tokens. Defaults to whatever the vault Role may have for Max. Also
- * limited to what AWS supports to be the max for STS.
- * @since 3.0.2
- */
- private Duration ttl = Duration.ZERO;
-
- @Override
- public boolean isEnabled() {
- return this.enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- @Nullable
- public String getRole() {
- return this.role;
- }
-
- public void setRole(@Nullable String role) {
- this.role = role;
- }
-
- @Override
- public String getBackend() {
- return this.backend;
- }
-
- public void setBackend(String backend) {
- this.backend = backend;
- }
-
- public String getAccessKeyProperty() {
- return this.accessKeyProperty;
- }
-
- public void setAccessKeyProperty(String accessKeyProperty) {
- this.accessKeyProperty = accessKeyProperty;
- }
-
- public String getSecretKeyProperty() {
- return this.secretKeyProperty;
- }
-
- public void setSecretKeyProperty(String secretKeyProperty) {
- this.secretKeyProperty = secretKeyProperty;
- }
-
- public AwsCredentialType getCredentialType() {
- return this.credentialType;
- }
-
- public void setCredentialType(AwsCredentialType credentialType) {
- this.credentialType = credentialType;
- }
-
- public String getSessionTokenKeyProperty() {
- return this.sessionTokenKeyProperty;
- }
-
- public void setSessionTokenKeyProperty(String sessionTokenKeyProperty) {
- this.sessionTokenKeyProperty = sessionTokenKeyProperty;
- }
-
- @Nullable
- public String getRoleArn() {
- return this.roleArn;
- }
-
- public void setRoleArn(String roleArn) {
- this.roleArn = roleArn;
- }
-
- public Duration getTtl() {
- return this.ttl;
- }
-
- public void setTtl(Duration ttl) {
- this.ttl = ttl;
- }
-
-}
diff --git a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfiguration.java b/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfiguration.java
deleted file mode 100644
index 03a4f346..00000000
--- a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfiguration.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.StringJoiner;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.cloud.vault.config.LeasingSecretBackendMetadata;
-import org.springframework.cloud.vault.config.PropertyNameTransformer;
-import org.springframework.cloud.vault.config.SecretBackendMetadata;
-import org.springframework.cloud.vault.config.SecretBackendMetadataFactory;
-import org.springframework.cloud.vault.config.VaultSecretBackendDescriptor;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.Assert;
-import org.springframework.util.StringUtils;
-import org.springframework.vault.core.lease.domain.RequestedSecret.Mode;
-import org.springframework.vault.core.util.PropertyTransformer;
-
-/**
- * Bootstrap configuration providing support for the AWS secret backend.
- *
- * @author Mark Paluch
- * @author Kris Iyer
- */
-@Configuration(proxyBeanMethods = false)
-@EnableConfigurationProperties(VaultAwsProperties.class)
-public class VaultConfigAwsBootstrapConfiguration {
-
- @Bean
- @ConditionalOnMissingBean
- public AwsSecretBackendMetadataFactory awsSecretBackendMetadataFactory() {
- return new AwsSecretBackendMetadataFactory();
- }
-
- /**
- * {@link SecretBackendMetadataFactory} for AWS integration using
- * {@link VaultAwsProperties}.
- */
- public static class AwsSecretBackendMetadataFactory implements SecretBackendMetadataFactory {
-
- /**
- * Creates {@link SecretBackendMetadata} for a secret backend using
- * {@link VaultAwsProperties}. This accessor transforms Vault's username/password
- * property names to names provided with
- * {@link VaultAwsProperties#getAccessKeyProperty()} and
- * {@link VaultAwsProperties#getSecretKeyProperty()}.
- * {@link VaultAwsProperties#getSessionTokenKeyProperty()}.
- * @param properties must not be {@literal null}.
- * @return the {@link SecretBackendMetadata}
- */
- static SecretBackendMetadata forAws(final VaultAwsProperties properties) {
-
- Assert.notNull(properties, "VaultAwsProperties must not be null");
-
- PropertyNameTransformer transformer = new PropertyNameTransformer();
- transformer.addKeyTransformation("access_key", properties.getAccessKeyProperty());
- transformer.addKeyTransformation("secret_key", properties.getSecretKeyProperty());
-
- if (properties.getCredentialType() == AwsCredentialType.ASSUMED_ROLE
- || properties.getCredentialType() == AwsCredentialType.FEDERATION_TOKEN) {
-
- // security token transformer for STS
- transformer.addKeyTransformation("security_token", properties.getSessionTokenKeyProperty());
-
- return new AwsStsLeasingSecretBackendMetadata(properties, transformer);
- }
- else {
- return new AwsLeasingSecretBackendMetadata(properties, transformer);
- }
- }
-
- @Override
- public SecretBackendMetadata createMetadata(VaultAwsProperties backendDescriptor) {
- return forAws(backendDescriptor);
- }
-
- @Override
- public boolean supports(VaultSecretBackendDescriptor backendDescriptor) {
- return backendDescriptor instanceof VaultAwsProperties;
- }
-
- private static class AwsStsLeasingSecretBackendMetadata implements LeasingSecretBackendMetadata {
-
- private final VaultAwsProperties properties;
-
- private final PropertyNameTransformer transformer;
-
- AwsStsLeasingSecretBackendMetadata(VaultAwsProperties properties, PropertyNameTransformer transformer) {
- this.properties = properties;
- this.transformer = transformer;
- }
-
- @Override
- public String getName() {
- return String.format("%s with Role %s", this.properties.getBackend(), this.properties.getRole());
- }
-
- @Override
- public String getPath() {
-
- String defaultPath = "%s/sts/%s";
- StringJoiner joiner = new StringJoiner("&");
-
- // ttl for assumed_role or federation_token
- // pass through to let aws take care of min and max validations
- // per the vault role
- if (!this.properties.getTtl().isZero()) {
- joiner.add("ttl=" + this.properties.getTtl().toMillis() + "ms");
- }
-
- // role_arn for assumed_role for vault role that has multiple role
- // associations.
- if (this.properties.getCredentialType() == AwsCredentialType.ASSUMED_ROLE
- && StringUtils.hasText(this.properties.getRoleArn())) {
- joiner.add("role_arn=" + this.properties.getRoleArn());
- }
-
- String pathToUse = joiner.length() == 0 ? defaultPath : defaultPath + "?" + joiner;
-
- return String.format(pathToUse, this.properties.getBackend(), this.properties.getRole());
- }
-
- @Override
- public PropertyTransformer getPropertyTransformer() {
- return this.transformer;
- }
-
- @Override
- public Map getVariables() {
-
- Map variables = new HashMap<>();
-
- variables.put("backend", this.properties.getBackend());
- variables.put("key", String.format("sts/%s", this.properties.getRole()));
-
- return variables;
- }
-
- @Override
- public Mode getLeaseMode() {
- return Mode.ROTATE;
- }
-
- }
-
- private static class AwsLeasingSecretBackendMetadata implements SecretBackendMetadata {
-
- private final VaultAwsProperties properties;
-
- private final PropertyNameTransformer transformer;
-
- AwsLeasingSecretBackendMetadata(VaultAwsProperties properties, PropertyNameTransformer transformer) {
- this.properties = properties;
- this.transformer = transformer;
- }
-
- @Override
- public String getName() {
- return String.format("%s with Role %s", this.properties.getBackend(), this.properties.getRole());
- }
-
- @Override
- public String getPath() {
- return String.format("%s/creds/%s", this.properties.getBackend(), this.properties.getRole());
- }
-
- @Override
- public PropertyTransformer getPropertyTransformer() {
- return this.transformer;
- }
-
- @Override
- public Map getVariables() {
-
- Map variables = new HashMap<>();
-
- variables.put("backend", this.properties.getBackend());
- variables.put("key", String.format("creds/%s", this.properties.getRole()));
-
- return variables;
- }
-
- }
-
- }
-
-}
diff --git a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/package-info.java b/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/package-info.java
deleted file mode 100644
index 07e0bc8d..00000000
--- a/spring-cloud-vault-config-aws/src/main/java/org/springframework/cloud/vault/config/aws/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2018-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * AWS integration with Vault.
- * @author Mark Paluch
- */
-@org.springframework.lang.NonNullApi
-@org.springframework.lang.NonNullFields
-package org.springframework.cloud.vault.config.aws;
diff --git a/spring-cloud-vault-config-aws/src/main/resources/META-INF/spring.factories b/spring-cloud-vault-config-aws/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index b049588e..00000000
--- a/spring-cloud-vault-config-aws/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,9 +0,0 @@
-# Bootstrap Configuration
-org.springframework.cloud.bootstrap.BootstrapConfiguration=\
-org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfiguration
-
-org.springframework.cloud.vault.config.SecretBackendMetadataFactory=\
-org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfiguration.AwsSecretBackendMetadataFactory
-
-org.springframework.cloud.vault.config.VaultSecretBackendDescriptor=\
-org.springframework.cloud.vault.config.aws.VaultAwsProperties
diff --git a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java
deleted file mode 100644
index 1bb55bc6..00000000
--- a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/AwsSecretIntegrationTests.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import org.springframework.cloud.vault.config.VaultConfigOperations;
-import org.springframework.cloud.vault.config.VaultConfigTemplate;
-import org.springframework.cloud.vault.config.VaultProperties;
-import org.springframework.cloud.vault.util.IntegrationTestSupport;
-import org.springframework.cloud.vault.util.Settings;
-import org.springframework.util.StringUtils;
-import org.springframework.vault.core.VaultOperations;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
-import static org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfiguration.AwsSecretBackendMetadataFactory.forAws;
-
-/**
- * Integration tests for {@link VaultConfigTemplate} using the aws secret backend. This
- * test requires AWS credentials and a region, see {@link #AWS_ACCESS_KEY} and
- * {@link #AWS_SECRET_KEY} to be provided externally.
- *
- * @author Mark Paluch
- */
-// FIXME: 4.0.0
-@Ignore("NoClassDefFoundError: org/springframework/http/client/Netty4ClientHttpRequestFactory")
-public class AwsSecretIntegrationTests extends IntegrationTestSupport {
-
- private static final String AWS_REGION = "eu-west-1";
-
- private static final String AWS_ACCESS_KEY = System.getProperty("aws.access.key");
-
- private static final String AWS_SECRET_KEY = System.getProperty("aws.secret.key");
-
- private static final String ARN = "arn:aws:iam::aws:policy/ReadOnlyAccess";
-
- private VaultProperties vaultProperties = Settings.createVaultProperties();
-
- private VaultConfigOperations configOperations;
-
- private VaultAwsProperties aws = new VaultAwsProperties();
-
- /**
- * Initialize the aws secret backend.
- */
- @Before
- public void setUp() {
-
- assumeTrue(StringUtils.hasText(AWS_ACCESS_KEY) && StringUtils.hasText(AWS_SECRET_KEY));
-
- this.aws.setEnabled(true);
- this.aws.setRole("readonly");
-
- if (!prepare().hasSecretBackend(this.aws.getBackend())) {
- prepare().mountSecret(this.aws.getBackend());
- }
-
- VaultOperations vaultOperations = prepare().getVaultOperations();
-
- Map connection = new HashMap<>();
- connection.put("region", AWS_REGION);
- connection.put("access_key", AWS_ACCESS_KEY);
- connection.put("secret_key", AWS_SECRET_KEY);
-
- vaultOperations.write(String.format("%s/config/root", this.aws.getBackend()), connection);
-
- vaultOperations.write(String.format("%s/roles/%s", this.aws.getBackend(), this.aws.getRole()),
- Collections.singletonMap("arn", ARN));
-
- this.configOperations = new VaultConfigTemplate(vaultOperations, this.vaultProperties);
- }
-
- @Test
- public void shouldCreateCredentialsCorrectly() {
-
- Map secretProperties = this.configOperations.read(forAws(this.aws)).getData();
-
- assertThat(secretProperties).containsKeys("cloud.aws.credentials.accessKey", "cloud.aws.credentials.secretKey");
- }
-
-}
diff --git a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationTests.java b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationTests.java
deleted file mode 100644
index e96d2629..00000000
--- a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationTests.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2017-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.vault.config.KeyValueSecretBackendMetadata;
-import org.springframework.cloud.vault.config.SecretBackendMetadata;
-import org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfiguration.AwsSecretBackendMetadataFactory;
-import org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfigurationTests.CustomBootstrapConfiguration;
-import org.springframework.cloud.vault.util.IntegrationTestSupport;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.context.junit4.SpringRunner;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Tests for {@link VaultConfigAwsBootstrapConfiguration}.
- *
- * @author Mark Paluch
- */
-// FIXME: 4.0.0
-@Ignore("NoClassDefFoundError: org/springframework/http/client/Netty4ClientHttpRequestFactory")
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = CustomBootstrapConfiguration.class,
- properties = { "VaultConfigAwsBootstrapConfigurationTests.custom.config=true",
- "spring.cloud.vault.aws.role=foo", "spring.cloud.bootstrap.enabled=true" })
-public class VaultConfigAwsBootstrapConfigurationTests extends IntegrationTestSupport {
-
- @Autowired
- AwsSecretBackendMetadataFactory factory;
-
- @Autowired
- VaultAwsProperties properties;
-
- @Test
- public void shouldApplyCustomConfiguration() {
-
- SecretBackendMetadata metadata = this.factory.createMetadata(this.properties);
-
- assertThat(metadata).isInstanceOf(KeyValueSecretBackendMetadata.class);
- assertThat(metadata.getPath()).isEqualTo(this.properties.getRole());
- }
-
- @Configuration(proxyBeanMethods = false)
- public static class CustomBootstrapConfiguration {
-
- @Bean
- @ConditionalOnProperty("VaultConfigAwsBootstrapConfigurationTests.custom.config")
- AwsSecretBackendMetadataFactory customFactory() {
-
- return new AwsSecretBackendMetadataFactory() {
- @Override
- public SecretBackendMetadata createMetadata(VaultAwsProperties backendDescriptor) {
- return KeyValueSecretBackendMetadata.create(backendDescriptor.getRole());
- }
- };
- }
-
- }
-
-}
diff --git a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationUnitTests.java b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationUnitTests.java
deleted file mode 100644
index e52c3803..00000000
--- a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsBootstrapConfigurationUnitTests.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-import java.time.Duration;
-
-import org.junit.jupiter.api.Test;
-
-import org.springframework.cloud.vault.config.SecretBackendMetadata;
-import org.springframework.cloud.vault.config.SecretBackendMetadataFactory;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Unit tests for {@link VaultConfigAwsBootstrapConfiguration}.
- *
- * @author Mark Paluch
- */
-public class VaultConfigAwsBootstrapConfigurationUnitTests {
-
- @Test
- void shouldCreateIamTokenSecretBackendMetadataFactory() {
-
- VaultAwsProperties properties = new VaultAwsProperties();
- properties.setRole("readonly");
-
- SecretBackendMetadataFactory factory = new VaultConfigAwsBootstrapConfiguration()
- .awsSecretBackendMetadataFactory();
-
- SecretBackendMetadata metadata = factory.createMetadata(properties);
-
- assertThat(metadata.getPath()).isEqualTo("aws/creds/readonly");
- assertThat(metadata.getVariables()).containsEntry("backend", "aws").containsEntry("key", "creds/readonly");
- }
-
- @Test
- void shouldCreateStsTokenSecretBackendMetadataFactory() {
-
- VaultAwsProperties properties = new VaultAwsProperties();
- properties.setCredentialType(AwsCredentialType.FEDERATION_TOKEN);
- properties.setRole("readonly");
-
- SecretBackendMetadataFactory factory = new VaultConfigAwsBootstrapConfiguration()
- .awsSecretBackendMetadataFactory();
-
- SecretBackendMetadata metadata = factory.createMetadata(properties);
-
- assertThat(metadata.getPath()).isEqualTo("aws/sts/readonly");
- assertThat(metadata.getVariables()).containsEntry("backend", "aws").containsEntry("key", "sts/readonly");
- }
-
- @Test
- void shouldCreateStsTokenSecretBackendMetadataFactoryWithTtlAndRoleArn() {
-
- VaultAwsProperties properties = new VaultAwsProperties();
- properties.setCredentialType(AwsCredentialType.ASSUMED_ROLE);
- properties.setRoleArn("1:2:3");
- properties.setTtl(Duration.ofMinutes(1));
- properties.setRole("readonly");
-
- SecretBackendMetadataFactory factory = new VaultConfigAwsBootstrapConfiguration()
- .awsSecretBackendMetadataFactory();
-
- SecretBackendMetadata metadata = factory.createMetadata(properties);
-
- assertThat(metadata.getPath()).isEqualTo("aws/sts/readonly?ttl=60000ms&role_arn=1:2:3");
- assertThat(metadata.getVariables()).containsEntry("backend", "aws").containsEntry("key", "sts/readonly");
- }
-
-}
diff --git a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java b/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java
deleted file mode 100644
index 04482c94..00000000
--- a/spring-cloud-vault-config-aws/src/test/java/org/springframework/cloud/vault/config/aws/VaultConfigAwsTests.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.aws;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.vault.util.VaultRule;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.util.StringUtils;
-import org.springframework.vault.core.VaultOperations;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
-
-/**
- * Integration tests using the aws secret backend. In case this test should fail because
- * of SSL make sure you run the test within the
- * spring-cloud-vault-config/spring-cloud-vault-config directory as the keystore is
- * referenced with {@code ../work/keystore.jks}.
- *
- *
- * This test requires AWS credentials and a region, see {@link #AWS_ACCESS_KEY},
- * {@link #AWS_SECRET_KEY} and the {@link SpringBootTest} properties to be provided
- * externally.
- *
- * @author Mark Paluch
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = VaultConfigAwsTests.TestApplication.class,
- properties = { "spring.cloud.vault.aws.enabled=true", "spring.cloud.vault.aws.role=readonly",
- "cloud.aws.region.auto=false", "cloud.aws.region.static=eu-west-1",
- "spring.cloud.bootstrap.enabled=true" })
-public class VaultConfigAwsTests {
-
- private static final String AWS_REGION = "eu-west-1";
-
- private static final String AWS_ACCESS_KEY = System.getProperty("aws.access.key");
-
- private static final String AWS_SECRET_KEY = System.getProperty("aws.secret.key");
-
- private static final String ARN = "arn:aws:iam::aws:policy/ReadOnlyAccess";
-
- @Value("${cloud.aws.credentials.accessKey}")
- String accessKey;
-
- @Value("${cloud.aws.credentials.secretKey}")
- String secretKey;
-
- /**
- * Initialize the aws secret backend.
- */
- @BeforeClass
- public static void beforeClass() {
-
- assumeTrue(StringUtils.hasText(AWS_ACCESS_KEY) && StringUtils.hasText(AWS_SECRET_KEY));
-
- VaultRule vaultRule = new VaultRule();
- vaultRule.before();
-
- if (!vaultRule.prepare().hasSecretBackend("aws")) {
- vaultRule.prepare().mountSecret("aws");
- }
-
- VaultOperations vaultOperations = vaultRule.prepare().getVaultOperations();
-
- Map connection = new HashMap<>();
- connection.put("region", AWS_REGION);
- connection.put("access_key", AWS_ACCESS_KEY);
- connection.put("secret_key", AWS_SECRET_KEY);
-
- vaultOperations.write("aws/config/root", connection);
-
- vaultOperations.write("aws/roles/readonly", Collections.singletonMap("arn", ARN));
- }
-
- @Test
- public void shouldInitializeAwsProperties() {
-
- assertThat(this.accessKey).isNotEmpty();
- assertThat(this.secretKey).isNotEmpty();
- }
-
- @SpringBootApplication
- public static class TestApplication {
-
- public static void main(String[] args) {
- SpringApplication.run(TestApplication.class, args);
- }
-
- }
-
-}
diff --git a/spring-cloud-vault-config-aws/src/test/resources/META-INF/spring.factories b/spring-cloud-vault-config-aws/src/test/resources/META-INF/spring.factories
deleted file mode 100644
index 2d3527b3..00000000
--- a/spring-cloud-vault-config-aws/src/test/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,4 +0,0 @@
-# Bootstrap Configuration
-org.springframework.cloud.bootstrap.BootstrapConfiguration=\
-org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfigurationTests.CustomBootstrapConfiguration,\
-org.springframework.cloud.vault.config.aws.VaultConfigAwsBootstrapConfiguration
diff --git a/spring-cloud-vault-config-aws/src/test/resources/bootstrap.yml b/spring-cloud-vault-config-aws/src/test/resources/bootstrap.yml
deleted file mode 100644
index c598d962..00000000
--- a/spring-cloud-vault-config-aws/src/test/resources/bootstrap.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-spring:
- application.name: testVaultApp
- cloud.vault.token: 00000000-0000-0000-0000-000000000000
- cloud.vault.ssl.trust-store: file:../work/keystore.jks
- cloud.vault.ssl.trust-store-password: changeit
diff --git a/spring-cloud-vault-config-consul/.flattened-pom.xml b/spring-cloud-vault-config-consul/.flattened-pom.xml
new file mode 100644
index 00000000..14b42e59
--- /dev/null
+++ b/spring-cloud-vault-config-consul/.flattened-pom.xml
@@ -0,0 +1,145 @@
+
+
+ 4.0.0
+
+ org.springframework.cloud
+ spring-cloud-vault-parent
+ 4.1.0-SNAPSHOT
+ ..
+
+ org.springframework.cloud
+ spring-cloud-vault-config-consul
+ 4.1.0-SNAPSHOT
+ Spring Cloud Vault Config Consul support
+ Spring Cloud Vault Config Consul support
+ https://spring.io/spring-cloud/spring-cloud-vault-parent/spring-cloud-vault-config-consul
+
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+
+
+ Apache License, Version 2.0
+ https://www.apache.org/licenses/LICENSE-2.0
+ Copyright 2014-2021 the original author or authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ https://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied.
+
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+
+
+ dsyer
+ Dave Syer
+ dsyer at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ sgibb
+ Spencer Gibb
+ sgibb at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ lead
+
+
+
+ mgrzejszczak
+ Marcin Grzejszczak
+ mgrzejszczak at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ rbaxter
+ Ryan Baxter
+ rbaxter at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+ omaciaszeksharma
+ Olga Maciaszek-Sharma
+ omaciaszeksharma at pivotal.io
+ Pivotal Software, Inc.
+ https://www.spring.io
+
+ developer
+
+
+
+
+ scm:git:git://github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-vault-config-consul
+ scm:git:ssh://git@github.com/spring-cloud/spring-cloud-vault.git/spring-cloud-vault-config-consul
+ https://github.com/spring-cloud/spring-cloud-vault/spring-cloud-vault-config-consul
+
+
+
+ org.springframework.cloud
+ spring-cloud-vault-config
+ 4.1.0-SNAPSHOT
+ compile
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure-processor
+ 3.2.0-SNAPSHOT
+ compile
+ true
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ 3.2.0-SNAPSHOT
+ compile
+ true
+
+
+ jakarta.validation
+ jakarta.validation-api
+ 3.0.2
+ provided
+
+
+ org.hibernate.validator
+ hibernate-validator
+ 8.0.0.Final
+ provided
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+ 3.2.0-SNAPSHOT
+ provided
+
+
+ org.springframework.boot
+ spring-boot-starter
+ 3.2.0-SNAPSHOT
+ provided
+
+
+
diff --git a/spring-cloud-vault-config-consul/pom.xml b/spring-cloud-vault-config-consul/pom.xml
deleted file mode 100644
index 76e23a7a..00000000
--- a/spring-cloud-vault-config-consul/pom.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-
-
- 4.0.0
-
-
- org.springframework.cloud
- spring-cloud-vault-parent
- 4.1.0-SNAPSHOT
- ..
-
-
- spring-cloud-vault-config-consul
- Spring Cloud Vault Config Consul support
- Spring Cloud Vault Config Consul support
-
-
- 4.1.0-SNAPSHOT
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-vault-config
-
-
-
-
- org.springframework.boot
- spring-boot-autoconfigure-processor
- true
-
-
-
- org.springframework.boot
- spring-boot-configuration-processor
- true
-
-
-
-
- org.junit.vintage
- junit-vintage-engine
- test
-
-
-
- org.apache.httpcomponents.client5
- httpclient5
- test
-
-
-
- org.springframework.cloud
- spring-cloud-vault-config
- test-jar
-
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-config
- ${spring-cloud-consul.version}
- test
-
-
- org.springframework.cloud
- spring-cloud-starter-ribbon
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-discovery
- ${spring-cloud-consul.version}
- test
-
-
- org.springframework.cloud
- spring-cloud-starter-ribbon
-
-
-
-
-
-
diff --git a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/ConsulBackendMetadata.java b/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/ConsulBackendMetadata.java
deleted file mode 100644
index a8ff9113..00000000
--- a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/ConsulBackendMetadata.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright 2013-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.springframework.cloud.vault.config.LeasingSecretBackendMetadata;
-import org.springframework.context.ApplicationEvent;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.ApplicationEventPublisherAware;
-import org.springframework.vault.core.lease.SecretLeaseContainer;
-import org.springframework.vault.core.lease.domain.RequestedSecret;
-import org.springframework.vault.core.lease.event.SecretLeaseCreatedEvent;
-import org.springframework.vault.core.util.PropertyTransformer;
-
-/**
- * @author Mark Paluch
- */
-class ConsulBackendMetadata implements LeasingSecretBackendMetadata, ApplicationEventPublisherAware {
-
- private final Log log = LogFactory.getLog(getClass());
-
- private final VaultConsulProperties properties;
-
- private final PropertyTransformer transformer;
-
- private ApplicationEventPublisher eventPublisher;
-
- ConsulBackendMetadata(VaultConsulProperties properties, PropertyTransformer transformer,
- ApplicationEventPublisher eventPublisher) {
- this.properties = properties;
- this.transformer = transformer;
- this.eventPublisher = eventPublisher;
- }
-
- @Override
- public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
- this.eventPublisher = applicationEventPublisher;
- }
-
- @Override
- public String getName() {
- return String.format("%s with Role %s", this.properties.getBackend(), this.properties.getRole());
- }
-
- @Override
- public String getPath() {
- return String.format("%s/creds/%s", this.properties.getBackend(), this.properties.getRole());
- }
-
- @Override
- public Map getVariables() {
-
- Map variables = new HashMap<>();
-
- variables.put("backend", this.properties.getBackend());
- variables.put("key", String.format("creds/%s", this.properties.getRole()));
-
- return variables;
- }
-
- @Override
- public PropertyTransformer getPropertyTransformer() {
- return this.transformer;
- }
-
- @Override
- public RequestedSecret.Mode getLeaseMode() {
- return RequestedSecret.Mode.ROTATE;
- }
-
- @Override
- public void afterRegistration(RequestedSecret secret, SecretLeaseContainer container) {
- container.addLeaseListener(leaseEvent -> {
-
- if (leaseEvent.getSource() == secret && leaseEvent instanceof SecretLeaseCreatedEvent) {
- if (this.log.isDebugEnabled()) {
- this.log.debug("Publishing a RebindConsulEvent");
- }
- this.eventPublisher.publishEvent(new RebindConsulEvent(this));
- }
- });
-
- // no need to rebind here since the transformer creats all appropriate properties.
- }
-
- public static class RebindConsulEvent extends ApplicationEvent {
-
- RebindConsulEvent(Object source) {
- super(source);
- }
-
- }
-
-}
diff --git a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulAutoConfiguration.java b/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulAutoConfiguration.java
deleted file mode 100644
index 5972cea1..00000000
--- a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulAutoConfiguration.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.cloud.context.properties.ConfigurationPropertiesRebinder;
-import org.springframework.cloud.vault.config.SecretBackendMetadataFactory;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Bootstrap configuration providing support for the Consul secret backend.
- *
- * @author Spencer Gibb
- */
-@Configuration(proxyBeanMethods = false)
-public class VaultConfigConsulAutoConfiguration {
-
- @Bean
- @ConditionalOnMissingBean
- public ConsulSecretRebindListener consulSecretRebindListener(ConfigurationPropertiesRebinder rebinder,
- ConfigurableApplicationContext context) {
- // TODO: some other way? Maybe a BootstrapApplicationContextHolder bean
- // provided by spring cloud commons
- ApplicationContext parent = context.getParent();
- if (parent != null) {
- context = (ConfigurableApplicationContext) parent;
- }
- return new ConsulSecretRebindListener(rebinder, context);
- }
-
- /**
- * {@link SecretBackendMetadataFactory} for Consul integration using
- * {@link VaultConsulProperties}.
- */
- public static class ConsulSecretRebindListener
- implements ApplicationListener {
-
- private final Log log = LogFactory.getLog(getClass());
-
- private final ConfigurationPropertiesRebinder rebinder;
-
- public ConsulSecretRebindListener(ConfigurationPropertiesRebinder rebinder,
- ConfigurableApplicationContext context) {
- this.rebinder = rebinder;
- context.addApplicationListener(this);
- }
-
- @Override
- public void onApplicationEvent(ConsulBackendMetadata.RebindConsulEvent event) {
- if (this.log.isDebugEnabled()) {
- this.log.debug("received RebindConsulEvent");
- }
- rebind("consulDiscoveryProperties");
- rebind("consulConfigProperties");
- }
-
- private void rebind(String bean) {
-
- boolean success = this.rebinder.rebind(bean);
- if (this.log.isInfoEnabled()) {
- this.log.info(String.format(
- "Attempted to rebind Consul bean '%s' with updated ACL token from vault, success: %s", bean,
- success));
- }
- }
-
- }
-
-}
diff --git a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulBootstrapConfiguration.java b/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulBootstrapConfiguration.java
deleted file mode 100644
index 90895505..00000000
--- a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConfigConsulBootstrapConfiguration.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import java.util.LinkedHashMap;
-import java.util.Map;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.cloud.vault.config.SecretBackendMetadata;
-import org.springframework.cloud.vault.config.SecretBackendMetadataFactory;
-import org.springframework.cloud.vault.config.VaultSecretBackendDescriptor;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationEventPublisher;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.util.Assert;
-import org.springframework.vault.core.util.PropertyTransformer;
-
-/**
- * Bootstrap configuration providing support for the Consul secret backend.
- *
- * @author Mark Paluch
- */
-@Configuration(proxyBeanMethods = false)
-@EnableConfigurationProperties(VaultConsulProperties.class)
-public class VaultConfigConsulBootstrapConfiguration {
-
- @Bean
- @ConditionalOnMissingBean
- public ConsulSecretBackendMetadataFactory consulSecretBackendMetadataFactory(ApplicationContext context) {
- return new ConsulSecretBackendMetadataFactory(context);
- }
-
- /**
- * {@link SecretBackendMetadataFactory} for Consul integration using
- * {@link VaultConsulProperties}.
- */
- public static class ConsulSecretBackendMetadataFactory
- implements SecretBackendMetadataFactory {
-
- private final ApplicationEventPublisher publisher;
-
- public ConsulSecretBackendMetadataFactory() {
- this.publisher = event -> {
- }; // NO-OP;
- }
-
- public ConsulSecretBackendMetadataFactory(ApplicationContext publisher) {
- this.publisher = publisher;
- }
-
- public ApplicationEventPublisher getPublisher() {
- return this.publisher;
- }
-
- /**
- * Creates a {@link SecretBackendMetadata} for a secret backend using
- * {@link VaultConsulProperties}. This accessor transforms Vault's token property
- * names to names provided with {@link VaultConsulProperties#getTokenProperty()}.
- * @param properties must not be {@literal null}.
- * @return the {@link SecretBackendMetadata}
- */
- SecretBackendMetadata forConsul(VaultConsulProperties properties) {
-
- Assert.notNull(properties, "VaultConsulProperties must not be null");
-
- /*
- * PropertyNameTransformer transformer = new PropertyNameTransformer();
- * transformer.addKeyTransformation("token", properties.getTokenProperty());
- */
-
- // spring.cloud.consul.token is a shortcut for initialization
- // for this I couldn't get it to work without specifiying each property
- // specifically
- PropertyTransformer transformer = input -> {
-
- Map transformed = new LinkedHashMap<>();
- transformed.put("spring.cloud.consul.config.acl-token", input.get("token"));
- transformed.put("spring.cloud.consul.discovery.acl-token", input.get("token"));
-
- return transformed;
- };
-
- return new ConsulBackendMetadata(properties, transformer, this.publisher);
- }
-
- @Override
- public SecretBackendMetadata createMetadata(VaultConsulProperties backendDescriptor) {
- return forConsul(backendDescriptor);
- }
-
- @Override
- public boolean supports(VaultSecretBackendDescriptor backendDescriptor) {
- return backendDescriptor instanceof VaultConsulProperties;
- }
-
- }
-
-}
diff --git a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConsulProperties.java b/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConsulProperties.java
deleted file mode 100644
index 1f5261ba..00000000
--- a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/VaultConsulProperties.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.vault.config.VaultSecretBackendDescriptor;
-import org.springframework.lang.Nullable;
-
-/**
- * Configuration properties for HashiCorp Consul.
- *
- * @author Mark Paluch
- */
-@ConfigurationProperties("spring.cloud.vault.consul")
-public class VaultConsulProperties implements VaultSecretBackendDescriptor {
-
- /**
- * Enable consul backend usage.
- */
- private boolean enabled;
-
- /**
- * Role name for credentials.
- */
- @Nullable
- private String role;
-
- /**
- * Consul backend path.
- */
- private String backend = "consul";
-
- /**
- * Target property for the obtained token.
- */
- private String tokenProperty = "spring.cloud.consul.token";
-
- @Override
- public boolean isEnabled() {
- return this.enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- @Nullable
- public String getRole() {
- return this.role;
- }
-
- public void setRole(@Nullable String role) {
- this.role = role;
- }
-
- @Override
- public String getBackend() {
- return this.backend;
- }
-
- public void setBackend(String backend) {
- this.backend = backend;
- }
-
- public String getTokenProperty() {
- return this.tokenProperty;
- }
-
- public void setTokenProperty(String tokenProperty) {
- this.tokenProperty = tokenProperty;
- }
-
-}
diff --git a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/package-info.java b/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/package-info.java
deleted file mode 100644
index c3111cb5..00000000
--- a/spring-cloud-vault-config-consul/src/main/java/org/springframework/cloud/vault/config/consul/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright 2018-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Consul integration with Vault.
- * @author Mark Paluch
- */
-@org.springframework.lang.NonNullApi
-@org.springframework.lang.NonNullFields
-package org.springframework.cloud.vault.config.consul;
diff --git a/spring-cloud-vault-config-consul/src/main/resources/META-INF/spring.factories b/spring-cloud-vault-config-consul/src/main/resources/META-INF/spring.factories
deleted file mode 100644
index 4cc99ff8..00000000
--- a/spring-cloud-vault-config-consul/src/main/resources/META-INF/spring.factories
+++ /dev/null
@@ -1,9 +0,0 @@
-# Bootstrap Configuration
-org.springframework.cloud.bootstrap.BootstrapConfiguration=\
-org.springframework.cloud.vault.config.consul.VaultConfigConsulBootstrapConfiguration
-
-org.springframework.cloud.vault.config.SecretBackendMetadataFactory=\
-org.springframework.cloud.vault.config.consul.VaultConfigConsulBootstrapConfiguration.ConsulSecretBackendMetadataFactory
-
-org.springframework.cloud.vault.config.VaultSecretBackendDescriptor=\
-org.springframework.cloud.vault.config.consul.VaultConsulProperties
diff --git a/spring-cloud-vault-config-consul/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-cloud-vault-config-consul/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index f1e1cc21..00000000
--- a/spring-cloud-vault-config-consul/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-org.springframework.cloud.vault.config.consul.VaultConfigConsulAutoConfiguration
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java
deleted file mode 100644
index a5c00780..00000000
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/ConsulSecretIntegrationTests.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright 2016-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import java.util.Collections;
-import java.util.Map;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import org.springframework.cloud.vault.config.VaultConfigOperations;
-import org.springframework.cloud.vault.config.VaultConfigTemplate;
-import org.springframework.cloud.vault.config.VaultProperties;
-import org.springframework.cloud.vault.config.consul.VaultConfigConsulBootstrapConfiguration.ConsulSecretBackendMetadataFactory;
-import org.springframework.cloud.vault.util.IntegrationTestSupport;
-import org.springframework.cloud.vault.util.Settings;
-import org.springframework.util.Base64Utils;
-import org.springframework.vault.core.VaultOperations;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
-
-/**
- * Integration tests for {@link VaultConfigTemplate} using the consul secret backend. This
- * test requires a running Consul instance, see {@link #CONNECTION_URL}.
- *
- * @author Mark Paluch
- */
-public class ConsulSecretIntegrationTests extends IntegrationTestSupport {
-
- private static final String POLICY = "key \"\" { policy = \"read\" }";
-
- private VaultProperties vaultProperties = Settings.createVaultProperties();
-
- private VaultConfigOperations configOperations;
-
- private VaultConsulProperties consul = new VaultConsulProperties();
-
- /**
- * Initialize the consul secret backend.
- */
- @Before
- public void setUp() {
-
- assumeTrue(SetupConsul.isConsulAvailable());
-
- this.consul.setEnabled(true);
- this.consul.setRole("readonly");
-
- if (!prepare().hasSecretBackend(this.consul.getBackend())) {
- prepare().mountSecret(this.consul.getBackend());
- }
-
- VaultOperations vaultOperations = this.vaultRule.prepare().getVaultOperations();
-
- SetupConsul.setupConsul(vaultOperations, this.consul.getBackend());
-
- vaultOperations.write(String.format("%s/roles/%s", this.consul.getBackend(), this.consul.getRole()),
- Collections.singletonMap("policy", Base64Utils.encodeToString(POLICY.getBytes())));
-
- this.configOperations = new VaultConfigTemplate(vaultOperations, this.vaultProperties);
- }
-
- @Test
- public void shouldCreateCredentialsCorrectly() {
-
- ConsulSecretBackendMetadataFactory factory = new ConsulSecretBackendMetadataFactory(null);
- Map secretProperties = this.configOperations.read(factory.forConsul(this.consul)).getData();
-
- assertThat(secretProperties).containsKeys("spring.cloud.consul.config.acl-token",
- "spring.cloud.consul.discovery.acl-token");
- }
-
-}
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java
deleted file mode 100644
index 2fb6c9f7..00000000
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/DiscoveryBootstrapConfigurationTests.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright 2017-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import java.net.InetSocketAddress;
-import java.util.List;
-
-import com.ecwid.consul.v1.ConsulClient;
-import com.ecwid.consul.v1.QueryParams;
-import com.ecwid.consul.v1.Response;
-import com.ecwid.consul.v1.agent.model.NewService;
-import com.ecwid.consul.v1.catalog.model.CatalogService;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.vault.util.CanConnect;
-import org.springframework.cloud.vault.util.IntegrationTestSupport;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.vault.core.VaultOperations;
-import org.springframework.vault.support.VaultHealth;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.junit.Assume.assumeTrue;
-
-/**
- * Tests for {@link DiscoveryBootstrapConfigurationTests}.
- *
- * @author Mark Paluch
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(properties = { "spring.cloud.vault.discovery.enabled=true" })
-@Ignore("Consul discovery client is set up in the main context, no longer in the bootstrap context")
-public class DiscoveryBootstrapConfigurationTests extends IntegrationTestSupport {
-
- private static final String CONSUL_HOST = "localhost";
-
- private static final int CONSUL_PORT = 8500;
-
- @Autowired
- VaultOperations vaultOperations;
-
- @BeforeClass
- public static void beforeClass() {
-
- assumeTrue(CanConnect.to(new InetSocketAddress(CONSUL_HOST, CONSUL_PORT)));
-
- ConsulClient client = new ConsulClient();
-
- Response> response = client.getCatalogService("vault", QueryParams.DEFAULT);
-
- if (response.getValue().isEmpty()) {
-
- NewService service = new NewService();
- service.setAddress("localhost");
- service.setPort(8200);
- service.setId("vault");
- service.setName("vault");
-
- client.agentServiceRegister(service);
- }
- }
-
- @Test
- public void shouldDiscoverThroughConsul() {
-
- VaultHealth health = this.vaultOperations.opsForSys().health();
-
- assertThat(health).isNotNull();
- }
-
-}
diff --git a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java b/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java
deleted file mode 100644
index c5728dfe..00000000
--- a/spring-cloud-vault-config-consul/src/test/java/org/springframework/cloud/vault/config/consul/SetupConsul.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright 2020-2021 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.cloud.vault.config.consul;
-
-import java.net.InetSocketAddress;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.springframework.cloud.vault.util.CanConnect;
-import org.springframework.core.ParameterizedTypeReference;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.ResponseEntity;
-import org.springframework.vault.core.VaultOperations;
-import org.springframework.web.client.HttpStatusCodeException;
-import org.springframework.web.client.RestTemplate;
-
-import static org.junit.Assume.assumeFalse;
-
-/**
- * Utility to setup Consul.
- *
- * @author Mark Paluch
- */
-class SetupConsul {
-
- static final String CONSUL_HOST = "localhost";
-
- static final int CONSUL_PORT = 8500;
-
- private static final String CONNECTION_URL = String.format("%s:%d", CONSUL_HOST, CONSUL_PORT);
-
- private static final ParameterizedTypeReference