Skip to content

Commit

Permalink
Merge pull request #100 from kubescape/update-scan-id
Browse files Browse the repository at this point in the history
generate scan ID from instance ID
  • Loading branch information
Daniel-GrunbergerCA committed Apr 19, 2023
2 parents f17711c + 3f1424d commit 4b3ec73
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 5 deletions.
18 changes: 13 additions & 5 deletions core/services/scan.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,16 +266,24 @@ func enrichContext(ctx context.Context, workload domain.ScanCommand) context.Con
// record start time
ctx = context.WithValue(ctx, domain.TimestampKey{}, time.Now().Unix())
// generate unique scanID and add to context
scanID, err := uuid.NewRandom()
if err != nil {
logger.L().Ctx(ctx).Error("error generating scanID", helpers.Error(err))
}
ctx = context.WithValue(ctx, domain.ScanIDKey{}, scanID.String())
scanID := generateScanID(workload)

ctx = context.WithValue(ctx, domain.ScanIDKey{}, scanID)
// add workload to context
ctx = context.WithValue(ctx, domain.WorkloadKey{}, workload)
return ctx
}

func generateScanID(workload domain.ScanCommand) string {
if workload.InstanceID != "" {
return workload.InstanceID
}
if workload.ImageTag != "" && workload.ImageHash != "" {
return workload.ImageTag + workload.ImageHash
}
return uuid.New().String()
}

func optionsFromWorkload(workload domain.ScanCommand) domain.RegistryOptions {
options := domain.RegistryOptions{}
for _, cred := range workload.Credentialslist {
Expand Down
45 changes: 45 additions & 0 deletions core/services/scan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -500,3 +500,48 @@ func TestScanService_ValidateScanRegistry(t *testing.T) {
})
}
}

func Test_generateScanID(t *testing.T) {
type args struct {
workload domain.ScanCommand
}
tests := []struct {
name string
args args
want string
}{
{
name: "generate scanID with imageHash",
args: args{
workload: domain.ScanCommand{
ImageTag: "k8s.gcr.io/kube-proxy:v1.24.3",
ImageHash: "sha256:6f9c1c5b5b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b",
},
},
want: "k8s.gcr.io/kube-proxy:v1.24.3sha256:6f9c1c5b5b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b",
},
{
name: "generate scanID with instanceID",
args: args{
workload: domain.ScanCommand{
InstanceID: "InstanceID",
},
},
want: "InstanceID",
},
// {
// name: "generate scanID with UUID",
// args: args{
// workload: domain.ScanCommand{},
// },
// want: "",
// },
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := generateScanID(tt.args.workload); got != tt.want {
t.Errorf("generateScanID() = %v, want %v", got, tt.want)
}
})
}
}

0 comments on commit 4b3ec73

Please sign in to comment.