7
7
public final class KubeAPIServerConfigBuilder {
8
8
9
9
// environment variables
10
- public static final String JENVTEST_DOWNLOAD_BINARIES = "JENVTEST_OFFLINE_MODE" ;
11
- public static final String JENVTEST_DIR_ENV_VAR = "JENVTEST_DIR" ;
12
- public static final String JENVTEST_API_SERVER_VERSION_ENV_VAR = "JENVTEST_API_SERVER_VERSION " ;
10
+ public static final String JENVTEST_OFFLINE_MODE = "JENVTEST_OFFLINE_MODE" ;
11
+ public static final String JENVTEST_DIR = "JENVTEST_DIR" ;
12
+ public static final String JENVTEST_KUBE_API_SERVER_VERSION = "JENVTEST_KUBE_API_SERVER_VERSION " ;
13
13
public static final String JENVTEST_WAIT_FOR_ETCD_HEALTH_CHECK =
14
14
"JENVTEST_WAIT_FOR_ETCD_HEALTH_CHECK" ;
15
15
public static final String JENVTEST_STARTUP_TIMEOUT = "JENVTEST_STARTUP_TIMEOUT" ;
16
16
17
17
public static final String DIRECTORY_NAME = ".jenvtest" ;
18
18
19
+ private final List <String > apiServerFlags = new ArrayList <>(0 );
20
+ private boolean updateKubeConfig = false ;
21
+
19
22
private String jenvtestDir ;
20
23
private String apiServerVersion ;
21
24
private Boolean offlineMode ;
22
- private boolean updateKubeConfig = false ;
23
- private final List <String > apiServerFlags = new ArrayList <>(0 );
24
25
private Boolean waitForEtcdHealthCheckOnStartup ;
25
26
private Integer startupTimeout ;
26
27
@@ -46,49 +47,44 @@ public KubeAPIServerConfigBuilder withOfflineMode(boolean downloadBinaries) {
46
47
}
47
48
48
49
public KubeAPIServerConfig build () {
49
- if (jenvtestDir == null ) {
50
- var jenvtestDirFromEnvVar = System .getenv (JENVTEST_DIR_ENV_VAR );
51
- if (jenvtestDirFromEnvVar != null ) {
52
- this .jenvtestDir = jenvtestDirFromEnvVar ;
53
- } else {
54
- this .jenvtestDir = new File (System .getProperty ("user.home" ), DIRECTORY_NAME ).getPath ();
55
- }
56
- }
57
- if (offlineMode == null ) {
58
- var downloadBinariesEnvVal = System .getenv (JENVTEST_DOWNLOAD_BINARIES );
59
- if (downloadBinariesEnvVal != null ) {
60
- this .offlineMode = Boolean .parseBoolean (downloadBinariesEnvVal );
61
- } else {
62
- this .offlineMode = false ;
63
- }
64
- }
65
- if (apiServerVersion == null ) {
66
- var apiServerVersionEnvVar = System .getenv (JENVTEST_API_SERVER_VERSION_ENV_VAR );
67
- if (apiServerVersionEnvVar != null ) {
68
- this .apiServerVersion = apiServerVersionEnvVar ;
69
- }
70
- }
71
- if (waitForEtcdHealthCheckOnStartup == null ) {
72
- var waitForEtcdHealthCheckOnStartup = System .getenv (JENVTEST_WAIT_FOR_ETCD_HEALTH_CHECK );
73
- if (waitForEtcdHealthCheckOnStartup != null ) {
74
- this .waitForEtcdHealthCheckOnStartup =
75
- Boolean .parseBoolean (waitForEtcdHealthCheckOnStartup );
76
- } else {
77
- this .waitForEtcdHealthCheckOnStartup = false ;
78
- }
79
- }
80
- if (startupTimeout == null ) {
81
- var envStartupTimeout = System .getenv (JENVTEST_STARTUP_TIMEOUT );
82
- if (envStartupTimeout != null ) {
83
- this .startupTimeout = Integer .parseInt (envStartupTimeout );
84
- } else {
85
- this .startupTimeout = 60_000 ;
86
- }
87
- }
50
+ this .jenvtestDir = finalConfigValue (this .jenvtestDir , JENVTEST_DIR ,
51
+ new File (System .getProperty ("user.home" ), DIRECTORY_NAME ).getPath ());
52
+ this .offlineMode = finalConfigValue (this .offlineMode , JENVTEST_OFFLINE_MODE , false );
53
+ this .apiServerVersion =
54
+ finalConfigValue (this .apiServerVersion , JENVTEST_KUBE_API_SERVER_VERSION , null );
55
+ this .waitForEtcdHealthCheckOnStartup = finalConfigValue (this .waitForEtcdHealthCheckOnStartup ,
56
+ JENVTEST_WAIT_FOR_ETCD_HEALTH_CHECK , false );
57
+ this .startupTimeout = finalConfigValue (this .startupTimeout , JENVTEST_STARTUP_TIMEOUT , 60_000 );
58
+
88
59
return new KubeAPIServerConfig (jenvtestDir , apiServerVersion , offlineMode , apiServerFlags ,
89
60
updateKubeConfig , waitForEtcdHealthCheckOnStartup , startupTimeout );
90
61
}
91
62
63
+ private String finalConfigValue (String currentValue , String envVariable , String defaultValue ) {
64
+ return finalConfigValue (String .class , currentValue , envVariable , defaultValue );
65
+ }
66
+
67
+ private Boolean finalConfigValue (Boolean currentValue , String envVariable , Boolean defaultValue ) {
68
+ return finalConfigValue (Boolean .class , currentValue , envVariable , defaultValue );
69
+ }
70
+
71
+ private Integer finalConfigValue (Integer currentValue , String envVariable , Integer defaultValue ) {
72
+ return finalConfigValue (Integer .class , currentValue , envVariable , defaultValue );
73
+ }
74
+
75
+ private <T > T finalConfigValue (Class <T > type , T currentValue , String envVariable ,
76
+ T defaultValue ) {
77
+ if (currentValue != null ) {
78
+ return currentValue ;
79
+ }
80
+ var envValue = System .getenv (envVariable );
81
+ if (envValue != null ) {
82
+ return type .cast (envValue );
83
+ } else {
84
+ return defaultValue ;
85
+ }
86
+ }
87
+
92
88
public KubeAPIServerConfigBuilder withUpdateKubeConfig (boolean updateKubeConfig ) {
93
89
this .updateKubeConfig = updateKubeConfig ;
94
90
return this ;
0 commit comments