Skip to content

Commit c512b78

Browse files
paullegranddcmtoffl01
authored andcommitted
Initial commit
* Add Stable config source * Add snakeyaml to parse file
1 parent 312af33 commit c512b78

File tree

3 files changed

+69
-0
lines changed

3 files changed

+69
-0
lines changed

internal-api/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,8 @@ dependencies {
221221
// it contains annotations that are also present in the instrumented application classes
222222
api "com.datadoghq:dd-javac-plugin-client:0.2.2"
223223

224+
implementation 'org.yaml:snakeyaml:2.0'
225+
224226
testImplementation project(":utils:test-utils")
225227
testImplementation("org.assertj:assertj-core:3.20.2")
226228
testImplementation libs.bundles.junit5

internal-api/src/main/java/datadog/trace/api/ConfigOrigin.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ public enum ConfigOrigin {
77
REMOTE("remote_config"),
88
/** configurations that are set through JVM properties */
99
JVM_PROP("jvm_prop"),
10+
/** configuration read in the stable config file, managed by customers */
11+
CUSTOMER_STABLE_CONFIG("customer_stable_config"),
12+
/** configuration read in the stable config file, managed by fleet */
13+
FLEET_STABLE_CONFIG("fleet_stable_config"),
1014
/** set when the user has not set any configuration for the key (defaults to a value) */
1115
DEFAULT("default");
1216

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package datadog.trace.bootstrap.config.provider;
2+
3+
import java.io.File;
4+
import java.io.FileInputStream;
5+
import java.io.InputStream;
6+
import java.util.HashMap;
7+
8+
import static datadog.trace.util.Strings.propertyNameToEnvironmentVariableName;
9+
10+
import datadog.trace.api.ConfigOrigin;
11+
import datadog.trace.bootstrap.config.provider.ConfigProvider;
12+
13+
import org.yaml.snakeyaml.Yaml;
14+
import org.yaml.snakeyaml.LoaderOptions;
15+
import org.yaml.snakeyaml.constructor.SafeConstructor;
16+
17+
final public class StableConfigSource extends ConfigProvider.Source {
18+
static final String MANAGED_STABLE_CONFIGURATION_PATH = "/etc/datadog-agent/managed/datadog-agent/stable/datadog_apm.yaml";
19+
static final String LOCAL_STABLE_CONFIGURATION_PATH = "/etc/datadog-agent/datadog_apm.yaml";
20+
21+
final ConfigOrigin fileOrigin;
22+
HashMap<String, String> configuration;
23+
24+
StableConfigSource(String file, ConfigOrigin origin) {
25+
this.fileOrigin = origin;
26+
try {
27+
configuration = parseStableConfig(file);
28+
} catch (Exception e) {
29+
configuration = new HashMap();
30+
}
31+
}
32+
33+
private static final HashMap<String, String> parseStableConfig(String filePath) {
34+
Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions()));
35+
InputStream input = new FileInputStream(new File(filePath));
36+
Object data = yaml.load(input);
37+
38+
HashMap<Sting, Object> config = new HashMap();
39+
40+
return config;
41+
};
42+
43+
public final String get(String key) {
44+
return configuration.get(propertyNameToEnvironmentVariableName(key));
45+
}
46+
47+
public final ConfigOrigin origin() {
48+
return fileOrigin;
49+
}
50+
51+
private class StableConfig {
52+
private String config_id;
53+
private HashMap<String, Object> apm_configuration_default;
54+
55+
private void setApmConfigurationDefault(HashMap<String, Object> m) {
56+
apm_configuration_default = m;
57+
}
58+
59+
private void setConfigId(String i) {
60+
config_id = i;
61+
}
62+
}
63+
}

0 commit comments

Comments
 (0)