12
12
*/
13
13
package io .kubernetes .client .util ;
14
14
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 ;
16
20
import static io .kubernetes .client .util .KubeConfig .ENV_HOME ;
17
21
import static io .kubernetes .client .util .KubeConfig .KUBECONFIG ;
18
22
import static io .kubernetes .client .util .KubeConfig .KUBEDIR ;
41
45
import java .nio .file .Files ;
42
46
import java .nio .file .Paths ;
43
47
import java .security .PrivateKey ;
48
+ import java .time .Duration ;
44
49
import java .util .Arrays ;
50
+ import java .util .List ;
45
51
import okhttp3 .Protocol ;
46
52
import org .apache .commons .compress .utils .IOUtils ;
47
53
import org .slf4j .Logger ;
@@ -55,6 +61,12 @@ public class ClientBuilder {
55
61
private byte [] caCertBytes = null ;
56
62
private boolean verifyingSsl = true ;
57
63
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 );
58
70
59
71
/**
60
72
* Creates an {@link ApiClient} by calling {@link #standard()} and {@link #build()}.
@@ -367,12 +379,44 @@ public ClientBuilder setVerifyingSsl(boolean verifyingSsl) {
367
379
return this ;
368
380
}
369
381
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
+
370
409
public ApiClient build () {
371
410
final ApiClient client = new ApiClient ();
372
411
373
- // defaulting client protocols to HTTP1.1
374
412
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 ());
376
420
377
421
if (basePath != null ) {
378
422
if (basePath .endsWith ("/" )) {
0 commit comments