Skip to content

Commit 2b4bc6e

Browse files
authored
Merge pull request #276 from kubescape/sup-empty-repo
* send total images count on registry scanning * report status completed on no images to scan
2 parents 0212693 + e011d21 commit 2b4bc6e

File tree

3 files changed

+26
-15
lines changed

3 files changed

+26
-15
lines changed

go.mod

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ go 1.23.0
55
toolchain go1.23.2
66

77
require (
8-
github.com/armosec/armoapi-go v0.0.496
8+
github.com/armosec/armoapi-go v0.0.501
99
github.com/armosec/cluster-notifier-api-go v0.0.5
10-
github.com/armosec/registryx v0.0.23
10+
github.com/armosec/registryx v0.0.24
1111
github.com/armosec/utils-go v0.0.58
1212
github.com/armosec/utils-k8s-go v0.0.30
1313
github.com/aws/aws-sdk-go v1.55.5

go.sum

+4-4
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,14 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV
139139
github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
140140
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
141141
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
142-
github.com/armosec/armoapi-go v0.0.496 h1:eUBeMaDkGxC2F0ItyH3zfHTevAe6HyOo8+GBCGovStE=
143-
github.com/armosec/armoapi-go v0.0.496/go.mod h1:TruqDSAPgfRBXCeM+Cgp6nN4UhJSbe7la+XDKV2pTsY=
142+
github.com/armosec/armoapi-go v0.0.501 h1:npi5fwtnoPJw9pAeKpn4PDmlP6jYYNrIl6P/EQqty+0=
143+
github.com/armosec/armoapi-go v0.0.501/go.mod h1:TruqDSAPgfRBXCeM+Cgp6nN4UhJSbe7la+XDKV2pTsY=
144144
github.com/armosec/cluster-notifier-api-go v0.0.5 h1:UKY58ehKocKgtqzrawyaIHJa5paG9A4srv+4/6n+Ez4=
145145
github.com/armosec/cluster-notifier-api-go v0.0.5/go.mod h1:p5w9/zWIWwpi8W8mHGQdE6HuBb3AxXmZM9Rp//JWvx0=
146146
github.com/armosec/gojay v1.2.17 h1:VSkLBQzD1c2V+FMtlGFKqWXNsdNvIKygTKJI9ysY8eM=
147147
github.com/armosec/gojay v1.2.17/go.mod h1:vuvX3DlY0nbVrJ0qCklSS733AWMoQboq3cFyuQW9ybc=
148-
github.com/armosec/registryx v0.0.23 h1:yuWyfQGLrxgaexnG8d72gPgcjAkTXkSwiHWoC6w/xcE=
149-
github.com/armosec/registryx v0.0.23/go.mod h1:Wv/IjsruMf07rGhqTLxb4WDOzirVcoRdcCr+J/8n2pM=
148+
github.com/armosec/registryx v0.0.24 h1:PXyZp4CRcREKda6d1MyqJj6knSXPvUAZliSqT0KwWPI=
149+
github.com/armosec/registryx v0.0.24/go.mod h1:Wv/IjsruMf07rGhqTLxb4WDOzirVcoRdcCr+J/8n2pM=
150150
github.com/armosec/utils-go v0.0.58 h1:g9RnRkxZAmzTfPe2ruMo2OXSYLwVSegQSkSavOfmaIE=
151151
github.com/armosec/utils-go v0.0.58/go.mod h1:CdqKHKruVJMCxGcZXYW9J+5P9FZou8dMzVpcB0Xt8pk=
152152
github.com/armosec/utils-k8s-go v0.0.30 h1:Gj8MJck0jZPSLSq8ZMiRPT3F/laOYQdaLxXKKcjijt4=

mainhandler/vulnscan.go

+20-9
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"errors"
77
"fmt"
88
"net/url"
9+
"strconv"
910
"strings"
1011
"time"
1112

@@ -63,6 +64,8 @@ func getAPScanURL(config config.IConfig) *url.URL {
6364
}
6465
}
6566

