diff --git a/core/cautils/fileutils.go b/core/cautils/fileutils.go index 7079a4c7..d728346a 100644 --- a/core/cautils/fileutils.go +++ b/core/cautils/fileutils.go @@ -30,8 +30,8 @@ const ( JSON_FILE_FORMAT FileFormat = "json" ) -// LoadResourcesFromHelmCharts scans a given path (recuresively) for helm charts, renders the templates and returns a list of workloads -func LoadResourcesFromHelmCharts(basePath string) map[string][]workloadinterface.IMetadata { +// LoadResourcesFromHelmCharts scans a given path (recuresively) for helm charts, renders the templates and returns a map of workloads and a map of chart names +func LoadResourcesFromHelmCharts(basePath string) (map[string][]workloadinterface.IMetadata, map[string]string) { directories, _ := listDirs(basePath) helmDirectories := make([]string, 0) for _, dir := range directories { @@ -40,7 +40,8 @@ func LoadResourcesFromHelmCharts(basePath string) map[string][]workloadinterface } } - result := map[string][]workloadinterface.IMetadata{} + sourceToWorkloads := map[string][]workloadinterface.IMetadata{} + sourceToChartName := map[string]string{} for _, helmDir := range helmDirectories { chart, err := NewHelmChart(helmDir) if err == nil { @@ -50,12 +51,14 @@ func LoadResourcesFromHelmCharts(basePath string) map[string][]workloadinterface continue } + chartName := chart.GetName() for k, v := range wls { - result[k] = v + sourceToWorkloads[k] = v + sourceToChartName[k] = chartName } } } - return result + return sourceToWorkloads, sourceToChartName } func LoadResourcesFromFiles(input, rootPath string) map[string][]workloadinterface.IMetadata { diff --git a/core/cautils/fileutils_test.go b/core/cautils/fileutils_test.go index 69609187..07647f96 100644 --- a/core/cautils/fileutils_test.go +++ b/core/cautils/fileutils_test.go @@ -44,7 +44,7 @@ func TestLoadResourcesFromFiles(t *testing.T) { } func TestLoadResourcesFromHelmCharts(t *testing.T) { - sourceToWorkloads := LoadResourcesFromHelmCharts(helmChartPath()) + sourceToWorkloads, sourceToChartName := LoadResourcesFromHelmCharts(helmChartPath()) assert.Equal(t, 6, len(sourceToWorkloads)) for file, workloads := range sourceToWorkloads { @@ -52,6 +52,7 @@ func TestLoadResourcesFromHelmCharts(t *testing.T) { w := workloads[0] assert.True(t, localworkload.IsTypeLocalWorkload(w.GetObject()), "Expected localworkload as object type") + assert.Equal(t, "kubescape", sourceToChartName[file]) switch filepath.Base(file) { case "serviceaccount.yaml": diff --git a/core/pkg/resourcehandler/filesloader.go b/core/pkg/resourcehandler/filesloader.go index 3a99883f..187c73b8 100644 --- a/core/pkg/resourcehandler/filesloader.go +++ b/core/pkg/resourcehandler/filesloader.go @@ -116,7 +116,7 @@ func (fileHandler *FileResourceHandler) GetResources(sessionObj *cautils.OPASess } // load resources from helm charts - helmSourceToWorkloads := cautils.LoadResourcesFromHelmCharts(path) + helmSourceToWorkloads, helmSourceToChartName := cautils.LoadResourcesFromHelmCharts(path) for source, ws := range helmSourceToWorkloads { workloads = append(workloads, ws...) @@ -140,9 +140,10 @@ func (fileHandler *FileResourceHandler) GetResources(sessionObj *cautils.OPASess } workloadSource := reporthandling.Source{ - RelativePath: source, - FileType: reporthandling.SourceTypeHelmChart, - LastCommit: lastCommit, + RelativePath: source, + FileType: reporthandling.SourceTypeHelmChart, + HelmChartName: helmSourceToChartName[source], + LastCommit: lastCommit, } for i := range ws { diff --git a/go.mod b/go.mod index 9cd2931c..d73ffa0b 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/armosec/armoapi-go v0.0.98 github.com/armosec/go-git-url v0.0.13 github.com/armosec/k8s-interface v0.0.79 - github.com/armosec/opa-utils v0.0.160 + github.com/armosec/opa-utils v0.0.161 github.com/armosec/rbac-utils v0.0.14 github.com/armosec/utils-go v0.0.7 github.com/armosec/utils-k8s-go v0.0.7 diff --git a/go.sum b/go.sum index 80772cde..564e7664 100644 --- a/go.sum +++ b/go.sum @@ -185,8 +185,8 @@ github.com/armosec/go-git-url v0.0.13 h1:kwzHBL7oFqf2UsR0h4Sx+HMYqO9xHHuBFXGIyuM github.com/armosec/go-git-url v0.0.13/go.mod h1:GzfssG3IW9KiURSpK7c/bySBRTlghpObQ7NQ1O4hcMI= github.com/armosec/k8s-interface v0.0.79 h1:K26itoRg1pCnBk+FR5UHF6sJTOvuJ/vP76I/9Yi/6eU= github.com/armosec/k8s-interface v0.0.79/go.mod h1:JeaT4OTwXp8HhTHPIF3KJuY8H5lDZ+o4FGFy77J49xY= -github.com/armosec/opa-utils v0.0.160 h1:KgYN57Fh4t0+EELE/napAB+ysX1X3kDg28Sh34hxt1Y= -github.com/armosec/opa-utils v0.0.160/go.mod h1:ce7GrjUmp4A2bkw6ItJxnE1GeDeVQxwb3HiwKBbEZTA= +github.com/armosec/opa-utils v0.0.161 h1:95PJNNF6wpI3RemM2RDekSNlq7+qV5MFiqEnzPh5BtI= +github.com/armosec/opa-utils v0.0.161/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.7 h1:YGyIzfo7JKocx0SVrKEpQLSKLNLgm+JOEeH0XkO23yQ= diff --git a/httphandler/go.mod b/httphandler/go.mod index 1fceac10..7b7fb84d 100644 --- a/httphandler/go.mod +++ b/httphandler/go.mod @@ -6,7 +6,7 @@ replace github.com/armosec/kubescape/v2 => ../ require ( github.com/armosec/kubescape/v2 v2.0.0-00010101000000-000000000000 - github.com/armosec/opa-utils v0.0.160 + github.com/armosec/opa-utils v0.0.161 github.com/armosec/utils-go v0.0.7 github.com/dwertent/go-logger v0.0.2 github.com/google/uuid v1.3.0 diff --git a/httphandler/go.sum b/httphandler/go.sum index bf8fcaac..9a3bd5ee 100644 --- a/httphandler/go.sum +++ b/httphandler/go.sum @@ -185,8 +185,8 @@ github.com/armosec/go-git-url v0.0.13 h1:kwzHBL7oFqf2UsR0h4Sx+HMYqO9xHHuBFXGIyuM github.com/armosec/go-git-url v0.0.13/go.mod h1:GzfssG3IW9KiURSpK7c/bySBRTlghpObQ7NQ1O4hcMI= github.com/armosec/k8s-interface v0.0.79 h1:K26itoRg1pCnBk+FR5UHF6sJTOvuJ/vP76I/9Yi/6eU= github.com/armosec/k8s-interface v0.0.79/go.mod h1:JeaT4OTwXp8HhTHPIF3KJuY8H5lDZ+o4FGFy77J49xY= -github.com/armosec/opa-utils v0.0.160 h1:KgYN57Fh4t0+EELE/napAB+ysX1X3kDg28Sh34hxt1Y= -github.com/armosec/opa-utils v0.0.160/go.mod h1:ce7GrjUmp4A2bkw6ItJxnE1GeDeVQxwb3HiwKBbEZTA= +github.com/armosec/opa-utils v0.0.161 h1:95PJNNF6wpI3RemM2RDekSNlq7+qV5MFiqEnzPh5BtI= +github.com/armosec/opa-utils v0.0.161/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.7 h1:YGyIzfo7JKocx0SVrKEpQLSKLNLgm+JOEeH0XkO23yQ=