From 47b41a6f5d801395f89ebdb7ff83f8ca8150e6de Mon Sep 17 00:00:00 2001 From: Michael Crosby Date: Thu, 30 Oct 2014 22:08:28 +0000 Subject: [PATCH] Add logger to container and factory Signed-off-by: Michael Crosby --- cgroups.go | 9 +++++++++ linux_container.go | 15 ++++++++++++++- linux_factory.go | 17 ++++++++++++++--- nsinit/main.go | 2 ++ nsinit/stats.go | 2 +- 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/cgroups.go b/cgroups.go index 9345f2e304b..68754b062c9 100644 --- a/cgroups.go +++ b/cgroups.go @@ -7,6 +7,7 @@ import ( ) type CgroupManager interface { + String() string GetPids(*cgroups.Cgroup) ([]int, error) GetStats(*cgroups.Cgroup) (*cgroups.Stats, error) } @@ -29,6 +30,10 @@ func (m *systemdCgroupManager) GetStats(config *cgroups.Cgroup) (*cgroups.Stats, return systemd.GetStats(config) } +func (m *systemdCgroupManager) String() string { + return "systemd" +} + type fsCgroupsManager struct { } @@ -39,3 +44,7 @@ func (m *fsCgroupsManager) GetPids(config *cgroups.Cgroup) ([]int, error) { func (m *fsCgroupsManager) GetStats(config *cgroups.Cgroup) (*cgroups.Stats, error) { return fs.GetStats(config) } + +func (m *fsCgroupsManager) String() string { + return "fs" +} diff --git a/linux_container.go b/linux_container.go index 938250ca9af..09a0414fcdb 100644 --- a/linux_container.go +++ b/linux_container.go @@ -2,7 +2,10 @@ package libcontainer -import "github.com/docker/libcontainer/network" +import ( + "github.com/Sirupsen/logrus" + "github.com/docker/libcontainer/network" +) type linuxContainer struct { id string @@ -10,6 +13,7 @@ type linuxContainer struct { config *Config state *State cgroupManager CgroupManager + logger *logrus.Logger } func (c *linuxContainer) ID() string { @@ -25,6 +29,7 @@ func (c *linuxContainer) RunState() (RunState, error) { } func (c *linuxContainer) Processes() ([]int, error) { + c.logger.Debug("fetch container processes") pids, err := c.cgroupManager.GetPids(c.config.Cgroups) if err != nil { return nil, newGenericError(err, SystemError) @@ -33,6 +38,7 @@ func (c *linuxContainer) Processes() ([]int, error) { } func (c *linuxContainer) Stats() (*ContainerStats, error) { + c.logger.Debug("fetch container stats") var ( err error stats = &ContainerStats{} @@ -48,29 +54,36 @@ func (c *linuxContainer) Stats() (*ContainerStats, error) { } func (c *linuxContainer) StartProcess(config *ProcessConfig) (int, error) { + c.logger.Debug("start new container process") panic("not implemented") } func (c *linuxContainer) Destroy() error { + c.logger.Debug("destroy container") panic("not implemented") } func (c *linuxContainer) Pause() error { + c.logger.Debug("pause container") panic("not implemented") } func (c *linuxContainer) Resume() error { + c.logger.Debug("resume container") panic("not implemented") } func (c *linuxContainer) Signal(pid, signal int) error { + c.logger.Debugf("sending signal %d to pid %d", signal, pid) panic("not implemented") } func (c *linuxContainer) Wait() (int, error) { + c.logger.Debug("wait container") panic("not implemented") } func (c *linuxContainer) WaitProcess(pid int) (int, error) { + c.logger.Debugf("wait process %d", pid) panic("not implemented") } diff --git a/linux_factory.go b/linux_factory.go index 3299dc8fa9f..dc998c343b5 100644 --- a/linux_factory.go +++ b/linux_factory.go @@ -6,6 +6,8 @@ import ( "encoding/json" "os" "path/filepath" + + "github.com/Sirupsen/logrus" ) const ( @@ -14,13 +16,14 @@ const ( ) // New returns a linux based container factory based in the root directory. -func New(root string) (Factory, error) { +func New(root string, logger *logrus.Logger) (Factory, error) { if err := os.MkdirAll(root, 0700); err != nil { return nil, newGenericError(err, SystemError) } return &linuxFactory{ - root: root, + root: root, + logger: logger, }, nil } @@ -28,6 +31,9 @@ func New(root string) (Factory, error) { type linuxFactory struct { // root is the root directory root string + + // standard logger for all packages + logger *logrus.Logger } func (l *linuxFactory) Create(id string, config *Config) (Container, error) { @@ -36,22 +42,27 @@ func (l *linuxFactory) Create(id string, config *Config) (Container, error) { func (l *linuxFactory) Load(id string) (Container, error) { containerRoot := filepath.Join(l.root, id) + l.logger.Debugf("loading container config from %s", containerRoot) config, err := l.loadContainerConfig(containerRoot) if err != nil { return nil, err } + l.logger.Debugf("loading container state from %s", containerRoot) state, err := l.loadContainerState(containerRoot) if err != nil { return nil, err } + cgroupManager := newCgroupsManager() + l.logger.Debugf("using %s as cgroup manager", cgroupManager) return &linuxContainer{ id: id, root: containerRoot, config: config, state: state, - cgroupManager: newCgroupsManager(), + cgroupManager: cgroupManager, + logger: l.logger, }, nil } diff --git a/nsinit/main.go b/nsinit/main.go index 561ce3a9976..9ce75e94e04 100644 --- a/nsinit/main.go +++ b/nsinit/main.go @@ -5,11 +5,13 @@ import ( "os" "strings" + "github.com/Sirupsen/logrus" "github.com/codegangsta/cli" ) var ( logPath = os.Getenv("log") + logger = logrus.New() argvs = make(map[string]*rFunc) ) diff --git a/nsinit/stats.go b/nsinit/stats.go index 62fc1d4b24e..a195231cdae 100644 --- a/nsinit/stats.go +++ b/nsinit/stats.go @@ -16,7 +16,7 @@ var statsCommand = cli.Command{ } func statsAction(context *cli.Context) { - factory, err := libcontainer.New(context.GlobalString("root")) + factory, err := libcontainer.New(context.GlobalString("root"), logger) if err != nil { log.Fatal(err) }