77public final class KubeAPIServerConfigBuilder {
88
99 // 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 " ;
1313 public static final String JENVTEST_WAIT_FOR_ETCD_HEALTH_CHECK =
1414 "JENVTEST_WAIT_FOR_ETCD_HEALTH_CHECK" ;
1515 public static final String JENVTEST_STARTUP_TIMEOUT = "JENVTEST_STARTUP_TIMEOUT" ;
1616
1717 public static final String DIRECTORY_NAME = ".jenvtest" ;
1818
19+ private final List <String > apiServerFlags = new ArrayList <>(0 );
20+ private boolean updateKubeConfig = false ;
21+
1922 private String jenvtestDir ;
2023 private String apiServerVersion ;
2124 private Boolean offlineMode ;
22- private boolean updateKubeConfig = false ;
23- private final List <String > apiServerFlags = new ArrayList <>(0 );
2425 private Boolean waitForEtcdHealthCheckOnStartup ;
2526 private Integer startupTimeout ;
2627
@@ -46,49 +47,44 @@ public KubeAPIServerConfigBuilder withOfflineMode(boolean downloadBinaries) {
4647 }
4748
4849 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+
8859 return new KubeAPIServerConfig (jenvtestDir , apiServerVersion , offlineMode , apiServerFlags ,
8960 updateKubeConfig , waitForEtcdHealthCheckOnStartup , startupTimeout );
9061 }
9162
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+
9288 public KubeAPIServerConfigBuilder withUpdateKubeConfig (boolean updateKubeConfig ) {
9389 this .updateKubeConfig = updateKubeConfig ;
9490 return this ;
0 commit comments