From ea2078e8204ac2917769fd0c30aed4d12efb72a4 Mon Sep 17 00:00:00 2001 From: adi6859 Date: Fri, 9 Feb 2024 13:12:10 +0530 Subject: [PATCH 1/2] Bug(same image scan detail) : bug fix --- .../sql/repository/security/ImageScanHistoryRepository.go | 6 +++--- pkg/pipeline/WorkflowDagExecutor.go | 6 +++--- pkg/security/ImageScanService.go | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/sql/repository/security/ImageScanHistoryRepository.go b/internal/sql/repository/security/ImageScanHistoryRepository.go index 5bb129a1ea..9ee56716b8 100644 --- a/internal/sql/repository/security/ImageScanHistoryRepository.go +++ b/internal/sql/repository/security/ImageScanHistoryRepository.go @@ -36,7 +36,7 @@ type ImageScanHistoryRepository interface { Save(model *ImageScanExecutionHistory) error FindAll() ([]*ImageScanExecutionHistory, error) FindOne(id int) (*ImageScanExecutionHistory, error) - FindByImageDigest(image string) (*ImageScanExecutionHistory, error) + FindByImageDigest(imageHash string, image string) (*ImageScanExecutionHistory, error) FindByImageDigests(digest []string) ([]*ImageScanExecutionHistory, error) Update(model *ImageScanExecutionHistory) error FindByImage(image string) (*ImageScanExecutionHistory, error) @@ -72,10 +72,10 @@ func (impl ImageScanHistoryRepositoryImpl) FindOne(id int) (*ImageScanExecutionH return &model, err } -func (impl ImageScanHistoryRepositoryImpl) FindByImageDigest(image string) (*ImageScanExecutionHistory, error) { +func (impl ImageScanHistoryRepositoryImpl) FindByImageDigest(imageHash string, image string) (*ImageScanExecutionHistory, error) { var model ImageScanExecutionHistory err := impl.dbConnection.Model(&model). - Where("image_hash = ?", image).Order("execution_time desc").Limit(1).Select() + Where("image_hash = ? and image = ? ", imageHash, image).Order("execution_time desc").Limit(1).Select() return &model, err } diff --git a/pkg/pipeline/WorkflowDagExecutor.go b/pkg/pipeline/WorkflowDagExecutor.go index 501834298b..39ea8264f1 100644 --- a/pkg/pipeline/WorkflowDagExecutor.go +++ b/pkg/pipeline/WorkflowDagExecutor.go @@ -3162,7 +3162,7 @@ func (impl *WorkflowDagExecutorImpl) TriggerPipeline(overrideRequest *bean.Value go impl.WriteCDTriggerEvent(overrideRequest, valuesOverrideResponse.Artifact, valuesOverrideResponse.PipelineOverride.PipelineReleaseCounter, valuesOverrideResponse.PipelineOverride.Id) _, span := otel.Tracer("orchestrator").Start(ctx, "MarkImageScanDeployed") - _ = impl.MarkImageScanDeployed(overrideRequest.AppId, valuesOverrideResponse.EnvOverride.TargetEnvironment, valuesOverrideResponse.Artifact.ImageDigest, overrideRequest.ClusterId, valuesOverrideResponse.Artifact.ScanEnabled) + _ = impl.MarkImageScanDeployed(overrideRequest.AppId, valuesOverrideResponse.EnvOverride.TargetEnvironment, valuesOverrideResponse.Artifact.ImageDigest, overrideRequest.ClusterId, valuesOverrideResponse.Artifact.ScanEnabled, valuesOverrideResponse.Artifact.Image) span.End() middleware.CdTriggerCounter.WithLabelValues(overrideRequest.AppName, overrideRequest.EnvName).Inc() @@ -3351,9 +3351,9 @@ func (impl *WorkflowDagExecutorImpl) WriteCDTriggerEvent(overrideRequest *bean.V } } -func (impl *WorkflowDagExecutorImpl) MarkImageScanDeployed(appId int, envId int, imageDigest string, clusterId int, isScanEnabled bool) error { +func (impl *WorkflowDagExecutorImpl) MarkImageScanDeployed(appId int, envId int, imageDigest string, clusterId int, isScanEnabled bool, image string) error { impl.logger.Debugw("mark image scan deployed for normal app, from cd auto or manual trigger", "imageDigest", imageDigest) - executionHistory, err := impl.imageScanHistoryRepository.FindByImageDigest(imageDigest) + executionHistory, err := impl.imageScanHistoryRepository.FindByImageDigest(imageDigest, image) if err != nil && err != pg.ErrNoRows { impl.logger.Errorw("error in fetching execution history", "err", err) return err diff --git a/pkg/security/ImageScanService.go b/pkg/security/ImageScanService.go index e8d027e5f1..d3c3f845dd 100644 --- a/pkg/security/ImageScanService.go +++ b/pkg/security/ImageScanService.go @@ -321,7 +321,7 @@ func (impl ImageScanServiceImpl) FetchExecutionDetailResult(request *ImageScanRe impl.Logger.Errorw("error while fetching scan execution result", "err", err) return nil, err } - scanExecution, err := impl.scanHistoryRepository.FindByImageDigest(ciArtifact.ImageDigest) + scanExecution, err := impl.scanHistoryRepository.FindByImageDigest(ciArtifact.ImageDigest, ciArtifact.Image) if err != nil { impl.Logger.Errorw("error while fetching scan execution result", "err", err) return nil, err From a752dbad2b46d0e678a7b83281adea3700a6ef8b Mon Sep 17 00:00:00 2001 From: adi6859 Date: Fri, 9 Feb 2024 16:45:38 +0530 Subject: [PATCH 2/2] Bug(same image scan detail) : code refactored --- .../sql/repository/security/ImageScanHistoryRepository.go | 8 +++++--- pkg/pipeline/WorkflowDagExecutor.go | 2 +- pkg/security/ImageScanService.go | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/internal/sql/repository/security/ImageScanHistoryRepository.go b/internal/sql/repository/security/ImageScanHistoryRepository.go index 9ee56716b8..a9df49060f 100644 --- a/internal/sql/repository/security/ImageScanHistoryRepository.go +++ b/internal/sql/repository/security/ImageScanHistoryRepository.go @@ -36,7 +36,7 @@ type ImageScanHistoryRepository interface { Save(model *ImageScanExecutionHistory) error FindAll() ([]*ImageScanExecutionHistory, error) FindOne(id int) (*ImageScanExecutionHistory, error) - FindByImageDigest(imageHash string, image string) (*ImageScanExecutionHistory, error) + FindByImageAndDigest(imageDigest string, image string) (*ImageScanExecutionHistory, error) FindByImageDigests(digest []string) ([]*ImageScanExecutionHistory, error) Update(model *ImageScanExecutionHistory) error FindByImage(image string) (*ImageScanExecutionHistory, error) @@ -72,10 +72,12 @@ func (impl ImageScanHistoryRepositoryImpl) FindOne(id int) (*ImageScanExecutionH return &model, err } -func (impl ImageScanHistoryRepositoryImpl) FindByImageDigest(imageHash string, image string) (*ImageScanExecutionHistory, error) { +func (impl ImageScanHistoryRepositoryImpl) FindByImageAndDigest(imageDigest string, image string) (*ImageScanExecutionHistory, error) { var model ImageScanExecutionHistory err := impl.dbConnection.Model(&model). - Where("image_hash = ? and image = ? ", imageHash, image).Order("execution_time desc").Limit(1).Select() + Where("image_hash = ?", imageDigest). + Where("image = ?", image). + Order("execution_time desc").Limit(1).Select() return &model, err } diff --git a/pkg/pipeline/WorkflowDagExecutor.go b/pkg/pipeline/WorkflowDagExecutor.go index 39ea8264f1..cf1d14b846 100644 --- a/pkg/pipeline/WorkflowDagExecutor.go +++ b/pkg/pipeline/WorkflowDagExecutor.go @@ -3353,7 +3353,7 @@ func (impl *WorkflowDagExecutorImpl) WriteCDTriggerEvent(overrideRequest *bean.V func (impl *WorkflowDagExecutorImpl) MarkImageScanDeployed(appId int, envId int, imageDigest string, clusterId int, isScanEnabled bool, image string) error { impl.logger.Debugw("mark image scan deployed for normal app, from cd auto or manual trigger", "imageDigest", imageDigest) - executionHistory, err := impl.imageScanHistoryRepository.FindByImageDigest(imageDigest, image) + executionHistory, err := impl.imageScanHistoryRepository.FindByImageAndDigest(imageDigest, image) if err != nil && err != pg.ErrNoRows { impl.logger.Errorw("error in fetching execution history", "err", err) return err diff --git a/pkg/security/ImageScanService.go b/pkg/security/ImageScanService.go index d3c3f845dd..2e85d51804 100644 --- a/pkg/security/ImageScanService.go +++ b/pkg/security/ImageScanService.go @@ -321,7 +321,7 @@ func (impl ImageScanServiceImpl) FetchExecutionDetailResult(request *ImageScanRe impl.Logger.Errorw("error while fetching scan execution result", "err", err) return nil, err } - scanExecution, err := impl.scanHistoryRepository.FindByImageDigest(ciArtifact.ImageDigest, ciArtifact.Image) + scanExecution, err := impl.scanHistoryRepository.FindByImageAndDigest(ciArtifact.ImageDigest, ciArtifact.Image) if err != nil { impl.Logger.Errorw("error while fetching scan execution result", "err", err) return nil, err