12
12
*/
13
13
package io .kubernetes .client .util ;
14
14
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
-
20
15
import io .kubernetes .client .openapi .ApiClient ;
21
16
import io .kubernetes .client .openapi .ApiException ;
22
17
import io .kubernetes .client .openapi .models .V1CertificateSigningRequest ;
26
21
import io .kubernetes .client .util .credentials .KubeconfigAuthentication ;
27
22
import io .kubernetes .client .util .credentials .TokenFileAuthentication ;
28
23
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
+
29
29
import java .io .BufferedReader ;
30
30
import java .io .ByteArrayInputStream ;
31
31
import java .io .File ;
41
41
import java .nio .file .Files ;
42
42
import java .nio .file .Paths ;
43
43
import java .security .PrivateKey ;
44
+ import java .time .Duration ;
44
45
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 ;
49
56
50
57
/** A Builder which allows the construction of {@link ApiClient}s in a fluent fashion. */
51
58
public class ClientBuilder {
@@ -55,6 +62,12 @@ public class ClientBuilder {
55
62
private byte [] caCertBytes = null ;
56
63
private boolean verifyingSsl = true ;
57
64
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 );
58
71
59
72
/**
60
73
* Creates an {@link ApiClient} by calling {@link #standard()} and {@link #build()}.
@@ -367,12 +380,39 @@ public ClientBuilder setVerifyingSsl(boolean verifyingSsl) {
367
380
return this ;
368
381
}
369
382
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
+
370
410
public ApiClient build () {
371
411
final ApiClient client = new ApiClient ();
372
412
373
- // defaulting client protocols to HTTP1.1
374
413
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 ());
376
416
377
417
if (basePath != null ) {
378
418
if (basePath .endsWith ("/" )) {
0 commit comments