Skip to content

Commit

Permalink
Merge pull request #2177 from devimc/topic/libcontainer/kata-containers
Browse files Browse the repository at this point in the history
libcontainer: export and add new methods to allow cgroups manipulation
  • Loading branch information
crosbymichael committed Jan 2, 2020
2 parents a88592a + 8ddd892 commit 2b52db7
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 8 deletions.
3 changes: 3 additions & 0 deletions libcontainer/cgroups/cgroups.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ type Manager interface {

// Sets the cgroup as configured.
Set(container *configs.Config) error

// Gets the cgroup as configured.
GetCgroups() (*configs.Cgroup, error)
}

type NotFoundError struct {
Expand Down
4 changes: 4 additions & 0 deletions libcontainer/cgroups/fs/apply_raw.go
Original file line number Diff line number Diff line change
Expand Up @@ -467,3 +467,7 @@ func CheckCpushares(path string, c uint64) error {

return nil
}

func (m *Manager) GetCgroups() (*configs.Cgroup, error) {
return m.Cgroups, nil
}
4 changes: 4 additions & 0 deletions libcontainer/cgroups/systemd/apply_nosystemd.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,7 @@ func (m *Manager) Freeze(state configs.FreezerState) error {
func Freeze(c *configs.Cgroup, state configs.FreezerState) error {
return fmt.Errorf("Systemd not supported")
}

func (m *Manager) GetCgroups() (*configs.Cgroup, error) {
return nil, fmt.Errorf("Systemd not supported")
}
4 changes: 4 additions & 0 deletions libcontainer/cgroups/systemd/apply_systemd.go
Original file line number Diff line number Diff line change
Expand Up @@ -528,3 +528,7 @@ func isUnitExists(err error) bool {
}
return false
}

func (m *LegacyManager) GetCgroups() (*configs.Cgroup, error) {
return m.Cgroups, nil
}
4 changes: 4 additions & 0 deletions libcontainer/cgroups/systemd/unified_hierarchy.go
Original file line number Diff line number Diff line change
Expand Up @@ -346,3 +346,7 @@ func (m *UnifiedManager) Set(container *configs.Config) error {
}
return nil
}

func (m *UnifiedManager) GetCgroups() (*configs.Cgroup, error) {
return m.Cgroups, nil
}
7 changes: 7 additions & 0 deletions libcontainer/container_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@ func (m *mockCgroupManager) GetUnifiedPath() (string, error) {
func (m *mockCgroupManager) Freeze(state configs.FreezerState) error {
return nil
}
func (m *mockCgroupManager) GetCgroups() (*configs.Cgroup, error) {
return nil, nil
}

func (m *mockIntelRdtManager) Apply(pid int) error {
return nil
Expand All @@ -82,6 +85,10 @@ func (m *mockIntelRdtManager) Set(container *configs.Config) error {
return nil
}

func (m *mockIntelRdtManager) GetCgroups() (*configs.Cgroup, error) {
return nil, nil
}

type mockProcess struct {
_pid int
started uint64
Expand Down
4 changes: 2 additions & 2 deletions libcontainer/specconv/spec_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ func CreateLibcontainerConfig(opts *CreateOpts) (*configs.Config, error) {
if err := createDevices(spec, config); err != nil {
return nil, err
}
c, err := createCgroupConfig(opts)
c, err := CreateCgroupConfig(opts)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -297,7 +297,7 @@ func createLibcontainerMount(cwd string, m specs.Mount) *configs.Mount {
}
}

func createCgroupConfig(opts *CreateOpts) (*configs.Cgroup, error) {
func CreateCgroupConfig(opts *CreateOpts) (*configs.Cgroup, error) {
var (
myCgroupPath string

Expand Down
12 changes: 6 additions & 6 deletions libcontainer/specconv/spec_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ func TestLinuxCgroupWithMemoryResource(t *testing.T) {
Spec: spec,
}

cgroup, err := createCgroupConfig(opts)
cgroup, err := CreateCgroupConfig(opts)
if err != nil {
t.Errorf("Couldn't create Cgroup config: %v", err)
}
Expand Down Expand Up @@ -257,7 +257,7 @@ func TestLinuxCgroupSystemd(t *testing.T) {
Spec: spec,
}

cgroup, err := createCgroupConfig(opts)
cgroup, err := CreateCgroupConfig(opts)

if err != nil {
t.Errorf("Couldn't create Cgroup config: %v", err)
Expand Down Expand Up @@ -293,7 +293,7 @@ func TestLinuxCgroupSystemdWithEmptyPath(t *testing.T) {
Spec: spec,
}

cgroup, err := createCgroupConfig(opts)
cgroup, err := CreateCgroupConfig(opts)

if err != nil {
t.Errorf("Couldn't create Cgroup config: %v", err)
Expand Down Expand Up @@ -328,7 +328,7 @@ func TestLinuxCgroupSystemdWithInvalidPath(t *testing.T) {
Spec: spec,
}

_, err := createCgroupConfig(opts)
_, err := CreateCgroupConfig(opts)
if err == nil {
t.Error("Expected to produce an error if not using the correct format for cgroup paths belonging to systemd")
}
Expand All @@ -347,7 +347,7 @@ func TestLinuxCgroupsPathSpecified(t *testing.T) {
Spec: spec,
}

cgroup, err := createCgroupConfig(opts)
cgroup, err := CreateCgroupConfig(opts)
if err != nil {
t.Errorf("Couldn't create Cgroup config: %v", err)
}
Expand All @@ -365,7 +365,7 @@ func TestLinuxCgroupsPathNotSpecified(t *testing.T) {
Spec: spec,
}

cgroup, err := createCgroupConfig(opts)
cgroup, err := CreateCgroupConfig(opts)
if err != nil {
t.Errorf("Couldn't create Cgroup config: %v", err)
}
Expand Down

0 comments on commit 2b52db7

Please sign in to comment.