mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
API Keys: Add revocation for SATs (#53896)
* add apikey is_revoked field * add token store tests * Apply suggestions from code review * remove unused fields
This commit is contained in:
@@ -2,6 +2,8 @@ package manager
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"github.com/grafana/grafana/pkg/api/routing"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
@@ -13,9 +15,14 @@ import (
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
const (
|
||||
metricsCollectionInterval = time.Minute * 30
|
||||
)
|
||||
|
||||
type ServiceAccountsService struct {
|
||||
store serviceaccounts.Store
|
||||
log log.Logger
|
||||
store serviceaccounts.Store
|
||||
log log.Logger
|
||||
backgroundLog log.Logger
|
||||
}
|
||||
|
||||
func ProvideServiceAccountsService(
|
||||
@@ -28,8 +35,9 @@ func ProvideServiceAccountsService(
|
||||
) (*ServiceAccountsService, error) {
|
||||
database.InitMetrics()
|
||||
s := &ServiceAccountsService{
|
||||
store: serviceAccountsStore,
|
||||
log: log.New("serviceaccounts"),
|
||||
store: serviceAccountsStore,
|
||||
log: log.New("serviceaccounts"),
|
||||
backgroundLog: log.New("serviceaccounts.background"),
|
||||
}
|
||||
|
||||
if err := RegisterRoles(ac); err != nil {
|
||||
@@ -45,8 +53,33 @@ func ProvideServiceAccountsService(
|
||||
}
|
||||
|
||||
func (sa *ServiceAccountsService) Run(ctx context.Context) error {
|
||||
sa.log.Debug("Started Service Account Metrics collection service")
|
||||
return sa.store.RunMetricsCollection(ctx)
|
||||
sa.backgroundLog.Debug("service initialized")
|
||||
|
||||
if _, err := sa.store.GetUsageMetrics(ctx); err != nil {
|
||||
sa.log.Warn("Failed to get usage metrics", "error", err.Error())
|
||||
}
|
||||
|
||||
updateStatsTicker := time.NewTicker(metricsCollectionInterval)
|
||||
defer updateStatsTicker.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
if err := ctx.Err(); err != nil {
|
||||
return fmt.Errorf("context error in service account background service: %w", ctx.Err())
|
||||
}
|
||||
|
||||
sa.backgroundLog.Debug("stopped service account background service")
|
||||
|
||||
return nil
|
||||
case <-updateStatsTicker.C:
|
||||
sa.backgroundLog.Debug("updating usage metrics")
|
||||
|
||||
if _, err := sa.store.GetUsageMetrics(ctx); err != nil {
|
||||
sa.backgroundLog.Warn("Failed to get usage metrics", "error", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (sa *ServiceAccountsService) CreateServiceAccount(ctx context.Context, orgID int64, saForm *serviceaccounts.CreateServiceAccountForm) (*serviceaccounts.ServiceAccountDTO, error) {
|
||||
|
||||
Reference in New Issue
Block a user