Skip to content

Commit 952b090

Browse files
committed
fix (kubernetes-client-api) : Config's autoConfigure should disable auto configuration
`Config`'s autoConfigure field should behave as per expectations. We need to make changes to ConfigBuilder and ConfigFluent in order to achieve this. - Move generated classes `ConfigBuilder` and `ConfigFluent` to `src/main/java` - `ConfigBuilder` would invoke `Config.empty()` in it's constructor instead of `new Config()` (this was enabling auto configuration) - add a boolean field to `ConfigFluent` in order to keep track of whether user has overridden auto configuration via builder or not. - Make all fields in Config class use boxed types instead of primitive types so that we can distinguish whether they have been configured by user. Signed-off-by: Rohan Kumar <[email protected]>
1 parent 8d78ecf commit 952b090

File tree

10 files changed

+2077
-161
lines changed

10 files changed

+2077
-161
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* Fix #6038: Support for Gradle configuration cache
77
* Fix #6110: VolumeSource (and other file mode fields) in Octal are correctly interpreted
88
* Fix #6215: Suppressing rejected execution exception for port forwarder
9+
* Fix #6137: `ConfigBuilder.withAutoConfigure` is not working
910

1011
#### Improvements
1112
* Fix #6008: removing the optional dependency on bouncy castle

kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/Config.java

Lines changed: 274 additions & 112 deletions
Large diffs are not rendered by default.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*
2+
* Copyright (C) 2015 Red Hat, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.fabric8.kubernetes.client;
17+
18+
import io.fabric8.kubernetes.api.builder.VisitableBuilder;
19+
20+
import static io.fabric8.kubernetes.client.Config.disableAutoConfig;
21+
22+
public class ConfigBuilder extends ConfigFluent<ConfigBuilder> implements VisitableBuilder<Config, ConfigBuilder> {
23+
public ConfigBuilder() {
24+
this(createEmptyConfigWithoutDefaults());
25+
}
26+
27+
public ConfigBuilder(ConfigFluent<?> fluent) {
28+
this(fluent, createEmptyConfigWithoutDefaults());
29+
}
30+
31+
public ConfigBuilder(ConfigFluent<?> fluent, Config instance) {
32+
this.fluent = fluent;
33+
fluent.copyInstance(instance);
34+
}
35+
36+
public ConfigBuilder(Config instance) {
37+
this.fluent = this;
38+
this.copyInstance(instance);
39+
}
40+
41+
ConfigFluent<?> fluent;
42+
43+
private static Config createEmptyConfigWithoutDefaults() {
44+
Config config = Config.empty();
45+
config.setAutoConfigure(!disableAutoConfig());
46+
config.setMasterUrlRaw(null);
47+
config.setApiVersion(null);
48+
config.setClientKeyAlgo(null);
49+
config.setClientKeyPassphrase(null);
50+
config.setWebsocketPingInterval(null);
51+
config.setConnectionTimeout(null);
52+
config.setMaxConcurrentRequests(null);
53+
config.setMaxConcurrentRequestsPerHost(null);
54+
config.setContexts(null);
55+
config.setWatchReconnectInterval(null);
56+
config.setWatchReconnectLimit(null);
57+
config.setUploadRequestTimeout(null);
58+
config.setRequestRetryBackoffInterval(null);
59+
config.setRequestRetryBackoffLimit(null);
60+
config.setRequestTimeout(null);
61+
config.setScaleTimeout(null);
62+
config.setLoggingInterval(null);
63+
config.setUserAgent(null);
64+
config.setTlsVersions(null);
65+
return config;
66+
}
67+
68+
public Config build() {
69+
Config buildable = new Config(fluent.getMasterUrl(), fluent.getApiVersion(), fluent.getNamespace(), fluent.getTrustCerts(),
70+
fluent.getDisableHostnameVerification(), fluent.getCaCertFile(), fluent.getCaCertData(), fluent.getClientCertFile(),
71+
fluent.getClientCertData(), fluent.getClientKeyFile(), fluent.getClientKeyData(), fluent.getClientKeyAlgo(),
72+
fluent.getClientKeyPassphrase(), fluent.getUsername(), fluent.getPassword(), fluent.getOauthToken(),
73+
fluent.getAutoOAuthToken(), fluent.getWatchReconnectInterval(), fluent.getWatchReconnectLimit(),
74+
fluent.getConnectionTimeout(), fluent.getRequestTimeout(), fluent.getScaleTimeout(), fluent.getLoggingInterval(),
75+
fluent.getMaxConcurrentRequests(), fluent.getMaxConcurrentRequestsPerHost(), fluent.getHttp2Disable(),
76+
fluent.getHttpProxy(), fluent.getHttpsProxy(), fluent.getNoProxy(), fluent.getUserAgent(), fluent.getTlsVersions(),
77+
fluent.getWebsocketPingInterval(), fluent.getProxyUsername(), fluent.getProxyPassword(), fluent.getTrustStoreFile(),
78+
fluent.getTrustStorePassphrase(), fluent.getKeyStoreFile(), fluent.getKeyStorePassphrase(),
79+
fluent.getImpersonateUsername(), fluent.getImpersonateGroups(), fluent.getImpersonateExtras(),
80+
fluent.getOauthTokenProvider(), fluent.getCustomHeaders(), fluent.getRequestRetryBackoffLimit(),
81+
fluent.getRequestRetryBackoffInterval(), fluent.getUploadRequestTimeout(), fluent.getOnlyHttpWatches(),
82+
fluent.getCurrentContext(), fluent.getContexts(), fluent.getAutoConfigure());
83+
buildable.setDefaultNamespace(fluent.isDefaultNamespace());
84+
buildable.setAuthProvider(fluent.getAuthProvider());
85+
buildable.setAuthProvider(fluent.getAuthProvider());
86+
buildable.setFile(fluent.getFile());
87+
return buildable;
88+
}
89+
}

0 commit comments

Comments
 (0)