Documentation
¶
Overview ¶
Package interfaces provides necessary interfaces and implementations for implementing engine plugins
Index ¶
- type Action
- type ActionCmd
- type ActionType
- type ActionsParams
- type EvalParamsReadWriter
- type EvalParamsReader
- type EvalStatusParams
- func (e *EvalStatusParams) DecorateLogger(l zerolog.Logger) zerolog.Logger
- func (e *EvalStatusParams) GetActionsErr() evalerrors.ActionsError
- func (e *EvalStatusParams) GetActionsOnOff() map[ActionType]models.ActionOpt
- func (e *EvalStatusParams) GetEvalErr() error
- func (e *EvalStatusParams) GetEvalStatusFromDb() *db.ListRuleEvaluationsByProfileIdRow
- func (e *EvalStatusParams) GetIngestResult() *Result
- func (e *EvalStatusParams) GetProfile() *models.ProfileAggregate
- func (e *EvalStatusParams) GetRule() *models.RuleInstance
- func (e *EvalStatusParams) SetActionsErr(ctx context.Context, actionErr evalerrors.ActionsError)
- func (e *EvalStatusParams) SetActionsOnOff(actionsOnOff map[ActionType]models.ActionOpt)
- func (e *EvalStatusParams) SetEvalErr(err error)
- func (e *EvalStatusParams) SetIngestResult(res *Result)
- type Evaluator
- type Ingester
- type Result
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Action ¶
type Action interface { Class() ActionType Type() string GetOnOffState(models.ActionOpt) models.ActionOpt Do(ctx context.Context, cmd ActionCmd, setting models.ActionOpt, entity protoreflect.ProtoMessage, params ActionsParams, metadata *json.RawMessage) (json.RawMessage, error) }
Action is the interface for a rule type action
type ActionCmd ¶
type ActionCmd string
ActionCmd is the type that defines what effect an action should have
type ActionType ¶
type ActionType string
ActionType represents the type of action, i.e., remediate, alert, etc.
type ActionsParams ¶
type ActionsParams interface { EvalParamsReader GetActionsOnOff() map[ActionType]models.ActionOpt GetActionsErr() evalerrors.ActionsError GetEvalErr() error GetEvalStatusFromDb() *db.ListRuleEvaluationsByProfileIdRow GetProfile() *models.ProfileAggregate }
ActionsParams is the interface used for processing a rule type action
type EvalParamsReadWriter ¶
type EvalParamsReadWriter interface { EvalParamsReader SetIngestResult(*Result) }
EvalParamsReadWriter is the interface used for a rule type engine, allows setting the ingestion result
type EvalParamsReader ¶
type EvalParamsReader interface { GetRule() *models.RuleInstance GetIngestResult() *Result }
EvalParamsReader is the interface used for a rule type evaluator
type EvalStatusParams ¶
type EvalStatusParams struct { Result *Result Profile *models.ProfileAggregate Rule *models.RuleInstance ProjectID uuid.UUID ReleaseID uuid.UUID PipelineRunID uuid.UUID TaskRunID uuid.UUID BuildID uuid.UUID EntityType db.Entities EntityID uuid.UUID EvalStatusFromDb *db.ListRuleEvaluationsByProfileIdRow ExecutionID uuid.UUID // contains filtered or unexported fields }
EvalStatusParams is a helper struct to pass parameters to createOrUpdateEvalStatus to avoid confusion with the parameters' order. Since at the moment, all our entities are bound to a repo and most profiles are expecting a repo, the RepoID parameter is mandatory. For entities other than artifacts, the ArtifactID should be 0 that is translated to NULL in the database.
func (*EvalStatusParams) DecorateLogger ¶
func (e *EvalStatusParams) DecorateLogger(l zerolog.Logger) zerolog.Logger
DecorateLogger decorates the logger with the necessary fields
func (*EvalStatusParams) GetActionsErr ¶
func (e *EvalStatusParams) GetActionsErr() evalerrors.ActionsError
GetActionsErr returns the actions' error
func (*EvalStatusParams) GetActionsOnOff ¶
func (e *EvalStatusParams) GetActionsOnOff() map[ActionType]models.ActionOpt
GetActionsOnOff returns the actions' on/off state
func (*EvalStatusParams) GetEvalErr ¶
func (e *EvalStatusParams) GetEvalErr() error
GetEvalErr returns the evaluation error
func (*EvalStatusParams) GetEvalStatusFromDb ¶
func (e *EvalStatusParams) GetEvalStatusFromDb() *db.ListRuleEvaluationsByProfileIdRow
GetEvalStatusFromDb returns the evaluation status from the database Returns nil if there is no previous state for this rule/entity
func (*EvalStatusParams) GetIngestResult ¶
func (e *EvalStatusParams) GetIngestResult() *Result
GetIngestResult returns the result of the ingestion, if any
func (*EvalStatusParams) GetProfile ¶
func (e *EvalStatusParams) GetProfile() *models.ProfileAggregate
GetProfile returns the profile
func (*EvalStatusParams) GetRule ¶
func (e *EvalStatusParams) GetRule() *models.RuleInstance
GetRule returns the rule
func (*EvalStatusParams) SetActionsErr ¶
func (e *EvalStatusParams) SetActionsErr(ctx context.Context, actionErr evalerrors.ActionsError)
SetActionsErr sets the actions' error
func (*EvalStatusParams) SetActionsOnOff ¶
func (e *EvalStatusParams) SetActionsOnOff(actionsOnOff map[ActionType]models.ActionOpt)
SetActionsOnOff sets the actions' on/off state
func (*EvalStatusParams) SetEvalErr ¶
func (e *EvalStatusParams) SetEvalErr(err error)
SetEvalErr sets the evaluation error
func (*EvalStatusParams) SetIngestResult ¶
func (e *EvalStatusParams) SetIngestResult(res *Result)
SetIngestResult sets the result of the ingestion for use later on in the actions
type Evaluator ¶
type Evaluator interface {
Eval(ctx context.Context, profile map[string]any, entity protoreflect.ProtoMessage, res *Result) error
}
Evaluator is the interface for a rule type evaluator
type Ingester ¶
type Ingester interface { // Ingest does the actual data ingestion for a rule type Ingest(ctx context.Context, ent protoreflect.ProtoMessage, params map[string]any) (*Result, error) // GetType returns the type of the ingester GetType() string // GetConfig returns the config for the ingester GetConfig() protoreflect.ProtoMessage }
Ingester is the interface for a rule type ingester
type Result ¶
type Result struct { // Object is the object that was ingested. Normally comes from an external // system like an HTTP server. Object any // Fs is the filesystem that was created as a result of the ingestion. This // is normally used by the evaluator to do rule evaluation. The filesystem // may be a git repo, or a memory filesystem. Fs billy.Filesystem // Storer is the git storer that was created as a result of the ingestion. // FIXME: It might be cleaner to either wrap both Fs and Storer in a struct // or pass out the git.Repository structure instead of the storer. Storer storage.Storer // Checkpoint is the checkpoint at which the ingestion was done. This is // used to persist the state of the entity at ingestion time. Checkpoint *checkpoints.CheckpointEnvelopeV1 }
Result is the result of an ingester
func (*Result) GetCheckpoint ¶
func (r *Result) GetCheckpoint() *checkpoints.CheckpointEnvelopeV1
GetCheckpoint returns the checkpoint of the result