From 889dd157727ec3c81ebf9dc25f312647009ab787 Mon Sep 17 00:00:00 2001 From: David Wertenteil Date: Thu, 30 Jun 2022 19:33:43 +0300 Subject: [PATCH 1/2] handke invalide files --- core/cautils/fileutils.go | 32 ++++++++++++------- core/cautils/fileutils_test.go | 4 +-- core/pkg/hostsensorutils/hostsensordeploy.go | 2 +- core/pkg/resourcehandler/filesloader.go | 16 +++++----- core/pkg/resourcehandler/urlloader.go | 2 +- .../printer/v2/prettyprinter.go | 12 ++++++- .../printer/v2/resourcetable.go | 2 +- .../reporter/v2/reporteventreceiver.go | 3 +- go.mod | 6 ++-- go.sum | 14 ++++---- httphandler/go.mod | 6 ++-- httphandler/go.sum | 14 ++++---- 12 files changed, 66 insertions(+), 47 deletions(-) diff --git a/core/cautils/fileutils.go b/core/cautils/fileutils.go index a782d040..64a292c6 100644 --- a/core/cautils/fileutils.go +++ b/core/cautils/fileutils.go @@ -11,6 +11,7 @@ import ( "github.com/armosec/k8s-interface/workloadinterface" "github.com/armosec/kubescape/v2/core/cautils/logger" + "github.com/armosec/kubescape/v2/core/cautils/logger/helpers" "github.com/armosec/opa-utils/objectsenvelopes" "github.com/armosec/opa-utils/objectsenvelopes/localworkload" "gopkg.in/yaml.v2" @@ -28,7 +29,7 @@ const ( JSON_FILE_FORMAT FileFormat = "json" ) -func LoadResourcesFromFiles(input string) (map[string][]workloadinterface.IMetadata, error) { +func LoadResourcesFromFiles(input, rootPath string) (map[string][]workloadinterface.IMetadata, error) { files, errs := listFiles(input) if len(errs) > 0 { logger.L().Error(fmt.Sprintf("%v", errs)) @@ -37,7 +38,7 @@ func LoadResourcesFromFiles(input string) (map[string][]workloadinterface.IMetad return nil, nil } - workloads, errs := loadFiles(files) + workloads, errs := loadFiles(rootPath, files) if len(errs) > 0 { logger.L().Error(fmt.Sprintf("%v", errs)) } @@ -45,7 +46,7 @@ func LoadResourcesFromFiles(input string) (map[string][]workloadinterface.IMetad return workloads, nil } -func loadFiles(filePaths []string) (map[string][]workloadinterface.IMetadata, []error) { +func loadFiles(rootPath string, filePaths []string) (map[string][]workloadinterface.IMetadata, []error) { workloads := make(map[string][]workloadinterface.IMetadata, 0) errs := []error{} for i := range filePaths { @@ -57,9 +58,12 @@ func loadFiles(filePaths []string) (map[string][]workloadinterface.IMetadata, [] if len(f) == 0 { continue // empty file } + w, e := ReadFile(f, GetFileFormat(filePaths[i])) - errs = append(errs, e...) - if w != nil { + if e != nil { + logger.L().Debug("failed to read file", helpers.String("file", filePaths[i]), helpers.Error(e)) + } + if len(w) != 0 { path := filePaths[i] if _, ok := workloads[path]; !ok { workloads[path] = []workloadinterface.IMetadata{} @@ -67,7 +71,11 @@ func loadFiles(filePaths []string) (map[string][]workloadinterface.IMetadata, [] wSlice := workloads[path] for j := range w { lw := localworkload.NewLocalWorkload(w[j].GetObject()) - lw.SetPath(path) + if relPath, err := filepath.Rel(rootPath, path); err == nil { + lw.SetPath(relPath) + } else { + lw.SetPath(path) + } wSlice = append(wSlice, lw) } workloads[path] = wSlice @@ -79,7 +87,7 @@ func loadFiles(filePaths []string) (map[string][]workloadinterface.IMetadata, [] func loadFile(filePath string) ([]byte, error) { return os.ReadFile(filePath) } -func ReadFile(fileContent []byte, fileFormat FileFormat) ([]workloadinterface.IMetadata, []error) { +func ReadFile(fileContent []byte, fileFormat FileFormat) ([]workloadinterface.IMetadata, error) { switch fileFormat { case YAML_FILE_FORMAT: @@ -127,8 +135,8 @@ func listFiles(pattern string) ([]string, []error) { return files, errs } -func readYamlFile(yamlFile []byte) ([]workloadinterface.IMetadata, []error) { - errs := []error{} +func readYamlFile(yamlFile []byte) ([]workloadinterface.IMetadata, error) { + defer recover() r := bytes.NewReader(yamlFile) dec := yaml.NewDecoder(r) @@ -151,14 +159,14 @@ func readYamlFile(yamlFile []byte) ([]workloadinterface.IMetadata, []error) { } } - return yamlObjs, errs + return yamlObjs, nil } -func readJsonFile(jsonFile []byte) ([]workloadinterface.IMetadata, []error) { +func readJsonFile(jsonFile []byte) ([]workloadinterface.IMetadata, error) { workloads := []workloadinterface.IMetadata{} var jsonObj interface{} if err := json.Unmarshal(jsonFile, &jsonObj); err != nil { - return workloads, []error{err} + return workloads, err } convertJsonToWorkload(jsonObj, &workloads) diff --git a/core/cautils/fileutils_test.go b/core/cautils/fileutils_test.go index ab07b129..c08ab741 100644 --- a/core/cautils/fileutils_test.go +++ b/core/cautils/fileutils_test.go @@ -24,7 +24,7 @@ func TestListFiles(t *testing.T) { } func TestLoadResourcesFromFiles(t *testing.T) { - workloads, err := LoadResourcesFromFiles(onlineBoutiquePath()) + workloads, err := LoadResourcesFromFiles(onlineBoutiquePath(), "") assert.NoError(t, err) assert.Equal(t, 12, len(workloads)) @@ -39,7 +39,7 @@ func TestLoadResourcesFromFiles(t *testing.T) { } func TestLoadFiles(t *testing.T) { files, _ := listFiles(onlineBoutiquePath()) - _, err := loadFiles(files) + _, err := loadFiles("", files) assert.Equal(t, 0, len(err)) } diff --git a/core/pkg/hostsensorutils/hostsensordeploy.go b/core/pkg/hostsensorutils/hostsensordeploy.go index 4fd4e0c1..0fef8879 100644 --- a/core/pkg/hostsensorutils/hostsensordeploy.go +++ b/core/pkg/hostsensorutils/hostsensordeploy.go @@ -89,7 +89,7 @@ func (hsh *HostSensorHandler) Init() error { func (hsh *HostSensorHandler) applyYAML() error { workloads, err := cautils.ReadFile([]byte(hostSensorYAML), cautils.YAML_FILE_FORMAT) - if len(err) != 0 { + if err != nil { return fmt.Errorf("failed to read YAML files, reason: %v", err) } diff --git a/core/pkg/resourcehandler/filesloader.go b/core/pkg/resourcehandler/filesloader.go index f55e8d85..3bf04550 100644 --- a/core/pkg/resourcehandler/filesloader.go +++ b/core/pkg/resourcehandler/filesloader.go @@ -61,14 +61,6 @@ func (fileHandler *FileResourceHandler) GetResources(sessionObj *cautils.OPASess path = filepath.Join(cloneDir, gitURL.GetPath()) } - // load resource from local file system - logger.L().Info("Accessing local objects") - - sourceToWorkloads, err := cautils.LoadResourcesFromFiles(path) - if err != nil { - return nil, allResources, nil, err - } - // Get repo root repoRoot := "" giRepo, err := cautils.NewLocalGitRepository(path) @@ -76,6 +68,14 @@ func (fileHandler *FileResourceHandler) GetResources(sessionObj *cautils.OPASess repoRoot, _ = giRepo.GetRootDir() } + // load resource from local file system + logger.L().Info("Accessing local objects") + + sourceToWorkloads, err := cautils.LoadResourcesFromFiles(path, repoRoot) + if err != nil { + return nil, allResources, nil, err + } + for source, ws := range sourceToWorkloads { workloads = append(workloads, ws...) diff --git a/core/pkg/resourcehandler/urlloader.go b/core/pkg/resourcehandler/urlloader.go index 80aa2923..7abcf31d 100644 --- a/core/pkg/resourcehandler/urlloader.go +++ b/core/pkg/resourcehandler/urlloader.go @@ -33,7 +33,7 @@ func loadResourcesFromUrl(inputPatterns []string) (map[string][]workloadinterfac for i, j := range files { w, e := cautils.ReadFile(j, cautils.GetFileFormat(i)) - if len(e) != 0 || len(w) == 0 { + if e != nil || len(w) == 0 { continue } if _, ok := workloads[i]; !ok { diff --git a/core/pkg/resultshandling/printer/v2/prettyprinter.go b/core/pkg/resultshandling/printer/v2/prettyprinter.go index cde8be63..9ec66849 100644 --- a/core/pkg/resultshandling/printer/v2/prettyprinter.go +++ b/core/pkg/resultshandling/printer/v2/prettyprinter.go @@ -188,6 +188,10 @@ func generateFooter(summaryDetails *reportsummary.SummaryDetails) []string { } func (prettyPrinter *PrettyPrinter) printSummaryTable(summaryDetails *reportsummary.SummaryDetails, sortedControlNames [][]string) { + if summaryDetails.NumberOfControls().All() == 0 { + fmt.Fprintf(prettyPrinter.writer, "\nKubescape did not scan any of the resources, make sure you are scanning valid kubernetes manifests (Deployments, Pods, etc.)\n") + return + } cautils.InfoTextDisplay(prettyPrinter.writer, "\n"+controlCountersForSummary(summaryDetails.NumberOfControls())+"\n\n") summaryTable := tablewriter.NewWriter(prettyPrinter.writer) @@ -196,10 +200,16 @@ func (prettyPrinter *PrettyPrinter) printSummaryTable(summaryDetails *reportsumm summaryTable.SetHeaderLine(true) summaryTable.SetColumnAlignment(getColumnsAlignments()) + printAll := prettyPrinter.verboseMode + if summaryDetails.NumberOfResources().Failed() == 0 { + // if there are no failed controls, print the resource table and detailed information + printAll = true + } + infoToPrintInfo := mapInfoToPrintInfo(summaryDetails.Controls) for i := len(sortedControlNames) - 1; i >= 0; i-- { for _, c := range sortedControlNames[i] { - row := generateRow(summaryDetails.Controls.GetControl(reportsummary.EControlCriteriaName, c), infoToPrintInfo, prettyPrinter.verboseMode) + row := generateRow(summaryDetails.Controls.GetControl(reportsummary.EControlCriteriaName, c), infoToPrintInfo, printAll) if len(row) > 0 { summaryTable.Append(row) } diff --git a/core/pkg/resultshandling/printer/v2/resourcetable.go b/core/pkg/resultshandling/printer/v2/resourcetable.go index 8af56218..0805f03f 100644 --- a/core/pkg/resultshandling/printer/v2/resourcetable.go +++ b/core/pkg/resultshandling/printer/v2/resourcetable.go @@ -29,7 +29,7 @@ func (prettyPrinter *PrettyPrinter) resourceTable(opaSessionObj *cautils.OPASess if !ok { continue } - fmt.Fprintf(prettyPrinter.writer, fmt.Sprintf("\n%s\n\n", getSeparator("#"))) + fmt.Fprintf(prettyPrinter.writer, "\n", getSeparator("#"), "\n") if source, ok := opaSessionObj.ResourceSource[resourceID]; ok { fmt.Fprintf(prettyPrinter.writer, "Source: %s\n", source.RelativePath) diff --git a/core/pkg/resultshandling/reporter/v2/reporteventreceiver.go b/core/pkg/resultshandling/reporter/v2/reporteventreceiver.go index e4f1ea7c..8e1d451b 100644 --- a/core/pkg/resultshandling/reporter/v2/reporteventreceiver.go +++ b/core/pkg/resultshandling/reporter/v2/reporteventreceiver.go @@ -7,6 +7,7 @@ import ( "net/url" "os" + "github.com/armosec/armoapi-go/apis" "github.com/armosec/k8s-interface/workloadinterface" "github.com/armosec/kubescape/v2/core/cautils" "github.com/armosec/kubescape/v2/core/cautils/getter" @@ -188,7 +189,7 @@ func (report *ReportEventReceiver) setResources(reportObj *reporthandlingv2.Post return nil } func (report *ReportEventReceiver) sendReport(host string, postureReport *reporthandlingv2.PostureReport, counter int, isLastReport bool) error { - postureReport.PaginationInfo = reporthandlingv2.PaginationMarks{ + postureReport.PaginationInfo = apis.PaginationMarks{ ReportNumber: counter, IsLastReport: isLastReport, } diff --git a/go.mod b/go.mod index 449674fc..2bbc51a5 100644 --- a/go.mod +++ b/go.mod @@ -3,12 +3,12 @@ module github.com/armosec/kubescape/v2 go 1.18 require ( - github.com/armosec/armoapi-go v0.0.95 + github.com/armosec/armoapi-go v0.0.97 github.com/armosec/go-git-url v0.0.13 github.com/armosec/k8s-interface v0.0.78 - github.com/armosec/opa-utils v0.0.152 + github.com/armosec/opa-utils v0.0.159 github.com/armosec/rbac-utils v0.0.14 - github.com/armosec/utils-go v0.0.5 + github.com/armosec/utils-go v0.0.7 github.com/armosec/utils-k8s-go v0.0.7 github.com/briandowns/spinner v1.18.1 github.com/enescakir/emoji v1.0.0 diff --git a/go.sum b/go.sum index 40d1c380..ede08f18 100644 --- a/go.sum +++ b/go.sum @@ -178,18 +178,18 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/armosec/armoapi-go v0.0.95 h1:SCtsGbYLLkQtfJQ5MQkFJ43LBPjWTzT5WJjYi/vDY3E= -github.com/armosec/armoapi-go v0.0.95/go.mod h1:vpKd2UroTmzXKE1dSNQ6y2zRF13auJEmy9X2XBoFZYc= +github.com/armosec/armoapi-go v0.0.97 h1:uGcwCRpCr8cuC4Ck2aVLFH/ZJGbvSHkD9oXnZfTm+BE= +github.com/armosec/armoapi-go v0.0.97/go.mod h1:v7rUl9eo5qL3kHxiP8tFCyRYERUGPgm2rwTIqkVOouw= github.com/armosec/go-git-url v0.0.13 h1:kwzHBL7oFqf2UsR0h4Sx+HMYqO9xHHuBFXGIyuMqHAg= github.com/armosec/go-git-url v0.0.13/go.mod h1:GzfssG3IW9KiURSpK7c/bySBRTlghpObQ7NQ1O4hcMI= github.com/armosec/k8s-interface v0.0.78 h1:zqIzbFQqSxVMjcDsB4+lgGNgkHVqDZ369/WTGGdLKCE= github.com/armosec/k8s-interface v0.0.78/go.mod h1:8NX4xWXh8mwW7QyZdZea1czNdM2azCK9BbUNmiZYXW0= -github.com/armosec/opa-utils v0.0.152 h1:BdWXs0mZLbqQRGzFZrQK7UxTxU35/STYpKIOwstlUTg= -github.com/armosec/opa-utils v0.0.152/go.mod h1:wvMiobwix9aeyDXh3hRt/pOjlgEr9cu4pGNCLljZQp0= +github.com/armosec/opa-utils v0.0.159 h1:GREyXsM8v1tdIY6FDYjM7roXozt191JTjwpfrjkDJIU= +github.com/armosec/opa-utils v0.0.159/go.mod h1:ce7GrjUmp4A2bkw6ItJxnE1GeDeVQxwb3HiwKBbEZTA= github.com/armosec/rbac-utils v0.0.14 h1:CKYKcgqJEXWF2Hen/B1pVGtS3nDAG1wp9dDv6oNtq90= github.com/armosec/rbac-utils v0.0.14/go.mod h1:Ex/IdGWhGv9HZq6Hs8N/ApzCKSIvpNe/ETqDfnuyah0= -github.com/armosec/utils-go v0.0.5 h1:+pfZirWrOvfqvVYlL7OG1wMQD4T4YMwC78zzosB+mlQ= -github.com/armosec/utils-go v0.0.5/go.mod h1:itWmRLzRdsnwjpEOomL0mBWGnVNNIxSjDAdyc+b0iUo= +github.com/armosec/utils-go v0.0.7 h1:YGyIzfo7JKocx0SVrKEpQLSKLNLgm+JOEeH0XkO23yQ= +github.com/armosec/utils-go v0.0.7/go.mod h1:F/K1mI/qcj7fNuJl7xktoCeHM83azOF0Zq6eC2WuPyU= github.com/armosec/utils-k8s-go v0.0.7 h1:g68GQ9Vm5LgVp/czcu2ZV1igm2azYLf9vNapyoXBfYI= github.com/armosec/utils-k8s-go v0.0.7/go.mod h1:YFdWi3rEQQLbN6mZO21TSdoda8kGQYRV4rs5CRp8Kjs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -1990,8 +1990,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/httphandler/go.mod b/httphandler/go.mod index 56e57d0f..221bd40a 100644 --- a/httphandler/go.mod +++ b/httphandler/go.mod @@ -6,8 +6,8 @@ replace github.com/armosec/kubescape/v2 => ../ require ( github.com/armosec/kubescape/v2 v2.0.0-00010101000000-000000000000 - github.com/armosec/opa-utils v0.0.152 - github.com/armosec/utils-go v0.0.5 + github.com/armosec/opa-utils v0.0.159 + github.com/armosec/utils-go v0.0.7 github.com/google/uuid v1.3.0 github.com/gorilla/mux v1.8.0 github.com/gorilla/schema v1.2.0 @@ -34,7 +34,7 @@ require ( github.com/ProtonMail/go-crypto v0.0.0-20220517143526-88bb52951d5b // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/agnivade/levenshtein v1.1.1 // indirect - github.com/armosec/armoapi-go v0.0.95 // indirect + github.com/armosec/armoapi-go v0.0.97 // indirect github.com/armosec/go-git-url v0.0.13 // indirect github.com/armosec/k8s-interface v0.0.78 // indirect github.com/armosec/rbac-utils v0.0.14 // indirect diff --git a/httphandler/go.sum b/httphandler/go.sum index 804ee4fb..42bf8492 100644 --- a/httphandler/go.sum +++ b/httphandler/go.sum @@ -178,18 +178,18 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/armosec/armoapi-go v0.0.95 h1:SCtsGbYLLkQtfJQ5MQkFJ43LBPjWTzT5WJjYi/vDY3E= -github.com/armosec/armoapi-go v0.0.95/go.mod h1:vpKd2UroTmzXKE1dSNQ6y2zRF13auJEmy9X2XBoFZYc= +github.com/armosec/armoapi-go v0.0.97 h1:uGcwCRpCr8cuC4Ck2aVLFH/ZJGbvSHkD9oXnZfTm+BE= +github.com/armosec/armoapi-go v0.0.97/go.mod h1:v7rUl9eo5qL3kHxiP8tFCyRYERUGPgm2rwTIqkVOouw= github.com/armosec/go-git-url v0.0.13 h1:kwzHBL7oFqf2UsR0h4Sx+HMYqO9xHHuBFXGIyuMqHAg= github.com/armosec/go-git-url v0.0.13/go.mod h1:GzfssG3IW9KiURSpK7c/bySBRTlghpObQ7NQ1O4hcMI= github.com/armosec/k8s-interface v0.0.78 h1:zqIzbFQqSxVMjcDsB4+lgGNgkHVqDZ369/WTGGdLKCE= github.com/armosec/k8s-interface v0.0.78/go.mod h1:8NX4xWXh8mwW7QyZdZea1czNdM2azCK9BbUNmiZYXW0= -github.com/armosec/opa-utils v0.0.152 h1:BdWXs0mZLbqQRGzFZrQK7UxTxU35/STYpKIOwstlUTg= -github.com/armosec/opa-utils v0.0.152/go.mod h1:wvMiobwix9aeyDXh3hRt/pOjlgEr9cu4pGNCLljZQp0= +github.com/armosec/opa-utils v0.0.159 h1:GREyXsM8v1tdIY6FDYjM7roXozt191JTjwpfrjkDJIU= +github.com/armosec/opa-utils v0.0.159/go.mod h1:ce7GrjUmp4A2bkw6ItJxnE1GeDeVQxwb3HiwKBbEZTA= github.com/armosec/rbac-utils v0.0.14 h1:CKYKcgqJEXWF2Hen/B1pVGtS3nDAG1wp9dDv6oNtq90= github.com/armosec/rbac-utils v0.0.14/go.mod h1:Ex/IdGWhGv9HZq6Hs8N/ApzCKSIvpNe/ETqDfnuyah0= -github.com/armosec/utils-go v0.0.5 h1:+pfZirWrOvfqvVYlL7OG1wMQD4T4YMwC78zzosB+mlQ= -github.com/armosec/utils-go v0.0.5/go.mod h1:itWmRLzRdsnwjpEOomL0mBWGnVNNIxSjDAdyc+b0iUo= +github.com/armosec/utils-go v0.0.7 h1:YGyIzfo7JKocx0SVrKEpQLSKLNLgm+JOEeH0XkO23yQ= +github.com/armosec/utils-go v0.0.7/go.mod h1:F/K1mI/qcj7fNuJl7xktoCeHM83azOF0Zq6eC2WuPyU= github.com/armosec/utils-k8s-go v0.0.7 h1:g68GQ9Vm5LgVp/czcu2ZV1igm2azYLf9vNapyoXBfYI= github.com/armosec/utils-k8s-go v0.0.7/go.mod h1:YFdWi3rEQQLbN6mZO21TSdoda8kGQYRV4rs5CRp8Kjs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= @@ -1991,8 +1991,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo= grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 898b847211281aaee48178807bbde8efc8b4668b Mon Sep 17 00:00:00 2001 From: David Wertenteil Date: Thu, 30 Jun 2022 19:41:29 +0300 Subject: [PATCH 2/2] fixed printer --- core/pkg/resultshandling/printer/v2/htmlprinter.go | 4 ++-- core/pkg/resultshandling/printer/v2/junit.go | 4 ++-- core/pkg/resultshandling/printer/v2/resourcetable.go | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/pkg/resultshandling/printer/v2/htmlprinter.go b/core/pkg/resultshandling/printer/v2/htmlprinter.go index c93d0238..e9ac09f7 100644 --- a/core/pkg/resultshandling/printer/v2/htmlprinter.go +++ b/core/pkg/resultshandling/printer/v2/htmlprinter.go @@ -102,7 +102,7 @@ func (htmlPrinter *HtmlPrinter) ActionPrint(opaSessionObj *cautils.OPASessionObj template.New("htmlReport").Funcs(tplFuncMap).Parse(reportTemplate), ) - resourceTableView := bulidResourceTableView(opaSessionObj) + resourceTableView := buildResourceTableView(opaSessionObj) reportingCtx := HTMLReportingCtx{opaSessionObj, resourceTableView} err := tpl.Execute(htmlPrinter.writer, reportingCtx) if err != nil { @@ -114,7 +114,7 @@ func (htmlPrinter *HtmlPrinter) Score(score float32) { return } -func bulidResourceTableView(opaSessionObj *cautils.OPASessionObj) ResourceTableView { +func buildResourceTableView(opaSessionObj *cautils.OPASessionObj) ResourceTableView { resourceTableView := make(ResourceTableView, 0) for resourceID, result := range opaSessionObj.ResourcesResult { if result.GetStatus(nil).IsFailed() { diff --git a/core/pkg/resultshandling/printer/v2/junit.go b/core/pkg/resultshandling/printer/v2/junit.go index d072c3e4..b04a5483 100644 --- a/core/pkg/resultshandling/printer/v2/junit.go +++ b/core/pkg/resultshandling/printer/v2/junit.go @@ -49,7 +49,7 @@ type JUnitTestSuite struct { XMLName xml.Name `xml:"testsuite"` Name string `xml:"name,attr"` // Full (class) name of the test for non-aggregated testsuite documents. Class name without the package for aggregated testsuites documents. Required Disabled int `xml:"disabled,attr"` // The total number of disabled tests in the suite. optional. not supported by maven surefire. - Errors int `xml:"errors,attr"` // The total number of tests in the suite that errored + Errors int `xml:"errors,attr"` // The total number of tests in the suite that errors Failures int `xml:"failures,attr"` // The total number of tests in the suite that failed Hostname string `xml:"hostname,attr"` // Host on which the tests were executed ? cluster name ? ID int `xml:"id,attr"` // Starts at 0 for the first testsuite and is incremented by 1 for each following testsuite @@ -181,7 +181,7 @@ func testsCases(results *cautils.OPASessionObj, controls reportsummary.IControls testCase.Failure = &testCaseFailure } else if control.GetStatus().IsSkipped() { testCase.SkipMessage = &JUnitSkipMessage{ - Message: "", // TODO - fill after statusInfo is supportred + Message: "", // TODO - fill after statusInfo is supported } } diff --git a/core/pkg/resultshandling/printer/v2/resourcetable.go b/core/pkg/resultshandling/printer/v2/resourcetable.go index 0805f03f..f39657a8 100644 --- a/core/pkg/resultshandling/printer/v2/resourcetable.go +++ b/core/pkg/resultshandling/printer/v2/resourcetable.go @@ -29,7 +29,7 @@ func (prettyPrinter *PrettyPrinter) resourceTable(opaSessionObj *cautils.OPASess if !ok { continue } - fmt.Fprintf(prettyPrinter.writer, "\n", getSeparator("#"), "\n") + fmt.Fprintf(prettyPrinter.writer, "\n%s\n", getSeparator("#")) if source, ok := opaSessionObj.ResourceSource[resourceID]; ok { fmt.Fprintf(prettyPrinter.writer, "Source: %s\n", source.RelativePath)