Skip to content

Commit

Permalink
Fix nsinit function to get stats from systemd
Browse files Browse the repository at this point in the history
Docker-DCO-1.1-Signed-off-by: Michael Crosby <michael@docker.com> (github: crosbymichael)
  • Loading branch information
Michael Crosby committed Jul 11, 2014
1 parent cbd37fb commit 50106c7
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 14 deletions.
24 changes: 15 additions & 9 deletions api_temp.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,30 @@ package libcontainer

import (
"github.com/docker/libcontainer/cgroups/fs"
"github.com/docker/libcontainer/cgroups/systemd"
"github.com/docker/libcontainer/network"
)

// TODO(vmarmol): Complete Stats() in final libcontainer API and move users to that.
// DEPRECATED: The below portions are only to be used during the transition to the official API.
// Returns all available stats for the given container.
func GetStats(container *Config, state *State) (*ContainerStats, error) {
var containerStats ContainerStats
stats, err := fs.GetStats(container.Cgroups)
if err != nil {
return &containerStats, err
var (
err error
stats = &ContainerStats{}
)

if systemd.UseSystemd() {
stats.CgroupStats, err = systemd.GetStats(container.Cgroups)
} else {
stats.CgroupStats, err = fs.GetStats(container.Cgroups)
}
containerStats.CgroupStats = stats
networkStats, err := network.GetStats(&state.NetworkState)

if err != nil {
return &containerStats, err
return stats, err
}
containerStats.NetworkStats = networkStats

return &containerStats, nil
stats.NetworkStats, err = network.GetStats(&state.NetworkState)

return stats, err
}
9 changes: 4 additions & 5 deletions cgroups/systemd/apply_systemd.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ var (
connLock sync.Mutex
theConn *systemd1.Conn
hasStartTransientUnit bool
subsystems = map[string]subsystem{
subsystems = map[string]subsystem{
"devices": &fs.DevicesGroup{},
"memory": &fs.MemoryGroup{},
"cpu": &fs.CpuGroup{},
Expand Down Expand Up @@ -417,15 +417,14 @@ func getUnitName(c *cgroups.Cgroup) string {
* http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/#readingaccountinginformation.
*/
func GetStats(c *cgroups.Cgroup) (*cgroups.Stats, error) {
var subsystemPath string
var err error

stats := cgroups.NewStats()

for sysname, sys := range subsystems {
if subsystemPath, err = getSubsystemPath(c, sysname); err != nil {
subsystemPath, err := getSubsystemPath(c, sysname)
if err != nil {
return nil, err
}

if err := sys.GetStats(subsystemPath, stats); err != nil {
return nil, err
}
Expand Down

0 comments on commit 50106c7

Please sign in to comment.