Skip to content

Commit 08051c7

Browse files
authored
Merge pull request #2040 from wind57/drop-paths-support
Drop paths support (2)
2 parents b47de1e + 0f33a83 commit 08051c7

File tree

66 files changed

+418
-1054
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+418
-1054
lines changed

docs/modules/ROOT/pages/property-source-config/configmap-propertysource.adoc

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -549,29 +549,6 @@ for individual ones; the latter having a higher priority.
549549
NOTE: You should check the security configuration section. To access config maps from inside a pod you need to have the correct
550550
Kubernetes service accounts, roles and role bindings.
551551

552-
Another option for using `ConfigMap` instances is to mount them into the Pod by running the Spring Cloud Kubernetes application
553-
and having Spring Cloud Kubernetes read them from the file system.
554-
555-
NOTE: This feature is deprecated and will be removed in a future release (Use `spring.config.import` instead).
556-
This behavior is controlled by the `spring.cloud.kubernetes.config.paths` property. You can use it in
557-
addition to or instead of the mechanism described earlier.
558-
`spring.cloud.kubernetes.config.paths` expects a List of full paths to each property file, because directories are not being recursively parsed. For example:
559-
560-
[source,yaml]
561-
----
562-
spring:
563-
cloud:
564-
kubernetes:
565-
config:
566-
paths:
567-
- /tmp/application.properties
568-
- /var/application.yaml
569-
----
570-
571-
NOTE: If you use `spring.cloud.kubernetes.config.paths` or `spring.cloud.kubernetes.secrets.path` the automatic reload
572-
functionality will not work. You will need to make a `POST` request to the `/actuator/refresh` endpoint or
573-
restart/redeploy the application.
574-
575552
[#config-map-fail-fast]
576553
In some cases, your application may be unable to load some of your `ConfigMaps` using the Kubernetes API.
577554
If you want your application to fail the start-up process in such cases, you can set
@@ -598,7 +575,6 @@ NOTE: Since version `5.0.0`, we have introduced the possibility to read sources
598575
| `spring.cloud.kubernetes.config.enabled` | `Boolean` | `true` | Enable ConfigMaps `PropertySource`
599576
| `spring.cloud.kubernetes.config.name` | `String` | `${spring.application.name}` | Sets the name of `ConfigMap` to look up
600577
| `spring.cloud.kubernetes.config.namespace` | `String` | Client namespace | Sets the Kubernetes namespace where to lookup
601-
| `spring.cloud.kubernetes.config.paths` | `List` | `null` | Sets the paths where `ConfigMap` instances are mounted
602578
| `spring.cloud.kubernetes.config.enableApi` | `Boolean` | `true` | Enable or disable consuming `ConfigMap` instances through APIs
603579
| `spring.cloud.kubernetes.config.fail-fast` | `Boolean` | `false` | Enable or disable failing the application start-up when an error occurred while loading a `ConfigMap`
604580
| `spring.cloud.kubernetes.config.retry.enabled` | `Boolean` | `true` | Enable or disable config retry.

docs/modules/ROOT/pages/property-source-config/secrets-propertysource.adoc

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,6 @@ spec:
7777

7878
You can select the Secrets to consume in a number of ways:
7979

80-
. By listing the directories where secrets are mapped:
81-
+
82-
[source,bash]
83-
----
84-
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets/db-secret,etc/secrets/postgresql
85-
----
86-
+
87-
If you have all the secrets mapped to a common root, you can set them like:
88-
+
89-
[source,bash]
90-
----
91-
-Dspring.cloud.kubernetes.secrets.paths=/etc/secrets
92-
----
93-
9480
. By setting a named secret:
9581
+
9682
[source,bash]
@@ -165,7 +151,6 @@ This setting is supported since `3.0.6` and upwards.
165151
| `spring.cloud.kubernetes.secrets.name` | `String` | `${spring.application.name}` | Sets the name of the secret to look up
166152
| `spring.cloud.kubernetes.secrets.namespace` | `String` | Client namespace | Sets the Kubernetes namespace where to look up
167153
| `spring.cloud.kubernetes.secrets.labels` | `Map` | `null` | Sets the labels used to lookup secrets
168-
| `spring.cloud.kubernetes.secrets.paths` | `List` | `null` | Sets the paths where secrets are mounted (example 1)
169154
| `spring.cloud.kubernetes.secrets.enableApi` | `Boolean` | `false` | Enables or disables consuming secrets through APIs (examples 2 and 3)
170155
| `spring.cloud.kubernetes.secrets.fail-fast` | `Boolean` | `false` | Enable or disable failing the application start-up when an error occurred while loading a `Secret`
171156
| `spring.cloud.kubernetes.secrets.retry.enabled` | `Boolean` | `true` | Enable or disable secrets retry.
@@ -179,8 +164,6 @@ Notes:
179164

180165
* The `spring.cloud.kubernetes.secrets.labels` property behaves as defined by
181166
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding#map-based-binding[Map-based binding].
182-
* The `spring.cloud.kubernetes.secrets.paths` property behaves as defined by
183-
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-Configuration-Binding#collection-based-binding[Collection-based binding].
184167
* Access to secrets through the API may be restricted for security reasons. The preferred way is to mount secrets to the Pod.
185168

186169
You can find an example of an application that uses secrets (though it has not been updated to use the new `spring-cloud-kubernetes` project) at

docs/modules/ROOT/pages/spring-cloud-kubernetes-configuration-watcher.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ SPRING_CLOUD_KUBERNETES_CONFIG_INFORMER_ENABLED=TRUE
5454

5555
This will tell watcher to only monitor sources that have a label: `spring.cloud.kubernetes.config.informer.enabled=true`.
5656

57-
One more important configuration, especially for configmaps and secrets that are mounted as volumes (via `spring.cloud.kubernetes.config.paths`/`spring.cloud.kubernetes.secrets.paths` or using `spring.config.import`) is:
57+
One more important configuration, especially for configmaps and secrets that are mounted as volumes (via `spring.config.import`) is:
5858

5959
[source]
6060
----

docs/modules/ROOT/partials/_configprops.adoc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@
5353
|spring.cloud.kubernetes.config.labels | |
5454
|spring.cloud.kubernetes.config.name | |
5555
|spring.cloud.kubernetes.config.namespace | |
56-
|spring.cloud.kubernetes.config.paths | |
57-
|spring.cloud.kubernetes.config.retry | |
56+
|spring.cloud.kubernetes.config.retry | |
5857
|spring.cloud.kubernetes.config.sources | |
5958
|spring.cloud.kubernetes.config.use-name-as-prefix | `+++false+++` |
6059
|spring.cloud.kubernetes.discovery.all-namespaces | `+++false+++` | if discovery is enabled for all namespaces
@@ -108,9 +107,8 @@
108107
|spring.cloud.kubernetes.secrets.labels | |
109108
|spring.cloud.kubernetes.secrets.name | |
110109
|spring.cloud.kubernetes.secrets.namespace | |
111-
|spring.cloud.kubernetes.secrets.paths | |
112-
|spring.cloud.kubernetes.secrets.retry | |
110+
|spring.cloud.kubernetes.secrets.retry | |
113111
|spring.cloud.kubernetes.secrets.sources | |
114112
|spring.cloud.kubernetes.secrets.use-name-as-prefix | `+++false+++` |
115113

116-
|===
114+
|===

spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigMapErrorOnReadingSourceTests.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ void namedSingleConfigMapFails(CapturedOutput output) {
110110

111111
stubFor(get(path).willReturn(aResponse().withStatus(500).withBody("Internal Server Error")));
112112

113-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), List.of(),
114-
Map.of(), true, name, namespace, false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
113+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), Map.of(),
114+
true, name, namespace, false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
115115

