mirror of
https://github.com/containers/podman.git
synced 2025-07-02 16:57:24 +08:00
libpod: Factor out cgroups handling from (*Pod).refresh
This moves the cgroup code to pod_internal_linux.go and adds a no-op stub for FreeBSD. [NO NEW TESTS NEEDED] Signed-off-by: Doug Rabson <dfr@rabson.org>
This commit is contained in:
@ -2,14 +2,10 @@ package libpod
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"time"
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v4/libpod/define"
|
||||
"github.com/containers/podman/v4/pkg/rootless"
|
||||
"github.com/containers/storage/pkg/stringid"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// Creates a new, empty pod
|
||||
@ -64,24 +60,8 @@ func (p *Pod) refresh() error {
|
||||
}
|
||||
p.lock = lock
|
||||
|
||||
// We need to recreate the pod's cgroup
|
||||
if p.config.UsePodCgroup {
|
||||
switch p.runtime.config.Engine.CgroupManager {
|
||||
case config.SystemdCgroupsManager:
|
||||
cgroupPath, err := systemdSliceFromPath(p.config.CgroupParent, fmt.Sprintf("libpod_pod_%s", p.ID()), p.ResourceLim())
|
||||
if err != nil {
|
||||
logrus.Errorf("Creating Cgroup for pod %s: %v", p.ID(), err)
|
||||
}
|
||||
p.state.CgroupPath = cgroupPath
|
||||
case config.CgroupfsCgroupsManager:
|
||||
if rootless.IsRootless() && isRootlessCgroupSet(p.config.CgroupParent) {
|
||||
p.state.CgroupPath = filepath.Join(p.config.CgroupParent, p.ID())
|
||||
|
||||
logrus.Debugf("setting pod cgroup to %s", p.state.CgroupPath)
|
||||
}
|
||||
default:
|
||||
return fmt.Errorf("unknown cgroups manager %s specified: %w", p.runtime.config.Engine.CgroupManager, define.ErrInvalidArg)
|
||||
}
|
||||
if err := p.platformRefresh(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Save changes
|
||||
|
5
libpod/pod_internal_freebsd.go
Normal file
5
libpod/pod_internal_freebsd.go
Normal file
@ -0,0 +1,5 @@
|
||||
package libpod
|
||||
|
||||
func (p *Pod) platformRefresh() error {
|
||||
return nil
|
||||
}
|
34
libpod/pod_internal_linux.go
Normal file
34
libpod/pod_internal_linux.go
Normal file
@ -0,0 +1,34 @@
|
||||
package libpod
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/podman/v4/libpod/define"
|
||||
"github.com/containers/podman/v4/pkg/rootless"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func (p *Pod) platformRefresh() error {
|
||||
// We need to recreate the pod's cgroup
|
||||
if p.config.UsePodCgroup {
|
||||
switch p.runtime.config.Engine.CgroupManager {
|
||||
case config.SystemdCgroupsManager:
|
||||
cgroupPath, err := systemdSliceFromPath(p.config.CgroupParent, fmt.Sprintf("libpod_pod_%s", p.ID()), p.ResourceLim())
|
||||
if err != nil {
|
||||
logrus.Errorf("Creating Cgroup for pod %s: %v", p.ID(), err)
|
||||
}
|
||||
p.state.CgroupPath = cgroupPath
|
||||
case config.CgroupfsCgroupsManager:
|
||||
if rootless.IsRootless() && isRootlessCgroupSet(p.config.CgroupParent) {
|
||||
p.state.CgroupPath = filepath.Join(p.config.CgroupParent, p.ID())
|
||||
|
||||
logrus.Debugf("setting pod cgroup to %s", p.state.CgroupPath)
|
||||
}
|
||||
default:
|
||||
return fmt.Errorf("unknown cgroups manager %s specified: %w", p.runtime.config.Engine.CgroupManager, define.ErrInvalidArg)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user