2021-11-11 15:10:24 +00:00
|
|
|
package manager
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
|
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/api/routing"
|
|
|
|
|
"github.com/grafana/grafana/pkg/infra/log"
|
2022-03-16 15:54:34 +00:00
|
|
|
"github.com/grafana/grafana/pkg/infra/usagestats"
|
2021-11-11 15:10:24 +00:00
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts"
|
|
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts/api"
|
|
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts/database"
|
2022-02-07 13:51:54 +00:00
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
2021-11-11 15:10:24 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type ServiceAccountsService struct {
|
2022-06-27 10:22:49 +02:00
|
|
|
store serviceaccounts.Store
|
|
|
|
|
log log.Logger
|
2021-11-11 15:10:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ProvideServiceAccountsService(
|
2022-02-07 13:51:54 +00:00
|
|
|
cfg *setting.Cfg,
|
2021-11-11 15:10:24 +00:00
|
|
|
ac accesscontrol.AccessControl,
|
|
|
|
|
routeRegister routing.RouteRegister,
|
2022-03-16 15:54:34 +00:00
|
|
|
usageStats usagestats.Service,
|
2022-07-08 10:53:18 +01:00
|
|
|
serviceAccountsStore serviceaccounts.Store,
|
|
|
|
|
permissionService accesscontrol.ServiceAccountPermissionsService,
|
2021-11-11 15:10:24 +00:00
|
|
|
) (*ServiceAccountsService, error) {
|
2022-07-07 14:03:16 +00:00
|
|
|
database.InitMetrics()
|
2021-11-11 15:10:24 +00:00
|
|
|
s := &ServiceAccountsService{
|
2022-07-08 10:53:18 +01:00
|
|
|
store: serviceAccountsStore,
|
2022-06-27 10:22:49 +02:00
|
|
|
log: log.New("serviceaccounts"),
|
2021-11-11 15:10:24 +00:00
|
|
|
}
|
2022-01-04 15:37:40 +01:00
|
|
|
|
2022-06-27 10:22:49 +02:00
|
|
|
if err := RegisterRoles(ac); err != nil {
|
|
|
|
|
s.log.Error("Failed to register roles", "error", err)
|
2021-11-11 15:10:24 +00:00
|
|
|
}
|
2022-01-04 15:37:40 +01:00
|
|
|
|
2022-06-27 10:22:49 +02:00
|
|
|
usageStats.RegisterMetricsFunc(s.store.GetUsageMetrics)
|
|
|
|
|
|
2022-07-08 10:53:18 +01:00
|
|
|
serviceaccountsAPI := api.NewServiceAccountsAPI(cfg, s, ac, routeRegister, s.store, permissionService)
|
2022-06-27 10:22:49 +02:00
|
|
|
serviceaccountsAPI.RegisterAPIEndpoints()
|
2021-12-16 14:28:16 +01:00
|
|
|
|
2021-11-11 15:10:24 +00:00
|
|
|
return s, nil
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-07 14:03:16 +00:00
|
|
|
func (sa *ServiceAccountsService) Run(ctx context.Context) error {
|
|
|
|
|
sa.log.Debug("Started Service Account Metrics collection service")
|
|
|
|
|
return sa.store.RunMetricsCollection(ctx)
|
|
|
|
|
}
|
|
|
|
|
|
2022-07-07 17:32:56 +01:00
|
|
|
func (sa *ServiceAccountsService) CreateServiceAccount(ctx context.Context, orgID int64, saForm *serviceaccounts.CreateServiceAccountForm) (*serviceaccounts.ServiceAccountDTO, error) {
|
|
|
|
|
return sa.store.CreateServiceAccount(ctx, orgID, saForm)
|
2021-12-14 14:39:25 +01:00
|
|
|
}
|
|
|
|
|
|
2021-11-23 23:06:40 +00:00
|
|
|
func (sa *ServiceAccountsService) DeleteServiceAccount(ctx context.Context, orgID, serviceAccountID int64) error {
|
|
|
|
|
return sa.store.DeleteServiceAccount(ctx, orgID, serviceAccountID)
|
2021-11-11 15:10:24 +00:00
|
|
|
}
|
2022-04-12 19:34:04 +02:00
|
|
|
|
|
|
|
|
func (sa *ServiceAccountsService) RetrieveServiceAccountIdByName(ctx context.Context, orgID int64, name string) (int64, error) {
|
|
|
|
|
return sa.store.RetrieveServiceAccountIdByName(ctx, orgID, name)
|
|
|
|
|
}
|