controlexecute

package
v0.10.0-beta.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 23, 2021 License: AGPL-3.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

View Source
const RootResultGroupName = "root_result_group"

Variables

This section is empty.

Functions

func IsValidControlStatus

func IsValidControlStatus(status string) bool

Types

type ControlProgressRenderer

type ControlProgressRenderer struct {
	// contains filtered or unexported fields
}

func NewControlProgressRenderer

func NewControlProgressRenderer(total int) *ControlProgressRenderer

func (*ControlProgressRenderer) Finish

func (p *ControlProgressRenderer) Finish()

func (*ControlProgressRenderer) OnControlComplete added in v0.10.0

func (p *ControlProgressRenderer) OnControlComplete()

func (*ControlProgressRenderer) OnControlError added in v0.10.0

func (p *ControlProgressRenderer) OnControlError()

func (*ControlProgressRenderer) OnControlFinish added in v0.10.0

func (p *ControlProgressRenderer) OnControlFinish()

func (*ControlProgressRenderer) OnControlStart

func (p *ControlProgressRenderer) OnControlStart(control *modconfig.Control)

func (*ControlProgressRenderer) Start

func (p *ControlProgressRenderer) Start()

type ControlRun

type ControlRun struct {

	// the parent control
	Control *modconfig.Control `json:"-"`
	Summary StatusSummary      `json:"-"`

	// execution duration
	Duration time.Duration `json:"-"`

	// used to trace the events within the duration of a control execution
	Lifecycle *utils.LifecycleTimer `json:"-"`

	BackendPid int64 `json:"-"`

	// the result
	ControlId   string                  `json:"control_id"`
	Description string                  `json:"description"`
	Severity    string                  `json:"severity"`
	Tags        map[string]string       `json:"tags"`
	Title       string                  `json:"title"`
	RowMap      map[string][]*ResultRow `json:"-"`
	Rows        []*ResultRow            `json:"results"`
	// contains filtered or unexported fields
}

ControlRun is a struct representing a a control run - will contain one or more result items (i.e. for one or more resources)

func NewControlRun

func NewControlRun(control *modconfig.Control, group *ResultGroup, executionTree *ExecutionTree) *ControlRun

func (*ControlRun) Execute added in v0.10.0

func (r *ControlRun) Execute(ctx context.Context, client db_common.Client)

func (*ControlRun) Finished

func (r *ControlRun) Finished() bool

func (*ControlRun) GetError

func (r *ControlRun) GetError() error

func (*ControlRun) GetRunStatus

func (r *ControlRun) GetRunStatus() ControlRunStatus

func (*ControlRun) SetError

func (r *ControlRun) SetError(err error)

func (*ControlRun) Skip

func (r *ControlRun) Skip()

type ControlRunStatus

type ControlRunStatus uint32
const (
	ControlRunReady ControlRunStatus = 1 << iota
	ControlRunStarted
	ControlRunComplete
	ControlRunError
)

type Dimension

type Dimension struct {
	Key   string `json:"key"`
	Value string `json:"value"`
}

type DimensionColorGenerator

type DimensionColorGenerator struct {
	Map map[string]map[string]uint8
	// contains filtered or unexported fields
}

func NewDimensionColorGenerator

func NewDimensionColorGenerator(startingRow, startingColumn uint8) (*DimensionColorGenerator, error)

NewDimensionColorGenerator creates a new NewDimensionColorGenerator

func (*DimensionColorGenerator) GetDimensionProperties

func (g *DimensionColorGenerator) GetDimensionProperties() []string

type ExecutionTree

type ExecutionTree struct {
	Root      *ResultGroup
	StartTime time.Time
	EndTime   time.Time

	// map of dimension property name to property value to color map
	DimensionColorGenerator *DimensionColorGenerator
	// contains filtered or unexported fields
}

ExecutionTree is a structure representing the control hierarchy

func NewExecutionTree

func NewExecutionTree(ctx context.Context, workspace *workspace.Workspace, client db_common.Client, arg string) (*ExecutionTree, error)

func (*ExecutionTree) AddControl

func (e *ExecutionTree) AddControl(control *modconfig.Control, group *ResultGroup)

AddControl checks whether control should be included in the tree if so, creates a ControlRun, which is added to the parent group

func (*ExecutionTree) Execute

func (e *ExecutionTree) Execute(ctx context.Context, client db_common.Client) int