67+
const noImagesToScanError = "no images to scan"
68+
6669
func getVulnScanURL(config config.IConfig) *url.URL {
6770
return &url.URL{
6871
Scheme: "http",
@@ -184,6 +187,10 @@ func (actionHandler *ActionHandler) scanRegistriesV2AndUpdateStatus(ctx context.
184187

185188
err = actionHandler.scanRegistriesV2(ctx, sessionObj, imageRegistry)
186189
if err != nil {
190+
if err.Error() == noImagesToScanError { // nothing to scan
191+
actionHandler.exporter.SendRegistryStatus(imageRegistry.GetBase().GUID, apitypes.Completed, "", scanTime)
192+
return nil
193+
}
187194
actionHandler.exporter.SendRegistryStatus(imageRegistry.GetBase().GUID, apitypes.Failed, err.Error(), scanTime)
188195
return err
189196
}
@@ -205,6 +212,8 @@ func (actionHandler *ActionHandler) scanRegistriesV2(ctx context.Context, sessio
205212
images, err := client.GetImagesToScan(ctx)
206213
if err != nil {
207214
return fmt.Errorf("failed to get registry images to scan with err %v", err)
215+
} else if len(images) == 0 {
216+
return errors.New(noImagesToScanError)
208217
}
209218

210219
registryScanCMDList, err := actionHandler.getRegistryImageScanCommands(sessionObj, client, imageRegistry, images)
@@ -253,7 +262,8 @@ func (actionHandler *ActionHandler) loadRegistryFromSessionObj(sessionObj *utils
253262

254263
func (actionHandler *ActionHandler) getRegistryImageScanCommands(sessionObj *utils.SessionObj, client interfaces.RegistryClient, imageRegistry apitypes.ContainerImageRegistry, images map[string]string) ([]*apis.RegistryScanCommand, error) {
255264
scanID := uuid.NewString()
256-
registryScanCMDList := make([]*apis.RegistryScanCommand, 0, len(images))
265+
imagesCount := len(images)
266+
registryScanCMDList := make([]*apis.RegistryScanCommand, 0, imagesCount)
257267
for image, tag := range images {
258268
repository := image
259269
parts := strings.SplitN(image, "/", 2)
@@ -266,14 +276,15 @@ func (actionHandler *ActionHandler) getRegistryImageScanCommands(sessionObj *uti
266276
ImageTag: image + ":" + tag,
267277
Session: apis.SessionChain{ActionTitle: "vulnerability-scan", JobIDs: make([]string, 0), Timestamp: sessionObj.Reporter.GetTimestamp()},
268278
Args: map[string]interface{}{
269-
identifiers.AttributeRegistryName: imageRegistry.GetDisplayName(),
270-
identifiers.AttributeRepository: repository,
271-
identifiers.AttributeTag: tag,
272-
identifiers.AttributeUseHTTP: false,
273-
identifiers.AttributeSkipTLSVerify: false,
274-
identifiers.AttributeSensor: imageRegistry.GetBase().ClusterName,
275-
identifiers.AttributeRegistryID: imageRegistry.GetBase().GUID,
276-
identifiers.AttributeRegistryScanID: scanID,
279+
identifiers.AttributeRegistryName: imageRegistry.GetDisplayName(),
280+
identifiers.AttributeRepository: repository,
281+
identifiers.AttributeTag: tag,
282+
identifiers.AttributeUseHTTP: false,
283+
identifiers.AttributeSkipTLSVerify: false,
284+
identifiers.AttributeSensor: imageRegistry.GetBase().ClusterName,
285+
identifiers.AttributeRegistryID: imageRegistry.GetBase().GUID,
286+
identifiers.AttributeRegistryScanID: scanID,
287+
identifiers.AttributeRegistryScanImagesCount: strconv.Itoa(imagesCount),
277288
},
278289
}
279290
auth, err := client.GetDockerAuth()

0 commit comments

Comments
 (0)