Skip to content

Commit 58f364b

Browse files
adding custom ConfigBuilder
1 parent 5754bc4 commit 58f364b

File tree

2 files changed

+504
-0
lines changed

2 files changed

+504
-0
lines changed
Lines changed: 285 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
/*
2+
Copyright 2017 The Kubernetes Authors.
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
http://www.apache.org/licenses/LICENSE-2.0
7+
Unless required by applicable law or agreed to in writing, software
8+
distributed under the License is distributed on an "AS IS" BASIS,
9+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
package io.kubernetes.client.util;
14+
15+
import java.io.FileNotFoundException;
16+
import java.io.FileReader;
17+
import java.io.IOException;
18+
import java.io.InputStream;
19+
import java.io.InputStreamReader;
20+
import java.io.Reader;
21+
import java.nio.charset.Charset;
22+
23+
import javax.net.ssl.KeyManager;
24+
25+
import okio.ByteString;
26+
import io.kubernetes.client.ApiClient;
27+
import io.kubernetes.client.util.Config;
28+
import io.kubernetes.client.util.KubeConfig;
29+
import io.kubernetes.client.util.SSLUtils;
30+
31+
public class ConfigBuilder {
32+
33+
private boolean trustCerts = false;
34+
private boolean clusterMode = false;
35+
private boolean defaultKubeConfigMode = false;
36+
private boolean defaultClientMode = false;
37+
private boolean verifyingSsl = false;
38+
private String basePath = null;
39+
private String certificateAuthorityFile = null;
40+
private String certificateAuthorityData = null;
41+
private String apiKey = null;
42+
private String userName = null;
43+
private String password = null;
44+
private KeyManager[] keyMgrs = null;
45+
private String accessToken = null;
46+
private String apiKeyPrefix = null;
47+
private InputStream sslCaCert = null;
48+
private KubeConfig kubeConfig = null;
49+
50+
public String getUserName() {
51+
return userName;
52+
}
53+
54+
public ConfigBuilder setUserName(String userName) {
55+
this.userName = userName;
56+
return this;
57+
}
58+
59+
public String getPassword() {
60+
return password;
61+
}
62+
63+
public ConfigBuilder setPassword(String password) {
64+
this.password = password;
65+
return this;
66+
}
67+
68+
public String getApiKey() {
69+
return apiKey;
70+
}
71+
72+
public ConfigBuilder setApiKey(String apiKey) {
73+
this.apiKey = apiKey;
74+
return this;
75+
}
76+
77+
public boolean isTrustCerts() {
78+
return trustCerts;
79+
}
80+
81+
public ConfigBuilder setTrustCerts(boolean trustCerts) {
82+
this.trustCerts = trustCerts;
83+
return this;
84+
}
85+
86+
public String getbasePath() {
87+
return basePath;
88+
}
89+
90+
public ConfigBuilder setbasePath(String basePath) {
91+
this.basePath = basePath;
92+
return this;
93+
}
94+
95+
public String getCertificateAuthorityFile() {
96+
return certificateAuthorityFile;
97+
}
98+
99+
public ConfigBuilder setCertificateAuthorityFile(String certificateAuthorityFile) {
100+
this.certificateAuthorityFile = certificateAuthorityFile;
101+
return this;
102+
103+
}
104+
105+
public String getCertificateAuthorityData() {
106+
return certificateAuthorityData;
107+
}
108+
109+
public ConfigBuilder setCertificateAuthorityData(String certificateAuthorityData) {
110+
this.certificateAuthorityData = certificateAuthorityData;
111+
return this;
112+
}
113+
114+
public ConfigBuilder setClusterMode(boolean clusterMode) {
115+
this.clusterMode = clusterMode;
116+
return this;
117+
}
118+
119+
public ConfigBuilder setKubeConfig(KubeConfig config) {
120+
this.kubeConfig = config;
121+
return this;
122+
}
123+
124+
public ConfigBuilder setDefaultKubeConfigMode(boolean defaultKubeConfigMode) {
125+
this.defaultKubeConfigMode = defaultKubeConfigMode;
126+
return this;
127+
}
128+
129+
public ConfigBuilder setKubeConfig(String fileName) throws FileNotFoundException {
130+
this.kubeConfig = KubeConfig.loadKubeConfig(new FileReader(fileName));
131+
return this;
132+
}
133+
134+
public ConfigBuilder setKubeConfig(Reader input) {
135+
this.kubeConfig = KubeConfig.loadKubeConfig(input);
136+
return this;
137+
}
138+
139+
public ConfigBuilder setKubeConfig(InputStream stream) {
140+
this.kubeConfig = KubeConfig.loadKubeConfig(new InputStreamReader(stream));
141+
return this;
142+
}
143+
144+
public KeyManager[] getKeyMgrs() {
145+
return keyMgrs;
146+
}
147+
148+
public ConfigBuilder setKeyMgrs(KeyManager[] keyMgrs) {
149+
this.keyMgrs = keyMgrs;
150+
return this;
151+
}
152+
153+
public boolean isVerifyingSsl() {
154+
return verifyingSsl;
155+
}
156+
157+
public ConfigBuilder setVerifyingSsl(boolean verifyingSsl) {
158+
this.verifyingSsl = verifyingSsl;
159+
return this;
160+
}
161+
162+
public boolean isDefaultClientMode() {
163+
return defaultClientMode;
164+
}
165+
166+
public ConfigBuilder setDefaultClientMode(boolean defaultClientMode) {
167+
this.defaultClientMode = defaultClientMode;
168+
return this;
169+
}
170+
171+
public String getApiKeyPrefix() {
172+
return apiKeyPrefix;
173+
}
174+
175+
public ConfigBuilder setApiKeyPrefix(String apiKeyPrefix) {
176+
this.apiKeyPrefix = apiKeyPrefix;
177+
return this;
178+
}
179+
180+
public ApiClient build() {
181+
182+
ApiClient client = new ApiClient();
183+
184+
if( kubeConfig !=null) {
185+
client = Config.fromConfig(kubeConfig);
186+
return client;
187+
}
188+
189+
if(defaultKubeConfigMode == true) {
190+
try {
191+
client = Config.fromConfig(KubeConfig.loadDefaultKubeConfig());
192+
} catch (FileNotFoundException e) {
193+
e.printStackTrace();
194+
}
195+
return client;
196+
}
197+
198+
if(clusterMode == true) {
199+
try {
200+
client = Config.fromCluster();
201+
} catch (IOException e) {
202+
e.printStackTrace();
203+
}
204+
return client;
205+
}
206+
207+
if(defaultClientMode ==true ) {
208+
try {
209+
client = Config.defaultClient();
210+
} catch (IOException e) {
211+
e.printStackTrace();
212+
}
213+
return client;
214+
215+
}
216+
217+
if (basePath != null ) {
218+
if(basePath.endsWith("/")) {
219+
basePath = basePath.substring(0, basePath.length() - 1);
220+
}
221+
client.setBasePath(basePath)
222+
.setVerifyingSsl(verifyingSsl);
223+
}
224+
225+
else {
226+
try {
227+
throw new Exception("set kubernetes URL. example: http://localhost");
228+
} catch (Exception e) {
229+
e.printStackTrace();
230+
}
231+
}
232+
233+
if(keyMgrs != null) {
234+
client.setKeyManagers(keyMgrs);
235+
}
236+
237+
if(userName != null){
238+
client.setUsername(userName);
239+
}
240+
241+
if(password != null){
242+
client.setPassword(password);
243+
}
244+
245+
if(( userName != null )&&(password != null)) {
246+
final String usernameAndPassword = userName + ":" + password;
247+
client.setApiKeyPrefix("Basic");
248+
client.setApiKey(ByteString.of(usernameAndPassword.getBytes(Charset.forName("ISO-8859-1"))).base64());
249+
}
250+
251+
if(accessToken != null) {
252+
if (apiKeyPrefix == null){
253+
client.setApiKeyPrefix("Bearer");
254+
}
255+
client.setAccessToken(accessToken);
256+
}
257+
258+
if(apiKeyPrefix != null) {
259+
client.setApiKeyPrefix(apiKeyPrefix);
260+
}
261+
262+
if(apiKey != null) {
263+
if (apiKeyPrefix == null){
264+
client.setApiKeyPrefix("Bearer");
265+
}
266+
client.setApiKey(apiKey);
267+
}
268+
269+
if(sslCaCert != null) {
270+
client.setSslCaCert(sslCaCert);
271+
}
272+
273+
if(verifyingSsl){
274+
if((certificateAuthorityData != null) || (certificateAuthorityFile != null)){
275+
try {
276+
client.setSslCaCert(SSLUtils.getInputStreamFromDataOrFile(certificateAuthorityData, certificateAuthorityFile));
277+
} catch (FileNotFoundException e) {
278+
e.printStackTrace();
279+
}
280+
}
281+
}
282+
283+
return client;
284+
}
285+
}

0 commit comments

Comments
 (0)