-
Notifications
You must be signed in to change notification settings - Fork 4.4k
/
Copy pathEnvVariableFeatureFlags.java
78 lines (61 loc) · 2.6 KB
/
EnvVariableFeatureFlags.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
* Copyright (c) 2022 Airbyte, Inc., all rights reserved.
*/
package io.airbyte.commons.features;
import java.util.function.Function;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class EnvVariableFeatureFlags implements FeatureFlags {
private static final Logger log = LoggerFactory.getLogger(EnvVariableFeatureFlags.class);
public static final String USE_STREAM_CAPABLE_STATE = "USE_STREAM_CAPABLE_STATE";
public static final String AUTO_DETECT_SCHEMA = "AUTO_DETECT_SCHEMA";
// Set this value to true to see all messages from the source to destination, set to one second
// emission
public static final String LOG_CONNECTOR_MESSAGES = "LOG_CONNECTOR_MESSAGES";
public static final String NEED_STATE_VALIDATION = "NEED_STATE_VALIDATION";
public static final String APPLY_FIELD_SELECTION = "APPLY_FIELD_SELECTION";
public static final String FIELD_SELECTION_WORKSPACES = "FIELD_SELECTION_WORKSPACES";
@Override
public boolean autoDisablesFailingConnections() {
log.info("Auto Disable Failing Connections: " + Boolean.parseBoolean(System.getenv("AUTO_DISABLE_FAILING_CONNECTIONS")));
return Boolean.parseBoolean(System.getenv("AUTO_DISABLE_FAILING_CONNECTIONS"));
}
@Override
public boolean forceSecretMigration() {
return Boolean.parseBoolean(System.getenv("FORCE_MIGRATE_SECRET_STORE"));
}
@Override
public boolean useStreamCapableState() {
return getEnvOrDefault(USE_STREAM_CAPABLE_STATE, false, Boolean::parseBoolean);
}
@Override
public boolean autoDetectSchema() {
return getEnvOrDefault(AUTO_DETECT_SCHEMA, true, Boolean::parseBoolean);
}
@Override
public boolean logConnectorMessages() {
return getEnvOrDefault(LOG_CONNECTOR_MESSAGES, false, Boolean::parseBoolean);
}
@Override
public boolean needStateValidation() {
return getEnvOrDefault(NEED_STATE_VALIDATION, true, Boolean::parseBoolean);
}
@Override
public boolean applyFieldSelection() {
return getEnvOrDefault(APPLY_FIELD_SELECTION, false, Boolean::parseBoolean);
}
@Override
public String fieldSelectionWorkspaces() {
return getEnvOrDefault(FIELD_SELECTION_WORKSPACES, "", (arg) -> arg);
}
// TODO: refactor in order to use the same method than the ones in EnvConfigs.java
public <T> T getEnvOrDefault(final String key, final T defaultValue, final Function<String, T> parser) {
final String value = System.getenv(key);
if (value != null && !value.isEmpty()) {
return parser.apply(value);
} else {
log.debug("Using default value for environment variable {}: '{}'", key, defaultValue);
return defaultValue;
}
}
}