116116
CoreV1Api api = new CoreV1Api();
117117
KubernetesClientConfigMapPropertySourceLocator locator = new KubernetesClientConfigMapPropertySourceLocator(api,
@@ -142,7 +142,7 @@ void namedTwoConfigMapsOneFails(CapturedOutput output) {
142142
.inScenario("started")
143143
.willSetStateTo("go-to-next"));
144144

145-
stubFor(get(path).willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(SINGLE_CONFIGMAP_LIST)))
145+
stubFor(get(path).willReturn(aResponse().withStatus(200).withBody(JSON.serialize(SINGLE_CONFIGMAP_LIST)))
146146
.inScenario("started")
147147
.whenScenarioStateIs("go-to-next")
148148
.willSetStateTo("done"));
@@ -152,7 +152,7 @@ void namedTwoConfigMapsOneFails(CapturedOutput output) {
152152
ConfigMapConfigProperties.Source sourceTwo = new ConfigMapConfigProperties.Source(configMapNameTwo, namespace,
153153
Map.of(), null, null, null);
154154

155-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(),
155+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true,
156156
List.of(sourceOne, sourceTwo), Map.of(), true, null, namespace, false, true, false,
157157
RetryProperties.DEFAULT, ReadType.BATCH);
158158

@@ -199,7 +199,7 @@ void namedTwoConfigMapsBothFail(CapturedOutput output) {
199199
ConfigMapConfigProperties.Source sourceTwo = new ConfigMapConfigProperties.Source(configMapNameTwo, namespace,
200200
Map.of(), null, null, null);
201201

202-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(),
202+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true,
203203
List.of(sourceOne, sourceTwo), Map.of(), true, null, namespace, false, true, false,
204204
RetryProperties.DEFAULT, ReadType.BATCH);
205205

