grafana/pkg/server/operator.go
Steve Simpson 42e5684484
Operators: Cleanup shutdown mechanisms. (#125326)
Currently each of the operators listens for signals to shutdown, but this is
not necessary as they are run from dskit services which provice a Context which
will be cancelled on shutdown. Propagate this and use it instead.
2026-05-22 13:15:09 +02:00

48 lines
1.3 KiB
Go

package server
import (
"context"
"github.com/prometheus/client_golang/prometheus"
"github.com/grafana/grafana/pkg/services/apiserver/standalone"
"github.com/grafana/grafana/pkg/setting"
"github.com/urfave/cli/v2"
)
// OperatorDependencies contains all the dependencies that operators need
type OperatorDependencies struct {
BuildInfo standalone.BuildInfo
CLIContext *cli.Context
Config *setting.Cfg
Registerer prometheus.Registerer
HealthNotifier *HealthNotifier
}
// Operator represents an app operator that is available in the Grafana binary
type Operator struct {
Name string
Description string
RunFunc func(ctx context.Context, deps OperatorDependencies) error
}
var operatorsRegistry []Operator
// RegisterOperator registers an app operator that is baked into the Grafana binary
func RegisterOperator(operator Operator) {
operatorsRegistry = append(operatorsRegistry, operator)
}
// GetRegisteredOperators returns all registered operators
func GetRegisteredOperators() []Operator {
return operatorsRegistry
}
// GetRegisteredOperatorNames returns the names of all registered operators
func GetRegisteredOperatorNames() []string {
names := make([]string, len(operatorsRegistry))
for i, op := range operatorsRegistry {
names[i] = op.Name
}
return names
}