func NewManager(sources []source_api.Source, sinkManager sinks.ExternalSinkManager, res, bufferDuration time.Duration, c cache.Cache, useModel bool, modelRes time.Duration) (Manager, error) { var newModel model.Model = nil if useModel { newModel = model.NewModel(modelRes) // Temporary semi-hack to get model storage garbage-collected. c.AddCacheListener(newModel.GetCacheListener()) } return &realManager{ sources: sources, sinkManager: sinkManager, cache: c, model: newModel, lastSync: time.Now(), resolution: res, decoder: sink_api.NewDecoder(), sinkStopChan: sinkManager.Sync(), }, nil }
func getNodeMetrics(model model_api.Model, name string) (*types.DerivedNodeMetrics, error) { res, err := model.GetNodeStats(model_api.NodeRequest{ NodeName: name, }) if err != nil { return nil, err } metrics := &types.DerivedNodeMetrics{ NodeName: name, NodeMetrics: types.MetricsWindows{ EndTime: unversioned.NewTime(res.Timestamp), }, // TODO: fill SystemContainers SystemContainers: make([]types.DerivedContainerMetrics, 0), } if err := portStats(&metrics.NodeMetrics, res.ByName); err != nil { return nil, err } return metrics, nil }