Skip to content

Commit

Permalink
dependency inject MetricsNodeDriver
Browse files Browse the repository at this point in the history
  • Loading branch information
joshmeranda committed Feb 9, 2023
1 parent 5bc502e commit ecbc812
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
24 changes: 20 additions & 4 deletions plugins/metrics/pkg/agent/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ type MetricsNode struct {

listeners []chan<- *node.MetricsCapabilityConfig
conditions health.ConditionTracker

nodeDriverMu sync.RWMutex
nodeDriver drivers.MetricsNodeDriver
}

func NewMetricsNode(ct health.ConditionTracker, lg *zap.SugaredLogger) *MetricsNode {
Expand Down Expand Up @@ -122,6 +125,13 @@ func (m *MetricsNode) SetRemoteWriter(client clients.Locker[remotewrite.RemoteWr
m.targetRunner.SetRemoteWriteClient(client)
}

func (m *MetricsNode) SetNodeDriver(driver drivers.MetricsNodeDriver) {
m.nodeDriverMu.Lock()
defer m.nodeDriverMu.Unlock()

m.nodeDriver = driver
}

func (m *MetricsNode) Info(_ context.Context, _ *emptypb.Empty) (*capabilityv1.Details, error) {
return &capabilityv1.Details{
Name: wellknown.CapabilityMetrics,
Expand Down Expand Up @@ -203,12 +213,18 @@ func (m *MetricsNode) GetTargetStatus(ctx context.Context, request *remoteread.T
}

func (m *MetricsNode) Discover(ctx context.Context, request *remoteread.DiscoveryRequest) (*remoteread.DiscoveryResponse, error) {
driver, err := drivers.GetNodeDriver("external-operator")
if err != nil {
return nil, fmt.Errorf("could not get driver: %w", err)
m.nodeDriverMu.RLock()
defer m.nodeDriverMu.RUnlock()

if m.nodeDriver == nil {
m.logger.Warnf("no node driver available for discvoery")

return &remoteread.DiscoveryResponse{
Entries: []*remoteread.DiscoveryEntry{},
}, nil
}

entries, err := driver.DiscoverPrometheuses(ctx, *request.Namespace)
entries, err := m.nodeDriver.DiscoverPrometheuses(ctx, *request.Namespace)
if err != nil {
return nil, fmt.Errorf("could not discover Prometheus instances: %w", err)
}
Expand Down
1 change: 1 addition & 0 deletions plugins/metrics/pkg/agent/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ func NewPlugin(ctx context.Context) *Plugin {
).Info("node driver is available")
drivers.RegisterNodeDriver(d)
p.node.AddConfigListener(drivers.NewListenerFunc(ctx, d.ConfigureNode))
p.node.SetNodeDriver(d)
}

p.node.AddConfigListener(drivers.NewListenerFunc(ctx, p.onConfigUpdated))
Expand Down

0 comments on commit ecbc812

Please sign in to comment.