diff --git a/manager/manager.go b/manager/manager.go index 3535a22a..86c276ad 100644 --- a/manager/manager.go +++ b/manager/manager.go @@ -98,6 +98,7 @@ func New(memoryStorage *memory.InMemoryStorage, sysfs sysfs.SysFs) (Manager, err quitChannels: make([]chan error, 0, 2), memoryStorage: memoryStorage, cadvisorContainer: selfContainer, + startupTime: time.Now(), } machineInfo, err := getMachineInfo(sysfs) @@ -151,6 +152,7 @@ type manager struct { dockerContainersRegexp *regexp.Regexp loadReader cpuload.CpuLoadReader eventHandler events.EventManager + startupTime time.Time } // Start the container manager. @@ -488,6 +490,29 @@ func (m *manager) createContainer(containerName string) error { } glog.Infof("Added container: %q (aliases: %v, namespace: %q)", containerName, cont.info.Aliases, cont.info.Namespace) + contSpecs, err := cont.handler.GetSpec() + if err != nil { + return err + } + + if contSpecs.CreationTime.After(m.startupTime) { + contRef, err := cont.handler.ContainerReference() + if err != nil { + return err + } + + newEvent := &events.Event{ + ContainerName: contRef.Name, + EventData: contSpecs, + Timestamp: contSpecs.CreationTime, + EventType: events.TypeContainerCreation, + } + err = m.eventHandler.AddEvent(newEvent) + if err != nil { + return err + } + } + // Start the container's housekeeping. cont.Start() @@ -522,6 +547,21 @@ func (m *manager) destroyContainer(containerName string) error { }) } glog.Infof("Destroyed container: %q (aliases: %v, namespace: %q)", containerName, cont.info.Aliases, cont.info.Namespace) + + contRef, err := cont.handler.ContainerReference() + if err != nil { + return err + } + + newEvent := &events.Event{ + ContainerName: contRef.Name, + Timestamp: time.Now(), + EventType: events.TypeContainerDeletion, + } + err = m.eventHandler.AddEvent(newEvent) + if err != nil { + return err + } return nil }