Skip to content

Commit 5e91df8

Browse files
35:A function to get the absolute path to the CGroupsV2
Signed-off-by: Neeraj Krishna Gopalakrishna <ngopalak@redhat.com>
1 parent b1a275c commit 5e91df8

File tree

5 files changed

+774
-301
lines changed

5 files changed

+774
-301
lines changed

pkg/api/container.go

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
package api
1818

1919
import (
20-
"os"
21-
"path/filepath"
22-
"strings"
2320
"time"
2421
)
2522

@@ -46,92 +43,3 @@ func (x *Container) GetFinishedAtTime() time.Time {
4643
}
4744
return t
4845
}
49-
50-
// GetCgroupsV2AbsPath returns the absolute path to the cgroup v2 directory for this container.
51-
// This method converts relative cgroup paths to absolute paths, for different cgroup managers,
52-
// QoS classes, and custom cgroup hierarchies.
53-
// It returns an empty string if the container has no Linux configuration or cgroups path.
54-
func (x *Container) GetCgroupsV2AbsPath() string {
55-
if x == nil || x.Linux == nil || x.Linux.CgroupsPath == "" {
56-
return ""
57-
}
58-
59-
cgroupPath := x.Linux.CgroupsPath
60-
return getCGroupsV2Path(cgroupPath)
61-
}
62-
63-
// GetCgroupsV2AbsPath returns the absolute path to the cgroup v2 directory for this pod sandbox.
64-
// This method converts relative cgroup paths to absolute paths, for different cgroup managers,
65-
// QoS classes, and custom cgroup hierarchies.
66-
// It returns an empty string if the container has no Linux configuration or cgroups path.
67-
func (x *PodSandbox) GetCgroupsV2AbsPath() string {
68-
if x == nil || x.Linux == nil || x.Linux.CgroupsPath == "" {
69-
return ""
70-
}
71-
72-
cgroupPath := x.Linux.CgroupsPath
73-
return getCGroupsV2Path(cgroupPath)
74-
}
75-
76-
// Helper functions
77-
78-
// getCGroupsV2Path helper
79-
// Same implementation for both sandbox and container
80-
func getCGroupsV2Path(cgroupPath string) string {
81-
if filepath.IsAbs(cgroupPath) {
82-
return cgroupPath
83-
}
84-
85-
cgroupV2Root := getCgroupV2Root()
86-
if cgroupV2Root == "" {
87-
// Fallback to default cgroup v2 mount point
88-
cgroupV2Root = "/sys/fs/cgroup"
89-
}
90-
91-
return filepath.Join(cgroupV2Root, cgroupPath)
92-
}
93-
94-
// getCgroupV2Root finds the cgroup v2 mount point by reading /proc/mounts
95-
// It returns an empty string if no cgroup v2 mount point is found
96-
func getCgroupV2Root() string {
97-
commonPaths := []string{
98-
"/sys/fs/cgroup",
99-
"/cgroup2",
100-
}
101-
102-
if mountPoint := findCgroupV2Mount(); mountPoint != "" {
103-
return mountPoint
104-
}
105-
106-
for _, path := range commonPaths {
107-
if isCgroupV2Mount(path) {
108-
return path
109-
}
110-
}
111-
112-
return "/sys/fs/cgroup"
113-
}
114-
115-
// findCgroupV2Mount reads /proc/mounts to find the cgroup2 filesystem mount point
116-
func findCgroupV2Mount() string {
117-
data, err := os.ReadFile("/proc/mounts")
118-
if err != nil {
119-
return ""
120-
}
121-
122-
lines := strings.Split(string(data), "\n")
123-
for _, line := range lines {
124-
fields := strings.Fields(line)
125-
if len(fields) >= 3 && fields[2] == "cgroup2" {
126-
return fields[1]
127-
}
128-
}
129-
return ""
130-
}
131-
132-
func isCgroupV2Mount(path string) bool {
133-
if _, err := os.Stat(filepath.Join(path, "cgroup.controllers")); err == nil {
134-
return true
135-
}
136-
return false
137-
}

pkg/api/container_test.go

Lines changed: 0 additions & 183 deletions
This file was deleted.

0 commit comments

Comments
 (0)