mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 09:22:44 +00:00
Extract containerID from systemd-style cgroupPath in cri_stats_provider
And fix test to generate UUID without dash
This commit is contained in:
parent
7ee94f2f4f
commit
545d898584
@ -826,7 +826,24 @@ func getCRICadvisorStats(infos map[string]cadvisorapiv2.ContainerInfo) map[strin
|
|||||||
if !isPodManagedContainer(&info) {
|
if !isPodManagedContainer(&info) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
stats[path.Base(key)] = info
|
stats[extractIDFromCgroupPath(key)] = info
|
||||||
}
|
}
|
||||||
return stats
|
return stats
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func extractIDFromCgroupPath(cgroupPath string) string {
|
||||||
|
// case0 == cgroupfs: "/kubepods/burstable/pod2fc932ce-fdcc-454b-97bd-aadfdeb4c340/9be25294016e2dc0340dd605ce1f57b492039b267a6a618a7ad2a7a58a740f32"
|
||||||
|
id := path.Base(cgroupPath)
|
||||||
|
|
||||||
|
// case1 == systemd: "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod2fc932ce_fdcc_454b_97bd_aadfdeb4c340.slice/cri-containerd-aaefb9d8feed2d453b543f6d928cede7a4dbefa6a0ae7c9b990dd234c56e93b9.scope"
|
||||||
|
// trim anything before the final '-' and suffix .scope
|
||||||
|
systemdSuffix := ".scope"
|
||||||
|
if strings.HasSuffix(id, systemdSuffix) {
|
||||||
|
id = strings.TrimSuffix(id, systemdSuffix)
|
||||||
|
components := strings.Split(id, "-")
|
||||||
|
if len(components) > 1 {
|
||||||
|
id = components[len(components)-1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return id
|
||||||
|
}
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -696,7 +697,7 @@ func makeFakePodSandbox(name, uid, namespace string, terminated bool) *critest.F
|
|||||||
if terminated {
|
if terminated {
|
||||||
p.PodSandboxStatus.State = runtimeapi.PodSandboxState_SANDBOX_NOTREADY
|
p.PodSandboxStatus.State = runtimeapi.PodSandboxState_SANDBOX_NOTREADY
|
||||||
}
|
}
|
||||||
p.PodSandboxStatus.Id = string(uuid.NewUUID())
|
p.PodSandboxStatus.Id = strings.ReplaceAll(string(uuid.NewUUID()), "-", "")
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -722,7 +723,7 @@ func makeFakeContainer(sandbox *critest.FakePodSandbox, name string, attempt uin
|
|||||||
} else {
|
} else {
|
||||||
c.ContainerStatus.State = runtimeapi.ContainerState_CONTAINER_RUNNING
|
c.ContainerStatus.State = runtimeapi.ContainerState_CONTAINER_RUNNING
|
||||||
}
|
}
|
||||||
c.ContainerStatus.Id = string(uuid.NewUUID())
|
c.ContainerStatus.Id = strings.ReplaceAll(string(uuid.NewUUID()), "-", "")
|
||||||
return c
|
return c
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1072,3 +1073,28 @@ func TestGetContainerUsageNanoCores(t *testing.T) {
|
|||||||
assert.Equal(t, test.expected, cached, test.desc)
|
assert.Equal(t, test.expected, cached, test.desc)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestExtractIDFromCgroupPath(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
cgroupPath string
|
||||||
|
expected string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
cgroupPath: "/kubepods/burstable/pod2fc932ce-fdcc-454b-97bd-aadfdeb4c340/9be25294016e2dc0340dd605ce1f57b492039b267a6a618a7ad2a7a58a740f32",
|
||||||
|
expected: "9be25294016e2dc0340dd605ce1f57b492039b267a6a618a7ad2a7a58a740f32",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cgroupPath: "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod2fc932ce_fdcc_454b_97bd_aadfdeb4c340.slice/cri-containerd-aaefb9d8feed2d453b543f6d928cede7a4dbefa6a0ae7c9b990dd234c56e93b9.scope",
|
||||||
|
expected: "aaefb9d8feed2d453b543f6d928cede7a4dbefa6a0ae7c9b990dd234c56e93b9",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cgroupPath: "/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod2fc932ce_fdcc_454b_97bd_aadfdeb4c340.slice/cri-o-aaefb9d8feed2d453b543f6d928cede7a4dbefa6a0ae7c9b990dd234c56e93b9.scope",
|
||||||
|
expected: "aaefb9d8feed2d453b543f6d928cede7a4dbefa6a0ae7c9b990dd234c56e93b9",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
id := extractIDFromCgroupPath(test.cgroupPath)
|
||||||
|
assert.Equal(t, test.expected, id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user