Skip to content

Commit bf764a4

Browse files
review changes
1 parent 412d8af commit bf764a4

File tree

2 files changed

+94
-81
lines changed

2 files changed

+94
-81
lines changed

util/src/main/java/io/kubernetes/client/util/ConfigBuilder.java

Lines changed: 46 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
*/
1313
package io.kubernetes.client.util;
1414

15+
import java.io.ByteArrayInputStream;
16+
import java.io.File;
17+
import java.io.FileInputStream;
1518
import java.io.FileNotFoundException;
1619
import java.io.FileReader;
1720
import java.io.IOException;
@@ -22,31 +25,33 @@
2225

2326
import javax.net.ssl.KeyManager;
2427

28+
import org.apache.commons.codec.binary.Base64;
29+
import org.apache.log4j.Logger;
30+
2531
import okio.ByteString;
2632
import io.kubernetes.client.ApiClient;
2733
import io.kubernetes.client.util.Config;
2834
import io.kubernetes.client.util.KubeConfig;
29-
import io.kubernetes.client.util.SSLUtils;
3035

31-
public class ConfigBuilder {
36+
public class ConfigBuilder {
3237

33-
private boolean trustCerts = false;
3438
private boolean clusterMode = false;
3539
private boolean defaultKubeConfigMode = false;
3640
private boolean defaultClientMode = false;
3741
private boolean verifyingSsl = false;
3842
private String basePath = null;
39-
private String certificateAuthorityFile = null;
43+
private File certificateAuthorityFile = null;
4044
private String certificateAuthorityData = null;
4145
private String apiKey = null;
4246
private String userName = null;
4347
private String password = null;
4448
private KeyManager[] keyMgrs = null;
4549
private String accessToken = null;
4650
private String apiKeyPrefix = null;
47-
private InputStream sslCaCert = null;
4851
private KubeConfig kubeConfig = null;
4952

53+
private static final Logger log = Logger.getLogger(Config.class);
54+
5055
public String getUserName() {
5156
return userName;
5257
}
@@ -74,45 +79,37 @@ public ConfigBuilder setApiKey(String apiKey) {
7479
return this;
7580
}
7681

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() {
82+
public String getBasePath() {
8783
return basePath;
8884
}
8985

90-
public ConfigBuilder setbasePath(String basePath) {
86+
public ConfigBuilder setBasePath(String basePath) {
9187
this.basePath = basePath;
9288
return this;
9389
}
9490

95-
public String getCertificateAuthorityFile() {
91+
public File getCertificateAuthorityFile() {
9692
return certificateAuthorityFile;
9793
}
9894

99-
public ConfigBuilder setCertificateAuthorityFile(String certificateAuthorityFile) {
95+
public ConfigBuilder setCertificateAuthority(File certificateAuthorityFile) {
10096
this.certificateAuthorityFile = certificateAuthorityFile;
97+
this.verifyingSsl = true;
10198
return this;
102-
10399
}
104100

105101
public String getCertificateAuthorityData() {
106102
return certificateAuthorityData;
107103
}
108104

109-
public ConfigBuilder setCertificateAuthorityData(String certificateAuthorityData) {
105+
public ConfigBuilder setCertificateAuthority(String certificateAuthorityData) {
110106
this.certificateAuthorityData = certificateAuthorityData;
107+
this.verifyingSsl = true;
111108
return this;
112109
}
113110

114-
public ConfigBuilder setClusterMode(boolean clusterMode) {
115-
this.clusterMode = clusterMode;
111+
public ConfigBuilder setClusterMode() {
112+
this.clusterMode = true;
116113
return this;
117114
}
118115

@@ -121,8 +118,8 @@ public ConfigBuilder setKubeConfig(KubeConfig config) {
121118
return this;
122119
}
123120

124-
public ConfigBuilder setDefaultKubeConfigMode(boolean defaultKubeConfigMode) {
125-
this.defaultKubeConfigMode = defaultKubeConfigMode;
121+
public ConfigBuilder setDefaultKubeConfigMode() {
122+
this.defaultKubeConfigMode = true;
126123
return this;
127124
}
128125

@@ -131,12 +128,12 @@ public ConfigBuilder setKubeConfig(String fileName) throws FileNotFoundException
131128
return this;
132129
}
133130

134-
public ConfigBuilder setKubeConfig(Reader input) {
131+
public ConfigBuilder setKubeConfig(Reader input) {
135132
this.kubeConfig = KubeConfig.loadKubeConfig(input);
136133
return this;
137134
}
138135

139-
public ConfigBuilder setKubeConfig(InputStream stream) {
136+
public ConfigBuilder setKubeConfig(InputStream stream) {
140137
this.kubeConfig = KubeConfig.loadKubeConfig(new InputStreamReader(stream));
141138
return this;
142139
}
@@ -163,8 +160,8 @@ public boolean isDefaultClientMode() {
163160
return defaultClientMode;
164161
}
165162

166-
public ConfigBuilder setDefaultClientMode(boolean defaultClientMode) {
167-
this.defaultClientMode = defaultClientMode;
163+
public ConfigBuilder setDefaultClientMode() {
164+
this.defaultClientMode = true;
168165
return this;
169166
}
170167

@@ -177,56 +174,45 @@ public ConfigBuilder setApiKeyPrefix(String apiKeyPrefix) {
177174
return this;
178175
}
179176

180-
public ApiClient build() {
181-
177+
public ApiClient build() {
182178
ApiClient client = new ApiClient();
183179

184180
if( kubeConfig !=null) {
185181
client = Config.fromConfig(kubeConfig);
186-
return client;
187182
}
188183

189184
if(defaultKubeConfigMode == true) {
190185
try {
191186
client = Config.fromConfig(KubeConfig.loadDefaultKubeConfig());
192187
} catch (FileNotFoundException e) {
193-
e.printStackTrace();
188+
log.error("Unable to find the file", e);
194189
}
195-
return client;
196190
}
197191

198192
if(clusterMode == true) {
199193
try {
200194
client = Config.fromCluster();
201195
} catch (IOException e) {
202-
e.printStackTrace();
196+
log.error("Exception ->", e);
203197
}
204-
return client;
205198
}
206199

207200
if(defaultClientMode ==true ) {
208201
try {
209202
client = Config.defaultClient();
210203
} catch (IOException e) {
211-
e.printStackTrace();
204+
log.error("Exception -> ", e);
212205
}
213-
return client;
214-
215206
}
216207

217208
if (basePath != null ) {
218209
if(basePath.endsWith("/")) {
219210
basePath = basePath.substring(0, basePath.length() - 1);
220211
}
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();
212+
client.setBasePath(basePath);
213+
} else {
214+
if((clusterMode == false) && (defaultClientMode == false) && (defaultKubeConfigMode == false)) {
215+
throw new IllegalArgumentException("please set kubernetes URL ex:http://localhost");
230216
}
231217
}
232218

@@ -266,20 +252,21 @@ public ApiClient build() {
266252
client.setApiKey(apiKey);
267253
}
268254

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-
}
255+
client.setVerifyingSsl(verifyingSsl);
256+
257+
if(certificateAuthorityFile != null) {
258+
try {
259+
client.setSslCaCert(new FileInputStream(certificateAuthorityFile));
260+
} catch (FileNotFoundException e) {
261+
log.error("Unable to find the file", e);
280262
}
281263
}
282264

265+
if(certificateAuthorityData != null) {
266+
byte[] bytes = Base64.decodeBase64(certificateAuthorityData);
267+
client.setSslCaCert(new ByteArrayInputStream(bytes));
268+
}
269+
283270
return client;
284271
}
285-
}
272+
}

util/src/test/java/io/kubernetes/client/util/ConfigBuilderTest.java

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import static org.junit.Assert.fail;
1717

1818
import java.io.File;
19+
import java.io.FileNotFoundException;
1920
import java.io.FileWriter;
2021
import java.io.IOException;
2122
import java.nio.charset.Charset;
@@ -51,7 +52,7 @@ public class ConfigBuilderTest {
5152
String keyStoreFile = null ;
5253
String keyStorePassphrase = null;
5354
KeyManager[] keyMgrs =null;
54-
55+
5556
@Rule
5657
public final EnvironmentVariables environmentVariables
5758
= new EnvironmentVariables();
@@ -64,7 +65,7 @@ public class ConfigBuilderTest {
6465
public void testDefaultClientNothingPresent() {
6566
environmentVariables.set("HOME", "/non-existent");
6667
ApiClient client = (new ConfigBuilder())
67-
.setDefaultClientMode(true)
68+
.setDefaultClientMode()
6869
.build();
6970
assertEquals("http://localhost:8080", client.getBasePath());
7071
}
@@ -121,7 +122,7 @@ public void testDefaultClientHomeDir() {
121122
try {
122123
environmentVariables.set("HOME", dir.getCanonicalPath());
123124
ApiClient client = new ConfigBuilder()
124-
.setDefaultClientMode(true)
125+
.setDefaultClientMode()
125126
.build();
126127
assertEquals("http://home.dir.com", client.getBasePath());
127128
} catch (Exception ex) {
@@ -135,7 +136,7 @@ public void testDefaultClientKubeConfig() {
135136
try {
136137
environmentVariables.set("KUBECONFIG", configFile.getCanonicalPath());
137138
ApiClient client = new ConfigBuilder()
138-
.setDefaultClientMode(true)
139+
.setDefaultClientMode()
139140
.build();
140141
assertEquals("http://kubeconfig.dir.com", client.getBasePath());
141142
} catch (Exception ex) {
@@ -150,7 +151,7 @@ public void testDefaultClientPrecedence() {
150151
environmentVariables.set("HOME", dir.getCanonicalPath());
151152
environmentVariables.set("KUBECONFIG", configFile.getCanonicalPath());
152153
ApiClient client = new ConfigBuilder()
153-
.setDefaultClientMode(true)
154+
.setDefaultClientMode()
154155
.build();
155156
// $KUBECONFIG should take precedence over $HOME/.kube/config
156157
assertEquals("http://kubeconfig.dir.com", client.getBasePath());
@@ -164,7 +165,7 @@ public void testDefaultClientPrecedence() {
164165
public void testUserNamePasswordConfigBuilder() {
165166
try {
166167
ApiClient client = (new ConfigBuilder())
167-
.setbasePath(basePath)
168+
.setBasePath(basePath)
168169
.setUserName(userName)
169170
.setPassword(password)
170171
.build();
@@ -183,8 +184,9 @@ public void testUserNamePasswordConfigBuilder() {
183184

184185
@Test
185186
public void testApiKeyConfigbuilder() {
186-
ApiClient client = (new ConfigBuilder())
187-
.setbasePath(basePath)
187+
ApiClient client = null;
188+
client = (new ConfigBuilder())
189+
.setBasePath(basePath)
188190
.setApiKeyPrefix(apiKeyPrefix)
189191
.setApiKey(apiKey)
190192
.build();
@@ -194,27 +196,51 @@ public void testApiKeyConfigbuilder() {
194196
assertEquals( apiKey, ((io.kubernetes.client.auth.ApiKeyAuth)client.getAuthentications().get("BearerToken")).getApiKey());
195197
assertEquals(null,((io.kubernetes.client.auth.HttpBasicAuth)client.getAuthentications().get("BasicAuth")).getUsername());
196198
}
197-
199+
198200
@Test
199201
public void testKeyMgrANDCertConfigBUilder() {
200202
// will not fail even if file not found exception occurs for clientCertFile
201203
try{
202204
keyMgrs = SSLUtils.keyManagers(clientCertData, clientCertFile, clientKeyData, clientKeyFile, algo, passphrase, keyStoreFile, keyStorePassphrase);
203-
//by default verify ssl is false
204-
ApiClient client = (new ConfigBuilder())
205-
.setbasePath(basePath)
206-
.setKeyMgrs(keyMgrs)
207-
.setCertificateAuthorityData(certificateAuthorityData)
208-
.setCertificateAuthorityFile(certificateAuthorityFile)
209-
.setVerifyingSsl(true)
210-
.build();
211-
assertEquals(basePath, client.getBasePath());
212-
assertEquals(true, client.isVerifyingSsl());
213-
//below assert is not appropriate
214-
//assertSame(keyMgrs, client.getKeyManagers());
205+
//by default verify ssl is false
206+
ApiClient client = (new ConfigBuilder())
207+
.setBasePath(basePath)
208+
.setKeyMgrs(keyMgrs)
209+
.setCertificateAuthority(certificateAuthorityData)
210+
.setVerifyingSsl(true)
211+
.build();
212+
assertEquals(basePath, client.getBasePath());
213+
assertEquals(true, client.isVerifyingSsl());
214+
//below assert is not appropriate
215+
//assertSame(keyMgrs, client.getKeyManagers());
215216
}
216217
catch(Exception e){
217218
//e.printStackTrace();
218219
}
219-
}
220+
}
221+
222+
@Test
223+
public void testBasePathIllegalArgumentException() throws IOException {
224+
ApiClient client = null ;
225+
try {
226+
client = (new ConfigBuilder())
227+
.setUserName("user")
228+
.build();
229+
}
230+
catch(IllegalArgumentException ie) {
231+
assertEquals(IllegalArgumentException.class, ie.getClass());
232+
}
233+
environmentVariables.set("HOME", "/non-existent");
234+
client = (new ConfigBuilder())
235+
.setDefaultClientMode()
236+
.setUserName("user")
237+
.build();
238+
assertEquals("http://localhost:8080", client.getBasePath());
239+
environmentVariables.set("KUBECONFIG", configFile.getCanonicalPath());
240+
client = new ConfigBuilder()
241+
.setDefaultClientMode()
242+
.setBasePath("http://testkubeconfig.dir.com")
243+
.build();
244+
assertEquals("http://testkubeconfig.dir.com", client.getBasePath());
245+
}
220246
}

0 commit comments

Comments
 (0)