@@ -243,7 +243,7 @@ void labeledSingleConfigMapFails(CapturedOutput output) {
243243
ConfigMapConfigProperties.Source configMapSource = new ConfigMapConfigProperties.Source(null, namespace, labels,
244244
null, null, null);
245245

246-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(),
246+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true,
247247
List.of(configMapSource), labels, true, null, namespace, false, true, false, RetryProperties.DEFAULT,
248248
ReadType.BATCH);
249249

@@ -285,7 +285,7 @@ void labeledTwoConfigMapsOneFails(CapturedOutput output) {
285285
.willSetStateTo("second"));
286286

287287
// one that passes
288-
stubFor(get(path).willReturn(aResponse().withStatus(200).withBody(new JSON().serialize(DOUBLE_CONFIGMAP_LIST)))
288+
stubFor(get(path).willReturn(aResponse().withStatus(200).withBody(JSON.serialize(DOUBLE_CONFIGMAP_LIST)))
289289
.inScenario("started")
290290
.whenScenarioStateIs("second")
291291
.willSetStateTo("done"));
@@ -295,7 +295,7 @@ void labeledTwoConfigMapsOneFails(CapturedOutput output) {
295295
ConfigMapConfigProperties.Source sourceTwo = new ConfigMapConfigProperties.Source(null, namespace,
296296
configMapTwoLabels, null, null, null);
297297

298-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(),
298+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true,
299299
List.of(sourceOne, sourceTwo), Map.of("one", "1", "two", "2"), true, null, namespace, false, true,
300300
false, RetryProperties.DEFAULT, ReadType.BATCH);
301301

@@ -349,7 +349,7 @@ void labeledTwoConfigMapsBothFail(CapturedOutput output) {
349349
ConfigMapConfigProperties.Source sourceTwo = new ConfigMapConfigProperties.Source(null, namespace,
350350
configMapTwoLabels, null, null, null);
351351

352-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(),
352+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true,
353353
List.of(sourceOne, sourceTwo), Map.of("one", "1", "two", "2"), true, null, namespace, false, true,
354354
false, RetryProperties.DEFAULT, ReadType.BATCH);
355355

spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientConfigMapPropertySourceLocatorTests.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ void locateWithoutSources() {
106106
CoreV1Api api = new CoreV1Api();
107107
stubFor(get("/api/v1/namespaces/default/configmaps")
108108
.willReturn(aResponse().withStatus(200).withBody(JSON.serialize(PROPERTIES_CONFIGMAP_LIST))));
109-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), List.of(),
110-
Map.of(), true, "bootstrap-640", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
109+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), Map.of(),
110+
true, "bootstrap-640", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
111111
MockEnvironment mockEnvironment = new MockEnvironment();
112112
mockEnvironment.setProperty("spring.cloud.kubernetes.client.namespace", "default");
113113
PropertySource<?> propertySource = new KubernetesClientConfigMapPropertySourceLocator(api,
@@ -125,9 +125,8 @@ void locateWithSources() {
125125

126126
ConfigMapConfigProperties.Source source = new ConfigMapConfigProperties.Source("bootstrap-640", "default",
127127
Collections.emptyMap(), null, null, null);
128-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(),
129-
List.of(source), Map.of(), true, "fake-name", null, false, false, false, RetryProperties.DEFAULT,
130-
ReadType.BATCH);
128+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(source),
129+
Map.of(), true, "fake-name", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
131130

132131
PropertySource<?> propertySource = new KubernetesClientConfigMapPropertySourceLocator(api,
133132
configMapConfigProperties, new KubernetesNamespaceProvider(new MockEnvironment()))
@@ -149,8 +148,8 @@ void testLocateWithoutNamespaceConstructor() {
149148
stubFor(get("/api/v1/namespaces/default/configmaps")
150149
.willReturn(aResponse().withStatus(200).withBody(JSON.serialize(PROPERTIES_CONFIGMAP_LIST))));
151150

152-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), List.of(),
153-
Map.of(), true, "bootstrap-640", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
151+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), Map.of(),
152+
true, "bootstrap-640", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
154153

