Skip to content

Commit fbc53f8

Browse files
authored
Merge pull request #1498 from tony-clarke-amdocs/clientbuilder
Update client builder to be more robust by default
2 parents f667b1f + becefbc commit fbc53f8

File tree

1 file changed

+47
-3
lines changed

1 file changed

+47
-3
lines changed

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

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@
1212
*/
1313
package io.kubernetes.client.util;
1414

15-
import static io.kubernetes.client.util.Config.*;
15+
import static io.kubernetes.client.util.Config.ENV_KUBECONFIG;
16+
import static io.kubernetes.client.util.Config.ENV_SERVICE_HOST;
17+
import static io.kubernetes.client.util.Config.ENV_SERVICE_PORT;
18+
import static io.kubernetes.client.util.Config.SERVICEACCOUNT_CA_PATH;
19+
import static io.kubernetes.client.util.Config.SERVICEACCOUNT_TOKEN_PATH;
1620
import static io.kubernetes.client.util.KubeConfig.ENV_HOME;
1721
import static io.kubernetes.client.util.KubeConfig.KUBECONFIG;
1822
import static io.kubernetes.client.util.KubeConfig.KUBEDIR;
@@ -41,7 +45,9 @@
4145
import java.nio.file.Files;
4246
import java.nio.file.Paths;
4347
import java.security.PrivateKey;
48+
import java.time.Duration;
4449
import java.util.Arrays;
50+
import java.util.List;
4551
import okhttp3.Protocol;
4652
import org.apache.commons.compress.utils.IOUtils;
4753
import org.slf4j.Logger;
@@ -55,6 +61,12 @@ public class ClientBuilder {
5561
private byte[] caCertBytes = null;
5662
private boolean verifyingSsl = true;
5763
private Authentication authentication;
64+
// defaulting client protocols to HTTP1.1 and HTTP 2
65+
private List<Protocol> protocols = Arrays.asList(Protocol.HTTP_2, Protocol.HTTP_1_1);
66+
// default to unlimited read timeout
67+
private Duration readTimeout = Duration.ZERO;
68+
// default health check is once a minute
69+
private Duration pingInterval = Duration.ofMinutes(1);
5870

5971
/**
6072
* Creates an {@link ApiClient} by calling {@link #standard()} and {@link #build()}.
@@ -367,12 +379,44 @@ public ClientBuilder setVerifyingSsl(boolean verifyingSsl) {
367379
return this;
368380
}
369381

382+
public ClientBuilder setProtocols(List<Protocol> protocols) {
383+
this.protocols = protocols;
384+
return this;
385+
}
386+
387+
public List<Protocol> getProtocols() {
388+
return protocols;
389+
}
390+
391+
public ClientBuilder setReadTimeout(Duration readTimeout) {
392+
this.readTimeout = readTimeout;
393+
return this;
394+
}
395+
396+
public Duration getReadTimeout() {
397+
return this.readTimeout;
398+
}
399+
400+
public ClientBuilder setPingInterval(Duration pingInterval) {
401+
this.pingInterval = pingInterval;
402+
return this;
403+
}
404+
405+
public Duration getPingInterval() {
406+
return this.pingInterval;
407+
}
408+
370409
public ApiClient build() {
371410
final ApiClient client = new ApiClient();
372411

373-
// defaulting client protocols to HTTP1.1
374412
client.setHttpClient(
375-
client.getHttpClient().newBuilder().protocols(Arrays.asList(Protocol.HTTP_1_1)).build());
413+
client
414+
.getHttpClient()
415+
.newBuilder()
416+
.protocols(protocols)
417+
.readTimeout(this.readTimeout)
418+
.pingInterval(pingInterval)
419+
.build());
376420

377421
if (basePath != null) {
378422
if (basePath.endsWith("/")) {

0 commit comments

Comments
 (0)