Skip to content

Commit 1284096

Browse files
authored
Merge pull request #212 from lucaslorentz/feature/id-extract-rootless-docker
Improve ID extraction to work on rootless docker
2 parents 395b0a2 + 931eee1 commit 1284096

File tree

2 files changed

+33
-7
lines changed

2 files changed

+33
-7
lines changed

plugin/docker/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func (wrapper *dockerUtils) GetCurrentContainerID() (string, error) {
4040
}
4141

4242
func (wrapper *dockerUtils) ExtractContainerID(cgroups string) (string, error) {
43-
idRegex := regexp.MustCompile(`(?i):[^:]*\bcpu\b[^:]*:[^/]*/.*([[:alnum:]]{64}).*`)
43+
idRegex := regexp.MustCompile(`(?im)^[^:]*:[^:]*:.*\b([[:alnum:]]{64})\b`)
4444
matches := idRegex.FindStringSubmatch(cgroups)
4545

4646
if len(matches) == 0 {

plugin/docker/utils_test.go

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,7 @@ import (
66

77
func TestFailExtractBasicDockerId(t *testing.T) {
88
read :=
9-
`5:cpu,cpuacct:/system.slice/d39fa516d8377ecddf9bf8ef33f81cbf58b4d604d85293ced7cdb0c7fc52442.scope
10-
4:cpu,cpuacct:/system.slice/d39fa516d8377ecddf9bf8ef33f81cbf58b4d604d85293ced7cdb0c7fc52442
11-
3:zpu,cpuacct:/system.slice/d39fa516d8377ecddf9bf8ef33f81cbf58b4d604d85293ced7cdb0c7fc52442b
12-
2:cpu,cpuacct:system.slice:d39fa516d8377ecddf9bf8ef33f81cbf58b4d604d85293ced7cdb0c7fc52442b
13-
1:cpu,cpuacct:/system.slice/d39fa516d8377ecddf9bf8ef33f81cbf5 8b4d604d85293ced7cdb0c7fc52442b.scope
14-
`
9+
`1:cpu:/not_an_id`
1510

1611
utils := dockerUtils{}
1712

@@ -179,3 +174,34 @@ func TestExtractECSDockerId(t *testing.T) {
179174
t.Fatalf("id mismatch: actual %v, expected %v", actual, expected)
180175
}
181176
}
177+
178+
func TestExtractRootlessDockerId(t *testing.T) {
179+
read :=
180+
`11:rdma:/
181+
10:freezer:/
182+
9:cpuset:/
183+
8:net_cls,net_prio:/
184+
7:cpu,cpuacct:/
185+
6:devices:/user.slice
186+
5:memory:/user.slice/user-1000.slice/[email protected]
187+
4:perf_event:/
188+
3:pids:/user.slice/user-1000.slice/[email protected]
189+
2:blkio:/
190+
1:name=systemd:/user.slice/user-1000.slice/[email protected]/docker.service/f7df0c0b3a8d4350647486b24a5bd5785d494c1a0910cfaee66d3db0db784093
191+
0::/user.slice/user-1000.slice/[email protected]/docker.service
192+
`
193+
194+
expected := "f7df0c0b3a8d4350647486b24a5bd5785d494c1a0910cfaee66d3db0db784093"
195+
196+
utils := dockerUtils{}
197+
198+
actual, err := utils.ExtractContainerID(read)
199+
200+
if err != nil {
201+
t.Fatalf("Could not extract container id : %v", err)
202+
}
203+
204+
if actual != expected {
205+
t.Fatalf("id mismatch: actual %v, expected %v", actual, expected)
206+
}
207+
}

0 commit comments

Comments
 (0)