func (*ExecutionTree) GetAllTags

func (e *ExecutionTree) GetAllTags() []string

func (*ExecutionTree) ShouldIncludeControl

func (e *ExecutionTree) ShouldIncludeControl(controlName string) bool

type GroupSummary

type GroupSummary struct {
	Status   StatusSummary            `json:"status"`
	Severity map[string]StatusSummary `json:"-"`
}

func NewGroupSummary added in v0.9.0

func NewGroupSummary() *GroupSummary

type ResultGroup

type ResultGroup struct {
	GroupId     string                   `json:"group_id" csv:"group_id"`
	Title       string                   `json:"title" csv:"title"`
	Description string                   `json:"description" csv:"description"`
	Tags        map[string]string        `json:"tags"`
	Summary     *GroupSummary            `json:"summary"`
	Groups      []*ResultGroup           `json:"groups"`
	ControlRuns []*ControlRun            `json:"controls"`
	Severity    map[string]StatusSummary `json:"-"`

	// the control tree item associated with this group(i.e. a mod/benchmark)
	GroupItem modconfig.ModTreeItem `json:"-"`
	Parent    *ResultGroup          `json:"-"`
	Duration  time.Duration         `json:"-"`
	// contains filtered or unexported fields
}

ResultGroup is a struct representing a grouping of control results It may correspond to a Benchmark, or some other arbitrary grouping

func NewResultGroup

func NewResultGroup(executionTree *ExecutionTree, treeItem modconfig.ModTreeItem, parent *ResultGroup) *ResultGroup

NewResultGroup creates a result group from a ModTreeItem

func NewRootResultGroup

func NewRootResultGroup(executionTree *ExecutionTree, rootItems ...modconfig.ModTreeItem) *ResultGroup

NewRootResultGroup creates a ResultGroup to act as the root node of a control execution tree

func (*ResultGroup) AddResult

func (r *ResultGroup) AddResult(run *ControlRun)

AddResult adds a result to the list, updates the summary status (this also updates the status of our parent, all the way up the tree)

func (*ResultGroup) ControlRunCount

func (r *ResultGroup) ControlRunCount() int

func (*ResultGroup) Execute

func (r *ResultGroup) Execute(ctx context.Context, client db_common.Client, parallelismLock *semaphore.Weighted)

func (*ResultGroup) GetChildGroupByName

func (r *ResultGroup) GetChildGroupByName(name string) *ResultGroup

GetChildGroupByName finds a nested child ResultGroup with a specific name

func (*ResultGroup) GetControlRunByName

func (r *ResultGroup) GetControlRunByName(name string) *ControlRun

GetControlRunByName finds a child ControlRun with a specific control name

func (*ResultGroup) GetGroupByName

func (r *ResultGroup) GetGroupByName(name string) *ResultGroup

GetGroupByName finds an immediate child ResultGroup with a specific name

func (*ResultGroup) PopulateGroupMap

func (r *ResultGroup) PopulateGroupMap(groupMap map[string]*ResultGroup)

PopulateGroupMap mutates the passed in a map to return all child result groups

type ResultRow

type ResultRow struct {
	Reason     string             `json:"reason" csv:"reason"`
	Resource   string             `json:"resource" csv:"resource"`
	Status     string             `json:"status" csv:"status"`
	Dimensions []Dimension        `json:"dimensions"`
	Control    *modconfig.Control `json:"-" csv:"control_id:FullName,control_title:Title,control_description:Description"`
}

ResultRow is the result of a control execution for a single resource

func NewResultRow

func NewResultRow(control *modconfig.Control, row *queryresult.RowResult, colTypes []*sql.ColumnType) (*ResultRow, error)

func (*ResultRow) AddDimension

func (r *ResultRow) AddDimension(c *sql.ColumnType, val interface{})

AddDimension checks whether a column value is a scalar type, and if so adds it to the Dimensions map

type StatusSummary

type StatusSummary struct {
	Alarm int `json:"alarm"`
	Ok    int `json:"ok"`
	Info  int `json:"info"`
	Skip  int `json:"skip"`
	Error int `json:"error"`
}

StatusSummary is a struct containing the counts of each possible control status

func (*StatusSummary) FailedCount

func (s *StatusSummary) FailedCount() int

func (*StatusSummary) TotalCount

func (s *StatusSummary) TotalCount() int

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL