Skip to content

Commit 582dbd1

Browse files
Update client builder to be more robust by default
1 parent cc50f38 commit 582dbd1

File tree

1 file changed

+51
-11
lines changed

1 file changed

+51
-11
lines changed

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

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

15-
import static io.kubernetes.client.util.Config.*;
16-
import static io.kubernetes.client.util.KubeConfig.ENV_HOME;
17-
import static io.kubernetes.client.util.KubeConfig.KUBECONFIG;
18-
import static io.kubernetes.client.util.KubeConfig.KUBEDIR;
19-
2015
import io.kubernetes.client.openapi.ApiClient;
2116
import io.kubernetes.client.openapi.ApiException;
2217
import io.kubernetes.client.openapi.models.V1CertificateSigningRequest;
@@ -26,6 +21,11 @@
2621
import io.kubernetes.client.util.credentials.KubeconfigAuthentication;
2722
import io.kubernetes.client.util.credentials.TokenFileAuthentication;
2823
import io.kubernetes.client.util.exception.CSRNotApprovedException;
24+
import okhttp3.Protocol;
25+
import org.apache.commons.compress.utils.IOUtils;
26+
import org.slf4j.Logger;
27+
import org.slf4j.LoggerFactory;
28+
2929
import java.io.BufferedReader;
3030
import java.io.ByteArrayInputStream;
3131
import java.io.File;
@@ -41,11 +41,18 @@
4141
import java.nio.file.Files;
4242
import java.nio.file.Paths;
4343
import java.security.PrivateKey;
44+
import java.time.Duration;
4445
import java.util.Arrays;
45-
import okhttp3.Protocol;
46-
import org.apache.commons.compress.utils.IOUtils;
47-
import org.slf4j.Logger;
48-
import org.slf4j.LoggerFactory;
46+
import java.util.List;
47+
48+
import static io.kubernetes.client.util.Config.ENV_KUBECONFIG;
49+
import static io.kubernetes.client.util.Config.ENV_SERVICE_HOST;
50+
import static io.kubernetes.client.util.Config.ENV_SERVICE_PORT;
51+
import static io.kubernetes.client.util.Config.SERVICEACCOUNT_CA_PATH;
52+
import static io.kubernetes.client.util.Config.SERVICEACCOUNT_TOKEN_PATH;
53+
import static io.kubernetes.client.util.KubeConfig.ENV_HOME;
54+
import static io.kubernetes.client.util.KubeConfig.KUBECONFIG;
55+
import static io.kubernetes.client.util.KubeConfig.KUBEDIR;
4956

5057
/** A Builder which allows the construction of {@link ApiClient}s in a fluent fashion. */
5158
public class ClientBuilder {
@@ -55,6 +62,12 @@ public class ClientBuilder {
5562
private byte[] caCertBytes = null;
5663
private boolean verifyingSsl = true;
5764
private Authentication authentication;
65+
// defaulting client protocols to HTTP1.1 and HTTP 2
66+
private List<Protocol> protocols = Arrays.asList(Protocol.HTTP_2, Protocol.HTTP_1_1);
67+
// default to unlimited read timeout
68+
private Duration readTimeout = Duration.ZERO;
69+
// default health check is once a minute
70+
private Duration pingInterval = Duration.ofMinutes(1);
5871

5972
/**
6073
* Creates an {@link ApiClient} by calling {@link #standard()} and {@link #build()}.
@@ -367,12 +380,39 @@ public ClientBuilder setVerifyingSsl(boolean verifyingSsl) {
367380
return this;
368381
}
369382

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

373-
// defaulting client protocols to HTTP1.1
374413
client.setHttpClient(
375-
client.getHttpClient().newBuilder().protocols(Arrays.asList(Protocol.HTTP_1_1)).build());
414+
client.getHttpClient().newBuilder().protocols(protocols).readTimeout(this.readTimeout)
415+
.pingInterval(pingInterval).build());
376416

377417
if (basePath != null) {
378418
if (basePath.endsWith("/")) {

0 commit comments

Comments
 (0)