Skip to content

Commit 70f8b9e

Browse files
authored
Add support for PCF containers (DataDog#4183)
1 parent c89ec93 commit 70f8b9e

2 files changed

Lines changed: 21 additions & 1 deletion

File tree

utils/container-utils/src/main/java/datadog/common/container/ContainerInfo.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ public class ContainerInfo {
2424
private static final Logger log = LoggerFactory.getLogger(ContainerInfo.class);
2525

2626
private static final Path CGROUP_DEFAULT_PROCFILE = Paths.get("/proc/self/cgroup");
27+
// The second part is the PCF/Garden regexp. We assume no suffix ($) to avoid matching pod UIDs
28+
// See https://github.com/DataDog/datadog-agent/blob/7.40.x/pkg/util/cgroups/reader.go#L50
2729
private static final String UUID_REGEX =
28-
"[0-9a-f]{8}[-_][0-9a-f]{4}[-_][0-9a-f]{4}[-_][0-9a-f]{4}[-_][0-9a-f]{12}";
30+
"[0-9a-f]{8}[-_][0-9a-f]{4}[-_][0-9a-f]{4}[-_][0-9a-f]{4}[-_][0-9a-f]{12}|[0-9a-f]{8}(?:-[0-9a-f]{4}){4}$";
2931
private static final String CONTAINER_REGEX = "[0-9a-f]{64}";
3032
private static final String TASK_REGEX = "[0-9a-f]{32}-\\d+";
3133
private static final Pattern LINE_PATTERN = Pattern.compile("(\\d+):([^:]*):(.+)$");

utils/container-utils/src/test/groovy/ContainerInfoTest.groovy

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ class ContainerInfoTest extends DDSpecification {
8080
1 | ["name=systemd"] | "/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da" | "432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da" | null | "1:name=systemd:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da"
8181
1 | ["name=systemd"] | "/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890" | "34dc0b5e626f2c5c4c5170e34b10e765-1234567890" | null | "1:name=systemd:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890"
8282

83+
// PCF example
84+
1 | ["freezer"] | "/garden/6f265890-5165-7fab-6b52-18d1" | "6f265890-5165-7fab-6b52-18d1" | null | "1:freezer:/garden/6f265890-5165-7fab-6b52-18d1"
85+
8386
//Reference impl examples
8487
1 | ["name=systemd"] | "/system.slice/docker-cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411.scope" | "cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411" | null | "1:name=systemd:/system.slice/docker-cde7c2bab394630a42d73dc610b9c57415dced996106665d427f6d0566594411.scope"
8588
1 | ["name=systemd"] | "/docker/051e2ee0bce99116029a13df4a9e943137f19f957f38ac02d6bad96f9b700f76/not_hex" | null | null | "1:name=systemd:/docker/051e2ee0bce99116029a13df4a9e943137f19f957f38ac02d6bad96f9b700f76/not_hex"
@@ -165,6 +168,21 @@ class ContainerInfoTest extends DDSpecification {
165168
3:blkio:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
166169
2:memory:/ecs/55091c13-b8cf-4801-b527-f4601742204d/432624d2150b349fe35ba397284dea788c2bf66b885d14dfc1569b01890ca7da
167170
1:name=systemd:/ecs/34dc0b5e626f2c5c4c5170e34b10e765-1234567890"""
171+
172+
// PCF file
173+
"6f265890-5165-7fab-6b52-18d1" | null | 12 | """12:rdma:/
174+
11:net_cls,net_prio:/garden/6f265890-5165-7fab-6b52-18d1
175+
10:freezer:/garden/6f265890-5165-7fab-6b52-18d1
176+
9:devices:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
177+
8:blkio:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
178+
7:pids:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
179+
6:memory:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
180+
5:cpuset:/garden/6f265890-5165-7fab-6b52-18d1
181+
4:cpu,cpuacct:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1
182+
3:perf_event:/garden/6f265890-5165-7fab-6b52-18d1
183+
2:hugetlb:/garden/6f265890-5165-7fab-6b52-18d1
184+
1:name=systemd:/system.slice/garden.service/garden/6f265890-5165-7fab-6b52-18d1"""
185+
168186
// spotless:on
169187
}
170188

0 commit comments

Comments
 (0)