Documentation
¶
Index ¶
- Constants
- func IsValidControlStatus(status string) bool
- type ControlRun
- func (r *ControlRun) Finished() bool
- func (r *ControlRun) GetControlId() string
- func (r *ControlRun) GetError() error
- func (r *ControlRun) GetRunStatus() controlstatus.ControlRunStatus
- func (r *ControlRun) GetStatusSummary() *controlstatus.StatusSummary
- func (r *ControlRun) MatchTag(key string, value string) bool
- type Dimension
- type DimensionColorGenerator
- type ExecutionTree
- type GroupSummary
- type ResultGroup
- type ResultRow
Constants ¶
const RootResultGroupName = "root_result_group"
Variables ¶
This section is empty.
Functions ¶
func IsValidControlStatus ¶
Types ¶
type ControlRun ¶
type ControlRun struct {
// the control being run
Control *modconfig.Control `json:"-"`
// control summary
Summary *controlstatus.StatusSummary `json:"summary"`
// result rows
Rows []*ResultRow `json:"results"`
// a list of distinct dimension keys from the results of this control
DimensionKeys []string `json:"-"`
// execution duration
Duration time.Duration `json:"-"`
// properties from control
ControlId string `json:"control_id"`
Description string `json:"description"`
Severity string `json:"severity"`
Tags map[string]string `json:"tags"`
Title string `json:"title"`
// parent result group
Group *ResultGroup `json:"-"`
// execution tree
Tree *ExecutionTree `json:"-"`
// used to trace the events within the duration of a control execution
Lifecycle *utils.LifecycleTimer `json:"-"`
RunStatus controlstatus.ControlRunStatus `json:"run_status"`
// save run error as string for JSON export
RunErrorString string `json:"run_error"`
// contains filtered or unexported fields
}
ControlRun is a struct representing the execution of a control run. It 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) Finished ¶
func (r *ControlRun) Finished() bool
func (*ControlRun) GetControlId ¶ added in v0.14.0
func (r *ControlRun) GetControlId() string
GetControlId implements ControlRunStatusProvider
func (*ControlRun) GetError ¶
func (r *ControlRun) GetError() error
func (*ControlRun) GetRunStatus ¶
func (r *ControlRun) GetRunStatus() controlstatus.ControlRunStatus
GetRunStatus implements ControlRunStatusProvider
func (*ControlRun) GetStatusSummary ¶ added in v0.14.0
func (r *ControlRun) GetStatusSummary() *controlstatus.StatusSummary
GetStatusSummary implements ControlRunStatusProvider
type Dimension ¶
Dimension is a struct representing an attribute returned by a control run. An attribute is stored as a dimension if it's not a standard attribute (reason, resource, status).
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 `json:"root"`
// flat list of all control runs
ControlRuns []*ControlRun `json:"-"`
StartTime time.Time `json:"start_time"`
EndTime time.Time `json:"end_time"`
Progress *controlstatus.ControlProgress `json:"progress"`
// map of dimension property name to property value to color map
DimensionColorGenerator *DimensionColorGenerator `json:"-"`
// contains filtered or unexported fields
}
ExecutionTree is a structure representing the control execution hierarchy
func NewExecutionTree ¶
func (*ExecutionTree) AddControl ¶
func (e *ExecutionTree) AddControl(ctx context.Context, 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) GetAllTags ¶
func (e *ExecutionTree) GetAllTags() []string
func (*ExecutionTree) ShouldIncludeControl ¶
func (e *ExecutionTree) ShouldIncludeControl(controlName string) bool
type GroupSummary ¶
type GroupSummary struct {
Status controlstatus.StatusSummary `json:"status"`
Severity map[string]controlstatus.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"`
// the overall summary of the group
Summary *GroupSummary `json:"summary"`
// child result groups
Groups []*ResultGroup `json:"groups"`
// child control runs
ControlRuns []*ControlRun `json:"controls"`
Severity map[string]controlstatus.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:"-"`
// a list of distinct dimension keys from descendant controls
DimensionKeys []string `json:"-"`
// fields used by dashboards
Type *string `json:"type,omitempty"`
Display *string `json:"display,omitempty"`
// 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(ctx context.Context, executionTree *ExecutionTree, treeItem modconfig.ModTreeItem, parent *ResultGroup) *ResultGroup
NewResultGroup creates a result group from a ModTreeItem
func NewRootResultGroup ¶
func NewRootResultGroup(ctx context.Context, executionTree *ExecutionTree, rootItems ...modconfig.ModTreeItem) *ResultGroup
NewRootResultGroup creates a ResultGroup to act as the root node of a control execution tree
func (*ResultGroup) AllTagKeys ¶ added in v0.12.0
func (r *ResultGroup) AllTagKeys() []string
func (*ResultGroup) ControlRunCount ¶
func (r *ResultGroup) ControlRunCount() int
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
type ResultRow ¶
type ResultRow struct {
// reason for the status
Reason string `json:"reason" csv:"reason"`
// resource name
Resource string `json:"resource" csv:"resource"`
// status of the row (ok, info, alarm, error, skip)
Status string `json:"status" csv:"status"`
// dimensions for this row
Dimensions []Dimension `json:"dimensions"`
// parent control run
Run *ControlRun `json:"-"`
// source control
Control *modconfig.Control `json:"-" csv:"control_id:UnqualifiedName,control_title:Title,control_description:Description"`
}
ResultRow is the result of a control execution for a single resource
func NewResultRow ¶
func NewResultRow(run *ControlRun, 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
func (*ResultRow) GetDimensionValue ¶ added in v0.12.0
GetDimensionValue returns the value for a dimension key. Returns an empty string with 'false' if not found