Skip to content
This repository was archived by the owner on Sep 24, 2025. It is now read-only.

Commit 04a6c3b

Browse files
authored
feat: 🔧 A round of updates and some small changes (#10)
* feat: 🔧 A round of updates and some small changes * chore: Bump go version * chore: Removing dead code
1 parent 46616d7 commit 04a6c3b

8 files changed

Lines changed: 411 additions & 396 deletions

File tree

.github/workflows/ci.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- name: Set up Go
1616
uses: actions/setup-go@v4
1717
with:
18-
go-version: '1.21'
18+
go-version: '1.22'
1919

2020
- name: Build
2121
run: |

.github/workflows/release.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,4 @@ jobs:
7878
actions: read
7979
uses: slsa-framework/slsa-github-generator/.github/workflows/builder_go_slsa3.yml@v1.9.0
8080
with:
81-
go-version: 1.21
81+
go-version: 1.22

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.21 as build
1+
FROM golang:1.22 as build
22

33
WORKDIR /go/src/app
44
COPY . .

go.mod

Lines changed: 108 additions & 101 deletions
Large diffs are not rendered by default.

go.sum

Lines changed: 284 additions & 260 deletions
Large diffs are not rendered by default.

pkg/controllers/convert.go

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,25 @@
11
package controllers
22

33
import (
4-
"context"
5-
"fmt"
6-
"net/url"
74
"sort"
85
"strings"
96

107
trivyDBTypes "github.com/aquasecurity/trivy-db/pkg/types"
118
ty "github.com/aquasecurity/trivy/pkg/types"
129
"github.com/openclarity/kubeclarity/shared/pkg/scanner"
1310
utilsVul "github.com/openclarity/kubeclarity/shared/pkg/utils/vulnerability"
14-
"sigs.k8s.io/controller-runtime/pkg/log"
1511
)
1612

1713
// convertTrivyReport based on https://github.com/openclarity/kubeclarity/blob/main/shared/pkg/scanner/trivy/scanner.go#L285
18-
func convertTrivyReport(ctx context.Context, report *ty.Report) ([]*scanner.MergedVulnerability, error) {
19-
log := log.FromContext(ctx)
20-
14+
func convertTrivyReport(report *ty.Report) ([]*scanner.MergedVulnerability, error) {
2115
matches := []*scanner.MergedVulnerability{}
2216
for _, result := range report.Results {
2317
for _, vul := range result.Vulnerabilities {
24-
typ, err := getTypeFromPurl(vul.PkgRef)
25-
if err != nil {
26-
log.V(1).Info("unable to convert pkgref", "pkgref", vul.PkgRef, "error", err)
27-
typ = ""
18+
typ := ""
19+
purl := ""
20+
if vul.PkgIdentifier.PURL != nil {
21+
typ = vul.PkgIdentifier.PURL.Type
22+
purl = vul.PkgIdentifier.PURL.String()
2823
}
2924

3025
cvsses := getCVSSesFromVul(vul.CVSS)
@@ -55,7 +50,7 @@ func convertTrivyReport(ctx context.Context, report *ty.Report) ([]*scanner.Merg
5550
Package: scanner.Package{
5651
Name: vul.PkgName,
5752
Version: vul.InstalledVersion,
58-
PURL: vul.PkgRef,
53+
PURL: purl,
5954
Type: typ,
6055
Language: "",
6156
Licenses: nil,
@@ -73,18 +68,6 @@ func convertTrivyReport(ctx context.Context, report *ty.Report) ([]*scanner.Merg
7368
return matches, nil
7469
}
7570

76-
func getTypeFromPurl(purl string) (string, error) {
77-
u, err := url.Parse(purl)
78-
if err != nil {
79-
return "", fmt.Errorf("unable to parse purl: %w", err)
80-
}
81-
typ, _, found := strings.Cut(u.Opaque, "/")
82-
if !found {
83-
return "", fmt.Errorf("type not found in purl")
84-
}
85-
return typ, nil
86-
}
87-
8871
func getCVSSesFromVul(vCvss trivyDBTypes.VendorCVSS) []scanner.CVSS {
8972
cvsses := []scanner.CVSS{}
9073
v2Collected := false

pkg/controllers/scanjob.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/aquasecurity/trivy-operator/pkg/utils"
1414
"github.com/aquasecurity/trivy/pkg/sbom/cyclonedx"
1515
ty "github.com/aquasecurity/trivy/pkg/types"
16-
"github.com/docker/distribution/reference"
16+
"github.com/distribution/reference"
1717
"github.com/neticdk/scanning-controller/pkg/dependencies"
1818
"go.uber.org/multierr"
1919
batchv1 "k8s.io/api/batch/v1"
@@ -100,7 +100,7 @@ func (r *ScanJobController) processCompleteScanJob(ctx context.Context, job *bat
100100

101101
var merr error
102102
for containerName, containerImage := range containerImages {
103-
res, err := r.processScanJobResults(ctx, job, containerName, containerImage, owner)
103+
res, err := r.processScanJobResults(ctx, job, containerName)
104104
if err != nil {
105105
merr = multierr.Append(merr, err)
106106
} else {
@@ -124,7 +124,7 @@ func (r *ScanJobController) processCompleteScanJob(ctx context.Context, job *bat
124124
return r.deleteJob(ctx, job)
125125
}
126126

127-
func (r *ScanJobController) processScanJobResults(ctx context.Context, job *batchv1.Job, containerName, containerImage string, owner client.Object) (*dependencies.ScanResult, error) {
127+
func (r *ScanJobController) processScanJobResults(ctx context.Context, job *batchv1.Job, containerName string) (*dependencies.ScanResult, error) {
128128
log := log.FromContext(ctx)
129129

130130
logsStream, err := r.LogsReader.GetLogsByJobAndContainerName(ctx, job, containerName)
@@ -164,8 +164,9 @@ func (r *ScanJobController) processLogStream(ctx context.Context, stream io.Read
164164
return nil, err
165165
}
166166

167-
vuln, _ := convertTrivyReport(ctx, &reports)
168-
bom, _ := cyclonedx.NewMarshaler("").Marshal(reports)
167+
vuln, _ := convertTrivyReport(&reports)
168+
marshaller := &cyclonedx.Marshaler{}
169+
bom, _ := marshaller.MarshalReport(ctx, reports)
169170

170171
sha := GetHashFromRepoDigest(reports.Metadata.RepoDigests, reports.ArtifactName)
171172

pkg/controllers/workload.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ func (r *WorkloadController) reconcileWorkload(workloadKind kube.Kind) reconcile
175175
return ctrl.Result{}, nil
176176
}
177177

178-
exists, job, err := r.hasActiveScanJob(ctx, workloadRef, hash)
178+
exists, job, err := r.hasActiveScanJob(ctx, workloadObj, hash)
179179
if err != nil {
180180
return ctrl.Result{}, fmt.Errorf("checking scan job: %w", err)
181181
}
@@ -222,8 +222,8 @@ func (r *WorkloadController) ProcessScanJob() {
222222
}
223223
}
224224

225-
func (r *WorkloadController) hasActiveScanJob(ctx context.Context, owner kube.ObjectRef, hash string) (bool, *batchv1.Job, error) {
226-
jobName := fmt.Sprintf("scan-vulnerabilityreport-%s", kube.ComputeHash(owner))
225+
func (r *WorkloadController) hasActiveScanJob(ctx context.Context, owner client.Object, hash string) (bool, *batchv1.Job, error) {
226+
jobName := vulnerabilityreport.GetScanJobName(owner)
227227
job := &batchv1.Job{}
228228
err := r.Get(ctx, client.ObjectKey{Namespace: r.Config.Namespace, Name: jobName}, job)
229229
if err != nil {

0 commit comments

Comments
 (0)