73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package instancechecks
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/google/go-github/v70/github"
|
|
"github.com/grafana/grafana/apps/advisor/pkg/app/checks"
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
)
|
|
|
|
var _ checks.Check = (*check)(nil)
|
|
|
|
type check struct {
|
|
cfg *setting.Cfg
|
|
isCloudInstance bool
|
|
}
|
|
|
|
func New(cfg *setting.Cfg) checks.Check {
|
|
return &check{
|
|
cfg: cfg,
|
|
isCloudInstance: cfg.StackID != "",
|
|
}
|
|
}
|
|
|
|
func (c *check) ID() string {
|
|
return "instance"
|
|
}
|
|
|
|
func (c *check) Name() string {
|
|
return "instance attribute"
|
|
}
|
|
|
|
func (c *check) Items(ctx context.Context) ([]any, error) {
|
|
if c.isCloudInstance {
|
|
return []any{
|
|
pinnedVersion, // pinned version check
|
|
}, nil
|
|
}
|
|
|
|
return []any{
|
|
outOfSupportVersion, // out of support version check
|
|
}, nil
|
|
}
|
|
|
|
func (c *check) Item(ctx context.Context, id string) (any, error) {
|
|
return id, nil
|
|
}
|
|
|
|
func (c *check) Init(ctx context.Context) error {
|
|
return nil
|
|
}
|
|
|
|
func (c *check) Steps() []checks.Step {
|
|
// If running in cloud, we need to check if the version is pinned
|
|
if c.isCloudInstance {
|
|
return []checks.Step{
|
|
&pinnedVersionStep{
|
|
BuildBranch: c.cfg.BuildBranch,
|
|
},
|
|
}
|
|
}
|
|
|
|
// If running in self-managed, we need to check if the version is out of support
|
|
return []checks.Step{
|
|
&outOfSupportVersionStep{
|
|
GrafanaVersion: c.cfg.BuildVersion,
|
|
BuildDate: time.Unix(c.cfg.BuildStamp, 0).UTC(),
|
|
ghClient: github.NewClient(nil).Repositories,
|
|
},
|
|
}
|
|
}
|