in pkg/trimaran/collector.go [52:92]
func NewCollector(trimaranSpec *pluginConfig.TrimaranSpec) (*Collector, error) {
if err := checkSpecs(trimaranSpec); err != nil {
return nil, err
}
klog.V(4).InfoS("Using TrimaranSpec", "type", trimaranSpec.MetricProvider.Type,
"address", trimaranSpec.MetricProvider.Address, "watcher", trimaranSpec.WatcherAddress)
var client loadwatcherapi.Client
if trimaranSpec.WatcherAddress != "" {
client, _ = loadwatcherapi.NewServiceClient(trimaranSpec.WatcherAddress)
} else {
opts := watcher.MetricsProviderOpts{
Name: string(trimaranSpec.MetricProvider.Type),
Address: trimaranSpec.MetricProvider.Address,
AuthToken: trimaranSpec.MetricProvider.Token,
InsecureSkipVerify: trimaranSpec.MetricProvider.InsecureSkipVerify,
}
client, _ = loadwatcherapi.NewLibraryClient(opts)
}
collector := &Collector{
client: client,
}
// populate metrics before returning
err := collector.updateMetrics()
if err != nil {
klog.ErrorS(err, "Unable to populate metrics initially")
}
// start periodic updates
go func() {
metricsUpdaterTicker := time.NewTicker(time.Second * metricsUpdateIntervalSeconds)
for range metricsUpdaterTicker.C {
err = collector.updateMetrics()
if err != nil {
klog.ErrorS(err, "Unable to update metrics")
}
}
}()
return collector, nil
}