Skip to content

Commit f63d40f

Browse files
committed
Use git submodules to load metrics.yaml files
1 parent 249951a commit f63d40f

File tree

11 files changed

+74
-1320
lines changed

11 files changed

+74
-1320
lines changed

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "dd-java-agent/agent-jmxfetch/integrations-core"]
2+
path = dd-java-agent/agent-jmxfetch/integrations-core
3+
url = https://github.com/DataDog/integrations-core.git

dd-java-agent/agent-jmxfetch/agent-jmxfetch.gradle

+16
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,19 @@ shadowJar {
2727
jar {
2828
classifier = 'unbundled'
2929
}
30+
31+
task submodulesUpdate(type:Exec) {
32+
group 'Build Setup'
33+
description 'Initializes and updates integrations-core git submodule'
34+
commandLine 'git', 'submodule', 'update', '--init', 'integrations-core'
35+
}
36+
37+
task copyMetricConfigs(type:Exec) {
38+
group 'Build Setup'
39+
description 'Copy metrics.yaml files from integrations-core into resources'
40+
commandLine './copy-metric-configs.sh', 'integrations-core', sourceSets.main.output.resourcesDir
41+
}
42+
43+
processResources.dependsOn copyMetricConfigs
44+
copyMetricConfigs.dependsOn submodulesUpdate
45+
// Runs the copy task before processResources, so duplicate files in the local repo would overwrite imported ones.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env bash
2+
3+
# Debug mode:
4+
# set -x
5+
6+
function print_usage() {
7+
echo "Usage: $0 search_directory build_resources_output_directory"
8+
}
9+
10+
search_directory=$1
11+
if [ ! -d "$search_directory" ]; then
12+
echo "Must specify a valid search_directory"
13+
print_usage
14+
exit 1
15+
fi
16+
17+
build_resources_output_directory=$2
18+
if [ ! -d "$build_resources_output_directory" ]; then
19+
echo "Must specify a valid build_resources_output_directory"
20+
print_usage
21+
exit 1
22+
fi
23+
# Add the full package path.
24+
build_resources_output_directory="$build_resources_output_directory/datadog/trace/agent/jmxfetch"
25+
26+
# Find all the metrics.yaml files containing "jmx_metrics:"
27+
metrics_files=$(grep --include=metrics.yaml -rwl $search_directory -e 'jmx_metrics:')
28+
29+
if [ -z "$metrics_files" ]; then
30+
echo "No metrics.yaml files with jmx_metrics blocks found."
31+
print_usage
32+
exit 1
33+
fi
34+
35+
# reset file and ensure directories exists
36+
> $build_resources_output_directory/metricconfigs.txt
37+
mkdir -p $build_resources_output_directory/metricconfigs
38+
39+
for input_file in $metrics_files ; do
40+
# generate new name based on integration folder name which should look like this:
41+
# integrations-core/<integration_name>/datadog_checks/<integration_name>/data/metrics.yaml
42+
output_file=$(echo "$input_file" | awk -F/ '{print $2}')
43+
44+
# save file name in metricconfigs.txt
45+
echo "$output_file.yaml" >> $build_resources_output_directory/metricconfigs.txt
46+
47+
# copy to output location
48+
output_file="$build_resources_output_directory/metricconfigs/$output_file.yaml"
49+
cp $input_file $output_file
50+
done
51+
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Metric Configs
22

3-
These files are copied directly from [integrations-core](https://github.com/DataDog/integrations-core/search?q=jmx_metrics&unscoped_q=jmx_metrics)
4-
where the only modification is updating the file name.
3+
Files from [integrations-core](https://github.com/DataDog/integrations-core/search?q=jmx_metrics&unscoped_q=jmx_metrics)
4+
are copied here at build time by the `copy-metric-configs.sh` script which is called by gradle after initializing the submodule.
55

6-
These will be bundled in `dd-java-agent.jar`. Due to limitations in Java, it is non-trivial
6+
These are then bundled in `dd-java-agent.jar`. Due to limitations in Java, it is non-trivial
77
to get all these files from within the jar without knowing their names.
88
Consequently, we list out each integration in `metricconfigs.txt` so the agent can reference them.

dd-java-agent/agent-jmxfetch/src/main/resources/datadog/trace/agent/jmxfetch/metricconfigs.txt

-5
This file was deleted.

dd-java-agent/agent-jmxfetch/src/main/resources/datadog/trace/agent/jmxfetch/metricconfigs/activemq.yaml

-54
This file was deleted.

0 commit comments

Comments
 (0)