mirror of
https://github.com/goharbor/harbor
synced 2024-09-20 12:45:34 +00:00
Log and skip adapter ping error when retrieve adapter capability (#20314)
Signed-off-by: stonezdj <stone.zhang@broadcom.com>
This commit is contained in:
parent
ea3cd06171
commit
b7d4bf0d07
|
@ -37,6 +37,8 @@ const (
|
|||
proScannerMetaKey = "projectScanner"
|
||||
statusUnhealthy = "unhealthy"
|
||||
statusHealthy = "healthy"
|
||||
// RetrieveCapFailMsg the message indicate failed to retrieve the scanner capabilities
|
||||
RetrieveCapFailMsg = "failed to retrieve scanner capabilities, error %v"
|
||||
)
|
||||
|
||||
// DefaultController is a singleton api controller for plug scanners
|
||||
|
@ -80,8 +82,9 @@ func (bc *basicController) ListRegistrations(ctx context.Context, query *q.Query
|
|||
return nil, errors.Wrap(err, "api controller: list registrations")
|
||||
}
|
||||
for _, r := range l {
|
||||
if err := bc.appendCap(ctx, r); err != nil {
|
||||
return nil, err
|
||||
if err := bc.RetrieveCap(ctx, r); err != nil {
|
||||
log.Warningf(RetrieveCapFailMsg, err)
|
||||
return l, nil
|
||||
}
|
||||
}
|
||||
return l, nil
|
||||
|
@ -129,13 +132,14 @@ func (bc *basicController) GetRegistration(ctx context.Context, registrationUUID
|
|||
if r == nil {
|
||||
return nil, nil
|
||||
}
|
||||
if err := bc.appendCap(ctx, r); err != nil {
|
||||
return nil, err
|
||||
if err := bc.RetrieveCap(ctx, r); err != nil {
|
||||
log.Warningf(RetrieveCapFailMsg, err)
|
||||
return r, nil
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
func (bc *basicController) appendCap(ctx context.Context, r *scanner.Registration) error {
|
||||
func (bc *basicController) RetrieveCap(ctx context.Context, r *scanner.Registration) error {
|
||||
mt, err := bc.Ping(ctx, r)
|
||||
if err != nil {
|
||||
logger.Errorf("Get registration error: %s", err)
|
||||
|
|
|
@ -154,4 +154,7 @@ type Controller interface {
|
|||
// *v1.ScannerAdapterMetadata : metadata returned by the scanner if successfully ping
|
||||
// error : non nil error if any errors occurred
|
||||
GetMetadata(ctx context.Context, registrationUUID string) (*v1.ScannerAdapterMetadata, error)
|
||||
|
||||
// RetrieveCap retrieve scanner capabilities
|
||||
RetrieveCap(ctx context.Context, r *scanner.Registration) error
|
||||
}
|
||||
|
|
|
@ -590,18 +590,16 @@ func (a *projectAPI) GetScannerOfProject(ctx context.Context, params operation.G
|
|||
return a.SendError(ctx, err)
|
||||
}
|
||||
|
||||
scanner, err := a.scannerCtl.GetRegistrationByProject(ctx, p.ProjectID)
|
||||
s, err := a.scannerCtl.GetRegistrationByProject(ctx, p.ProjectID)
|
||||
if err != nil {
|
||||
return a.SendError(ctx, err)
|
||||
}
|
||||
if scanner != nil {
|
||||
metadata, err := a.scannerCtl.GetMetadata(ctx, scanner.UUID)
|
||||
if err != nil {
|
||||
return a.SendError(ctx, err)
|
||||
if s != nil {
|
||||
if err := a.scannerCtl.RetrieveCap(ctx, s); err != nil {
|
||||
log.Warningf(scanner.RetrieveCapFailMsg, err)
|
||||
}
|
||||
scanner.Capabilities = metadata.ConvertCapability()
|
||||
}
|
||||
return operation.NewGetScannerOfProjectOK().WithPayload(model.NewScannerRegistration(scanner).ToSwagger(ctx))
|
||||
return operation.NewGetScannerOfProjectOK().WithPayload(model.NewScannerRegistration(s).ToSwagger(ctx))
|
||||
}
|
||||
|
||||
func (a *projectAPI) ListScannerCandidatesOfProject(ctx context.Context, params operation.ListScannerCandidatesOfProjectParams) middleware.Responder {
|
||||
|
|
|
@ -89,6 +89,7 @@ func (suite *ProjectTestSuite) TestGetScannerOfProject() {
|
|||
mock.OnAnything(suite.projectCtl, "Get").Return(suite.project, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "GetRegistrationByProject").Return(nil, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "GetMetadata").Return(suite.metadata, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "RetrieveCap").Return(nil).Once()
|
||||
res, err := suite.Get("/projects/1/scanner")
|
||||
suite.NoError(err)
|
||||
suite.Equal(200, res.StatusCode)
|
||||
|
@ -98,6 +99,7 @@ func (suite *ProjectTestSuite) TestGetScannerOfProject() {
|
|||
mock.OnAnything(suite.projectCtl, "Get").Return(suite.project, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "GetRegistrationByProject").Return(suite.reg, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "GetMetadata").Return(suite.metadata, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "RetrieveCap").Return(nil).Once()
|
||||
var scanner scanner.Registration
|
||||
res, err := suite.GetJSON("/projects/1/scanner", &scanner)
|
||||
suite.NoError(err)
|
||||
|
@ -110,6 +112,7 @@ func (suite *ProjectTestSuite) TestGetScannerOfProject() {
|
|||
mock.OnAnything(suite.projectCtl, "Get").Return(suite.project, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "GetMetadata").Return(suite.metadata, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "GetRegistrationByProject").Return(suite.reg, nil).Once()
|
||||
mock.OnAnything(suite.scannerCtl, "RetrieveCap").Return(nil).Once()
|
||||
|
||||
var scanner scanner.Registration
|
||||
res, err := suite.GetJSON("/projects/library/scanner", &scanner)
|
||||
|
|
|
@ -281,6 +281,24 @@ func (_m *Controller) RegistrationExists(ctx context.Context, registrationUUID s
|
|||
return r0
|
||||
}
|
||||
|
||||
// RetrieveCap provides a mock function with given fields: ctx, r
|
||||
func (_m *Controller) RetrieveCap(ctx context.Context, r *scanner.Registration) error {
|
||||
ret := _m.Called(ctx, r)
|
||||
|
||||
if len(ret) == 0 {
|
||||
panic("no return value specified for RetrieveCap")
|
||||
}
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(context.Context, *scanner.Registration) error); ok {
|
||||
r0 = rf(ctx, r)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
return r0
|
||||
}
|
||||
|
||||
// SetDefaultRegistration provides a mock function with given fields: ctx, registrationUUID
|
||||
func (_m *Controller) SetDefaultRegistration(ctx context.Context, registrationUUID string) error {
|
||||
ret := _m.Called(ctx, registrationUUID)
|
||||
|
|
Loading…
Reference in New Issue
Block a user