Added a way for oom events to be handled by the manager
This commit is contained in:
parent
7def27275a
commit
5f66cbc9bf
@ -71,6 +71,9 @@ type Manager interface {
|
|||||||
|
|
||||||
// Get version information about different components we depend on.
|
// Get version information about different components we depend on.
|
||||||
GetVersionInfo() (*info.VersionInfo, error)
|
GetVersionInfo() (*info.VersionInfo, error)
|
||||||
|
|
||||||
|
// Get events streamed through passedChannel that fit the request.
|
||||||
|
WatchForEvents(request *events.Request, passedChannel chan *events.Event) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// New takes a memory storage and returns a new manager.
|
// New takes a memory storage and returns a new manager.
|
||||||
@ -107,6 +110,8 @@ func New(memoryStorage *memory.InMemoryStorage, sysfs sysfs.SysFs) (Manager, err
|
|||||||
newManager.versionInfo = *versionInfo
|
newManager.versionInfo = *versionInfo
|
||||||
glog.Infof("Version: %+v", newManager.versionInfo)
|
glog.Infof("Version: %+v", newManager.versionInfo)
|
||||||
|
|
||||||
|
newManager.eventHandler = events.NewEventManager()
|
||||||
|
|
||||||
return newManager, nil
|
return newManager, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,6 +134,7 @@ type manager struct {
|
|||||||
cadvisorContainer string
|
cadvisorContainer string
|
||||||
dockerContainersRegexp *regexp.Regexp
|
dockerContainersRegexp *regexp.Regexp
|
||||||
loadReader cpuload.CpuLoadReader
|
loadReader cpuload.CpuLoadReader
|
||||||
|
eventHandler events.EventManager
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start the container manager.
|
// Start the container manager.
|
||||||
@ -169,6 +175,10 @@ func (self *manager) Start() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
self.quitChannels = append(self.quitChannels, quitWatcher)
|
self.quitChannels = append(self.quitChannels, quitWatcher)
|
||||||
|
err = self.watchForNewOoms()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// Look for new containers in the main housekeeping thread.
|
// Look for new containers in the main housekeeping thread.
|
||||||
quitGlobalHousekeeping := make(chan error)
|
quitGlobalHousekeeping := make(chan error)
|
||||||
@ -645,7 +655,16 @@ func (self *manager) watchForNewOoms() error {
|
|||||||
EventData: oomInstance,
|
EventData: oomInstance,
|
||||||
}
|
}
|
||||||
glog.V(1).Infof("Created an oom event: %v", newEvent)
|
glog.V(1).Infof("Created an oom event: %v", newEvent)
|
||||||
|
err := self.eventHandler.AddEvent(newEvent)
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Failed to add event %v, got error: %v", newEvent, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// can be called by the api which will take events returned on the channel
|
||||||
|
func (self *manager) WatchForEvents(request *events.Request, passedChannel chan *events.Event) error {
|
||||||
|
return self.eventHandler.WatchEvents(passedChannel, request)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user