155154
assertThatThrownBy(() -> new KubernetesClientConfigMapPropertySourceLocator(api, configMapConfigProperties,
156155
new KubernetesNamespaceProvider(new MockEnvironment()))
@@ -169,8 +168,8 @@ void testLocateWithoutNamespace() {
169168
CoreV1Api api = new CoreV1Api();
170169
stubFor(get("/api/v1/namespaces/default/configmaps")
171170
.willReturn(aResponse().withStatus(200).withBody(JSON.serialize(PROPERTIES_CONFIGMAP_LIST))));
172-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), List.of(),
173-
Map.of(), true, "bootstrap-640", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
171+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), Map.of(),
172+
true, "bootstrap-640", null, false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
174173
assertThatThrownBy(() -> new KubernetesClientConfigMapPropertySourceLocator(api, configMapConfigProperties,
175174
new KubernetesNamespaceProvider(ENV))
176175
.locate(ENV)).isInstanceOf(NamespaceResolutionFailedException.class);
@@ -182,9 +181,8 @@ public void locateShouldThrowExceptionOnFailureWhenFailFastIsEnabled() {
182181
stubFor(get("/api/v1/namespaces/default/configmaps")
183182
.willReturn(aResponse().withStatus(500).withBody("Internal Server Error")));
184183

185-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), List.of(),
186-
Map.of(), true, "bootstrap-640", "default", false, false, true, RetryProperties.DEFAULT,
187-
ReadType.BATCH);
184+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), Map.of(),
185+
true, "bootstrap-640", "default", false, false, true, RetryProperties.DEFAULT, ReadType.BATCH);
188186

189187
KubernetesClientConfigMapPropertySourceLocator locator = new KubernetesClientConfigMapPropertySourceLocator(api,
190188
configMapConfigProperties, new KubernetesNamespaceProvider(new MockEnvironment()));
@@ -199,9 +197,8 @@ public void locateShouldNotThrowExceptionOnFailureWhenFailFastIsDisabled(Capture
199197
stubFor(get("/api/v1/namespaces/default/configmaps")
200198
.willReturn(aResponse().withStatus(500).withBody("Internal Server Error")));
201199

202-
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), List.of(),
203-
Map.of(), true, "bootstrap-640", "default", false, false, false, RetryProperties.DEFAULT,
204-
ReadType.BATCH);
200+
ConfigMapConfigProperties configMapConfigProperties = new ConfigMapConfigProperties(true, List.of(), Map.of(),
201+
true, "bootstrap-640", "default", false, false, false, RetryProperties.DEFAULT, ReadType.BATCH);
205202

