48 lines
1.9 KiB
Go
48 lines
1.9 KiB
Go
package checks
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/grafana/grafana-app-sdk/logging"
|
|
advisorv0alpha1 "github.com/grafana/grafana/apps/advisor/pkg/apis/advisor/v0alpha1"
|
|
"github.com/grafana/grafana/pkg/plugins/repo"
|
|
)
|
|
|
|
// Check returns metadata about the check being executed and the list of Steps
|
|
type Check interface {
|
|
// ID returns the unique identifier of the check
|
|
ID() string
|
|
// Name returns the human-readable name of the check
|
|
Name() string
|
|
// Item returns the item that will be checked
|
|
Item(ctx context.Context, id string) (any, error)
|
|
// Items returns the list of items that will be checked
|
|
Items(ctx context.Context) ([]any, error)
|
|
// Steps returns the list of steps that will be executed
|
|
Steps() []Step
|
|
// Init initializes the check. It's called before running the steps and should be idempotent.
|
|
// The result should not be cached, it should be initialized from scratch.
|
|
Init(ctx context.Context) error
|
|
}
|
|
|
|
// Step is a single step in a check, including its metadata
|
|
type Step interface {
|
|
// ID returns the unique identifier of the step
|
|
ID() string
|
|
// Title returns the title of the step
|
|
Title() string
|
|
// Description returns the description of the step
|
|
Description() string
|
|
// Explains the action that needs to be taken to resolve the issue
|
|
Resolution() string
|
|
// Run executes the step for an item and returns a report
|
|
Run(ctx context.Context, log logging.Logger, obj *advisorv0alpha1.CheckSpec, item any) ([]advisorv0alpha1.CheckReportFailure, error)
|
|
}
|
|
|
|
// PluginInfoGetter is a minimal interface for retrieving plugin information from a repository.
|
|
// It contains only the GetPluginsInfo method used by plugincheck and datasourcecheck.
|
|
type PluginInfoGetter interface {
|
|
// GetPluginsInfo will return a list of plugins from grafana.com/api/plugins.
|
|
GetPluginsInfo(ctx context.Context, options repo.GetPluginsInfoOptions, compatOpts repo.CompatOpts) ([]repo.PluginInfo, error)
|
|
}
|