1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-06 16:06:56 +00:00
kyverno/cmd/cli/kubectl-kyverno/commands/apply/table.go
Charles-Edouard Brétéché 0b33ae2b06
refactor: cli packages structure (#8257)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2023-09-05 08:55:01 +00:00

54 lines
2 KiB
Go

package apply
import (
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/output/color"
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/output/table"
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/policy/annotations"
engineapi "github.com/kyverno/kyverno/pkg/engine/api"
)
func printTable(compact, auditWarn bool, engineResponses ...engineapi.EngineResponse) {
var resultsTable table.Table
id := 1
for _, engineResponse := range engineResponses {
policy := engineResponse.Policy()
policyName := policy.GetName()
policyNamespace := policy.GetNamespace()
scored := annotations.Scored(policy.GetAnnotations())
resourceKind := engineResponse.Resource.GetKind()
resourceNamespace := engineResponse.Resource.GetNamespace()
resourceName := engineResponse.Resource.GetName()
for _, ruleResponse := range engineResponse.PolicyResponse.Rules {
var row table.Row
row.ID = id
id++
row.Policy = color.Policy(policyNamespace, policyName)
if policy.GetType() == engineapi.KyvernoPolicyType {
row.Rule = color.Rule(ruleResponse.Name())
}
row.Resource = color.Resource(resourceKind, resourceNamespace, resourceName)
if ruleResponse.Status() == engineapi.RuleStatusPass {
row.Result = color.ResultPass()
} else if ruleResponse.Status() == engineapi.RuleStatusFail {
if !scored {
row.Result = color.ResultWarn()
} else if auditWarn && engineResponse.GetValidationFailureAction().Audit() {
row.Result = color.ResultWarn()
} else {
row.Result = color.ResultFail()
}
} else if ruleResponse.Status() == engineapi.RuleStatusWarn {
row.Result = color.ResultWarn()
} else if ruleResponse.Status() == engineapi.RuleStatusError {
row.Result = color.ResultError()
} else if ruleResponse.Status() == engineapi.RuleStatusSkip {
row.Result = color.ResultSkip()
}
row.Message = ruleResponse.Message()
resultsTable.Add(row)
}
}
printer := table.NewTablePrinter()
printer.Print(resultsTable.Rows(compact))
}