206203
KubernetesClientConfigMapPropertySourceLocator locator = new KubernetesClientConfigMapPropertySourceLocator(api,
207204
configMapConfigProperties, new KubernetesNamespaceProvider(new MockEnvironment()));

spring-cloud-kubernetes-client-config/src/test/java/org/springframework/cloud/kubernetes/client/config/KubernetesClientSecretsPropertySourceLocatorTests.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ void getLocateWithSources() {
147147
SecretsConfigProperties.Source source2 = new SecretsConfigProperties.Source("rabbit-password", "",
148148
Collections.emptyMap(), null, null, null);
149149

150-
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(),
150+
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(),
151151
List.of(source1, source2), true, "app", "default", false, true, false, RetryProperties.DEFAULT,
152152
ReadType.BATCH);
153153

@@ -162,8 +162,8 @@ void getLocateWithSources() {
162162
void getLocateWithOutSources() {
163163
CoreV1Api api = new CoreV1Api();
164164
stubFor(get(LIST_API).willReturn(aResponse().withStatus(200).withBody(LIST_BODY)));
165-
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(),
166-
List.of(), true, "db-secret", "default", false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
165+
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(), true,
166+
"db-secret", "default", false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
167167

168168
PropertySource<?> propertySource = new KubernetesClientSecretsPropertySourceLocator(api,
169169
new KubernetesNamespaceProvider(new MockEnvironment()), secretsConfigProperties)
@@ -184,8 +184,8 @@ void testLocateWithoutNamespaceConstructor() {
184184
CoreV1Api api = new CoreV1Api();
185185
stubFor(get(LIST_API).willReturn(aResponse().withStatus(200).withBody(LIST_BODY)));
186186

187-
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(),
188-
List.of(), true, "db-secret", "", false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
187+
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(), true,
188+
"db-secret", "", false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
189189

190190
assertThatThrownBy(() -> new KubernetesClientSecretsPropertySourceLocator(api,
191191
new KubernetesNamespaceProvider(new MockEnvironment()), secretsConfigProperties)
@@ -197,8 +197,8 @@ void locateShouldThrowExceptionOnFailureWhenFailFastIsEnabled() {
197197
CoreV1Api api = new CoreV1Api();
198198
stubFor(get(LIST_API).willReturn(aResponse().withStatus(500).withBody("Internal Server Error")));
199199

200-
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(),
201-
List.of(), true, "db-secret", "default", false, true, true, RetryProperties.DEFAULT, ReadType.BATCH);
200+
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(), true,
201+
"db-secret", "default", false, true, true, RetryProperties.DEFAULT, ReadType.BATCH);
202202

203203
KubernetesClientSecretsPropertySourceLocator locator = new KubernetesClientSecretsPropertySourceLocator(api,
204204
new KubernetesNamespaceProvider(new MockEnvironment()), secretsConfigProperties);
@@ -212,8 +212,8 @@ void locateShouldNotThrowExceptionOnFailureWhenFailFastIsDisabled(CapturedOutput
212212
CoreV1Api api = new CoreV1Api();
213213
stubFor(get(LIST_API).willReturn(aResponse().withStatus(500).withBody("Internal Server Error")));
214214

215-
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(),
216-
List.of(), true, "db-secret", "default", false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
215+
SecretsConfigProperties secretsConfigProperties = new SecretsConfigProperties(true, Map.of(), List.of(), true,
216+
"db-secret", "default", false, true, false, RetryProperties.DEFAULT, ReadType.BATCH);
217217

218218
KubernetesClientSecretsPropertySourceLocator locator = new KubernetesClientSecretsPropertySourceLocator(api,
219219
new KubernetesNamespaceProvider(new MockEnvironment()), secretsConfigProperties);

0 commit comments

Comments
 (0)