grafana/pkg/services/quota/quota.go

31 lines
1.5 KiB
Go
Raw Normal View History

2018-03-07 16:19:35 -06:00
package quota
import (
"context"
contextmodel "github.com/grafana/grafana/pkg/services/contexthandler/model"
2018-03-07 16:19:35 -06:00
)
type Service interface {
// GetQuotasByScope returns the quota for the specific scope (global, organization, user)
// If the scope is organization, the ID is expected to be the organisation ID.
// If the scope is user, the id is expected to be the user ID.
GetQuotasByScope(ctx context.Context, scope Scope, ID int64) ([]QuotaDTO, error)
// Update overrides the quota for a specific scope (global, organization, user).
// If the cmd.OrgID is set, then the organization quota are updated.
// If the cmd.UseID is set, then the user quota are updated.
Update(ctx context.Context, cmd *UpdateQuotaCmd) error
// QuotaReached is called by the quota middleware for applying quota enforcement to API handlers
QuotaReached(c *contextmodel.ReqContext, targetSrv TargetSrv) (bool, error)
// CheckQuotaReached checks if the quota limitations have been reached for a specific service
CheckQuotaReached(ctx context.Context, targetSrv TargetSrv, scopeParams *ScopeParameters) (bool, error)
// DeleteQuotaForUser deletes custom quota limitations for the user
DeleteQuotaForUser(ctx context.Context, userID int64) error
// DeleteByOrg(ctx context.Context, orgID int64) error
// RegisterQuotaReporter registers a service UsageReporterFunc, targets and their default limits
RegisterQuotaReporter(e *NewUsageReporter) error
}
type UsageReporterFunc func(ctx context.Context, scopeParams *ScopeParameters) (*Map, error)