fix: update code in compliance with golangci-lint revive (#17087)

Signed-off-by: Shengwen Yu <yshengwen@vmware.com>
This commit is contained in:
Shengwen YU 2022-07-01 14:52:47 +08:00 committed by GitHub
parent 94bf1c0ebd
commit 315d8a8993
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 160 additions and 157 deletions

View File

@ -25,7 +25,7 @@ linters:
- ineffassign
# - nakedret
# - nolintlint
# - revive
- revive
- whitespace
- bodyclose
- deadcode

View File

@ -51,7 +51,7 @@ type controller struct {
}
func (c *controller) Start(ctx context.Context, async bool, trigger string) error {
execId, err := c.execMgr.Create(ctx, VendorTypeSystemArtifactCleanup, 0, trigger)
execID, err := c.execMgr.Create(ctx, VendorTypeSystemArtifactCleanup, 0, trigger)
if err != nil {
return err
}
@ -61,7 +61,7 @@ func (c *controller) Start(ctx context.Context, async bool, trigger string) erro
jobParams := job.Parameters{}
if !async {
err := c.createCleanupTask(ctx, jobParams, execId)
err := c.createCleanupTask(ctx, jobParams, execID)
if err != nil {
log.Errorf("failed to create system artifact clean-up task: %v", err)
return err
@ -72,14 +72,14 @@ func (c *controller) Start(ctx context.Context, async bool, trigger string) erro
}
go func(ctx context.Context) {
err := retry.Retry(func() error {
_, err := c.execMgr.Get(ctx, execId)
_, err := c.execMgr.Get(ctx, execID)
return err
})
if err != nil {
log.Errorf("failed to get the execution %d for the export data cleanup job", execId)
log.Errorf("failed to get the execution %d for the export data cleanup job", execID)
return
}
err = c.createCleanupTask(ctx, jobParams, execId)
err = c.createCleanupTask(ctx, jobParams, execID)
if err != nil {
logger.Errorf("Encountered error in scan data artifact cleanup : %v", err)
return
@ -89,7 +89,7 @@ func (c *controller) Start(ctx context.Context, async bool, trigger string) erro
return nil
}
func (c *controller) createCleanupTask(ctx context.Context, jobParams job.Parameters, execId int64) error {
func (c *controller) createCleanupTask(ctx context.Context, jobParams job.Parameters, execID int64) error {
j := &task.Job{
Name: job.SystemArtifactCleanup,
Metadata: &job.Metadata{
@ -98,11 +98,11 @@ func (c *controller) createCleanupTask(ctx context.Context, jobParams job.Parame
Parameters: jobParams,
}
_, err := c.taskMgr.Create(ctx, execId, j)
_, err := c.taskMgr.Create(ctx, execID, j)
if err != nil {
logger.Errorf("Unable to create a scan data export job in clean-up mode : %v", err)
c.markError(ctx, execId, err)
c.markError(ctx, execID, err)
return err
}
return nil
@ -132,12 +132,12 @@ func scheduleSystemArtifactCleanJob(ctx context.Context) {
logger.Debugf(" Export data cleanup job already scheduled with ID : %v.", schedule.ID)
return
}
scheduleId, err := sched.Schedule(ctx, VendorTypeSystemArtifactCleanup, 0, cronTypeDaily, cronSpec, SystemArtifactCleanupCallback, nil, nil)
scheduleID, err := sched.Schedule(ctx, VendorTypeSystemArtifactCleanup, 0, cronTypeDaily, cronSpec, SystemArtifactCleanupCallback, nil, nil)
if err != nil {
log.Errorf("Encountered error when scheduling scan data export cleanup job : %v", err)
return
}
log.Infof("Scheduled scan data export cleanup job with ID : %v", scheduleId)
log.Infof("Scheduled scan data export cleanup job with ID : %v", scheduleID)
}
func getSystemArtifactCleanupSchedule(ctx context.Context) (*scheduler.Schedule, error) {

View File

@ -53,6 +53,8 @@ import (
"github.com/goharbor/harbor/src/lib/retry"
tracelib "github.com/goharbor/harbor/src/lib/trace"
"github.com/goharbor/harbor/src/migration"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/base"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/cosign"
"github.com/goharbor/harbor/src/pkg/audit"
dbCfg "github.com/goharbor/harbor/src/pkg/config/db"
_ "github.com/goharbor/harbor/src/pkg/config/inmemory"

View File

@ -35,8 +35,8 @@ const (
var harborpder = &Provider{}
// SessionStore redis session store
type SessionStore struct {
// Store redis session store
type Store struct {
c cache.Cache
sid string
lock sync.RWMutex
@ -45,7 +45,7 @@ type SessionStore struct {
}
// Set value in redis session
func (rs *SessionStore) Set(key, value interface{}) error {
func (rs *Store) Set(key, value interface{}) error {
rs.lock.Lock()
defer rs.lock.Unlock()
rs.values[key] = value
@ -53,7 +53,7 @@ func (rs *SessionStore) Set(key, value interface{}) error {
}
// Get value in redis session
func (rs *SessionStore) Get(key interface{}) interface{} {
func (rs *Store) Get(key interface{}) interface{} {
rs.lock.RLock()
defer rs.lock.RUnlock()
if v, ok := rs.values[key]; ok {
@ -63,7 +63,7 @@ func (rs *SessionStore) Get(key interface{}) interface{} {
}
// Delete value in redis session
func (rs *SessionStore) Delete(key interface{}) error {
func (rs *Store) Delete(key interface{}) error {
rs.lock.Lock()
defer rs.lock.Unlock()
delete(rs.values, key)
@ -71,7 +71,7 @@ func (rs *SessionStore) Delete(key interface{}) error {
}
// Flush clear all values in redis session
func (rs *SessionStore) Flush() error {
func (rs *Store) Flush() error {
rs.lock.Lock()
defer rs.lock.Unlock()
rs.values = make(map[interface{}]interface{})
@ -79,12 +79,12 @@ func (rs *SessionStore) Flush() error {
}
// SessionID get redis session id
func (rs *SessionStore) SessionID() string {
func (rs *Store) SessionID() string {
return rs.sid
}
// SessionRelease save session values to redis
func (rs *SessionStore) SessionRelease(w http.ResponseWriter) {
func (rs *Store) SessionRelease(w http.ResponseWriter) {
b, err := session.EncodeGob(rs.values)
if err != nil {
return
@ -123,7 +123,7 @@ func (rp *Provider) SessionRead(sid string) (session.Store, error) {
return nil, err
}
rs := &SessionStore{c: rp.c, sid: sid, values: kv, maxlifetime: rp.maxlifetime}
rs := &Store{c: rp.c, sid: sid, values: kv, maxlifetime: rp.maxlifetime}
return rs, nil
}

View File

@ -37,7 +37,7 @@ import (
var (
regCtlInit = registryctl.Init
stopErr = errors.New("stopped")
errGcStop = errors.New("stopped")
)
const (
@ -154,7 +154,7 @@ func (gc *GarbageCollector) Run(ctx job.Context, params job.Parameters) error {
// mark
if err := gc.mark(ctx); err != nil {
if err == stopErr {
if err == errGcStop {
gc.logger.Info("received the stop signal, quit GC job.")
return nil
}
@ -165,7 +165,7 @@ func (gc *GarbageCollector) Run(ctx job.Context, params job.Parameters) error {
// sweep
if !gc.dryRun {
if err := gc.sweep(ctx); err != nil {
if err == stopErr {
if err == errGcStop {
// we may already delete several artifacts before receiving the stop signal, so try to clean up the cache
gc.logger.Info("received the stop signal, quit GC job after cleaning up the cache.")
return gc.cleanCache()
@ -222,7 +222,7 @@ func (gc *GarbageCollector) mark(ctx job.Context) error {
for _, blob := range blobs {
if !gc.dryRun {
if gc.shouldStop(ctx) {
return stopErr
return errGcStop
}
blob.Status = blobModels.StatusDelete
count, err := gc.blobMgr.UpdateBlobStatus(ctx.SystemContext(), blob)
@ -260,7 +260,7 @@ func (gc *GarbageCollector) sweep(ctx job.Context) error {
total := len(gc.deleteSet)
for i, blob := range gc.deleteSet {
if gc.shouldStop(ctx) {
return stopErr
return errGcStop
}
idx := i + 1
// set the status firstly, if the blob is updated by any HEAD/PUT request, it should be fail and skip.
@ -469,7 +469,7 @@ func (gc *GarbageCollector) deletedArt(ctx job.Context) (map[string][]model.Arti
allTrashedArts = append(allTrashedArts, simulateDeletion)
} else {
if gc.shouldStop(ctx) {
return nil, stopErr
return nil, errGcStop
}
if err := gc.artCtl.Delete(ctx.SystemContext(), untagged.ID); err != nil {
// the failure ones can be GCed by the next execution
@ -519,7 +519,7 @@ func (gc *GarbageCollector) markOrSweepUntaggedBlobs(ctx job.Context) ([]*blobMo
var orphanBlobs []*blobModels.Blob
for result := range project.ListAll(ctx.SystemContext(), 50, nil, project.Metadata(false)) {
if gc.shouldStop(ctx) {
return nil, stopErr
return nil, errGcStop
}
if result.Error != nil {
gc.logger.Errorf("remove untagged blobs for all projects got error: %v", result.Error)
@ -536,7 +536,7 @@ func (gc *GarbageCollector) markOrSweepUntaggedBlobs(ctx job.Context) ([]*blobMo
for {
if gc.shouldStop(ctx) {
gc.logger.Info("received the stop signal, quit GC job.")
return nil, stopErr
return nil, errGcStop
}
blobRG := q.Range{
Min: lastBlobID,

View File

@ -207,7 +207,7 @@ func (suite *gcTestSuite) TestStop() {
deleteUntagged: true,
}
suite.Equal(stopErr, gc.mark(ctx))
suite.Equal(errGcStop, gc.mark(ctx))
}
func (suite *gcTestSuite) TestRun() {

View File

@ -47,7 +47,7 @@ var (
SecretStore *secret.Store
keyProvider encrypt.KeyProvider
// Use backgroundCtx to access system scope config
backgroundCtx context.Context = context.Background()
backgroundCtx = context.Background()
)
// It contains all system settings

View File

@ -21,9 +21,6 @@ import (
"github.com/goharbor/harbor/src/lib/q"
"github.com/goharbor/harbor/src/pkg/accessory/dao"
"github.com/goharbor/harbor/src/pkg/accessory/model"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/base"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/cosign"
)
var (

View File

@ -18,6 +18,8 @@ import (
"github.com/goharbor/harbor/src/lib/q"
"github.com/goharbor/harbor/src/pkg/accessory/dao"
"github.com/goharbor/harbor/src/pkg/accessory/model"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/base"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/cosign"
"github.com/goharbor/harbor/src/testing/mock"
testingdao "github.com/goharbor/harbor/src/testing/pkg/accessory/dao"
"github.com/stretchr/testify/suite"

View File

@ -28,18 +28,18 @@ import (
"github.com/goharbor/harbor/src/pkg/cached"
)
var _ CachedManager = &manager{}
var _ CachedManager = &Manager{}
// CachedManager is the interface combines raw resource manager and cached manager for better extension.
// CachedManager is the interface combines raw resource Manager and cached Manager for better extension.
type CachedManager interface {
// Manager is the raw resource manager.
// Manager is the raw resource Manager.
artifact.Manager
// Manager is the common interface for resource cache.
cached.Manager
}
// manager is the cached manager implemented by redis.
type manager struct {
// Manager is the cached Manager implemented by redis.
type Manager struct {
// delegator delegates the raw crud to DAO.
delegator artifact.Manager
// client returns the redis cache client.
@ -50,9 +50,9 @@ type manager struct {
lifetime time.Duration
}
// NewManager returns the redis cache manager.
func NewManager(m artifact.Manager) *manager {
return &manager{
// NewManager returns the redis cache Manager.
func NewManager(m artifact.Manager) *Manager {
return &Manager{
delegator: m,
client: func() libcache.Cache { return libcache.Default() },
keyBuilder: cached.NewObjectKey(cached.ResourceTypeArtifact),
@ -60,27 +60,27 @@ func NewManager(m artifact.Manager) *manager {
}
}
func (m *manager) Count(ctx context.Context, query *q.Query) (int64, error) {
func (m *Manager) Count(ctx context.Context, query *q.Query) (int64, error) {
return m.delegator.Count(ctx, query)
}
func (m *manager) List(ctx context.Context, query *q.Query) ([]*artifact.Artifact, error) {
func (m *Manager) List(ctx context.Context, query *q.Query) ([]*artifact.Artifact, error) {
return m.delegator.List(ctx, query)
}
func (m *manager) Create(ctx context.Context, artifact *artifact.Artifact) (int64, error) {
func (m *Manager) Create(ctx context.Context, artifact *artifact.Artifact) (int64, error) {
return m.delegator.Create(ctx, artifact)
}
func (m *manager) ListReferences(ctx context.Context, query *q.Query) ([]*artifact.Reference, error) {
func (m *Manager) ListReferences(ctx context.Context, query *q.Query) ([]*artifact.Reference, error) {
return m.delegator.ListReferences(ctx, query)
}
func (m *manager) DeleteReference(ctx context.Context, id int64) error {
func (m *Manager) DeleteReference(ctx context.Context, id int64) error {
return m.delegator.DeleteReference(ctx, id)
}
func (m *manager) Get(ctx context.Context, id int64) (*artifact.Artifact, error) {
func (m *Manager) Get(ctx context.Context, id int64) (*artifact.Artifact, error) {
key, err := m.keyBuilder.Format("id", id)
if err != nil {
return nil, err
@ -106,7 +106,7 @@ func (m *manager) Get(ctx context.Context, id int64) (*artifact.Artifact, error)
return art, nil
}
func (m *manager) GetByDigest(ctx context.Context, repository, digest string) (*artifact.Artifact, error) {
func (m *Manager) GetByDigest(ctx context.Context, repository, digest string) (*artifact.Artifact, error) {
key, err := m.keyBuilder.Format("digest", digest)
if err != nil {
return nil, err
@ -130,7 +130,7 @@ func (m *manager) GetByDigest(ctx context.Context, repository, digest string) (*
return art, nil
}
func (m *manager) Delete(ctx context.Context, id int64) error {
func (m *Manager) Delete(ctx context.Context, id int64) error {
art, err := m.Get(ctx, id)
if err != nil {
return err
@ -144,7 +144,7 @@ func (m *manager) Delete(ctx context.Context, id int64) error {
return nil
}
func (m *manager) Update(ctx context.Context, artifact *artifact.Artifact, props ...string) error {
func (m *Manager) Update(ctx context.Context, artifact *artifact.Artifact, props ...string) error {
// pass on update operation
if err := m.delegator.Update(ctx, artifact, props...); err != nil {
return err
@ -154,7 +154,7 @@ func (m *manager) Update(ctx context.Context, artifact *artifact.Artifact, props
return nil
}
func (m *manager) UpdatePullTime(ctx context.Context, id int64, pullTime time.Time) error {
func (m *Manager) UpdatePullTime(ctx context.Context, id int64, pullTime time.Time) error {
art, err := m.Get(ctx, id)
if err != nil {
return err
@ -169,7 +169,7 @@ func (m *manager) UpdatePullTime(ctx context.Context, id int64, pullTime time.Ti
}
// cleanUp cleans up data in cache.
func (m *manager) cleanUp(ctx context.Context, art *artifact.Artifact) {
func (m *Manager) cleanUp(ctx context.Context, art *artifact.Artifact) {
// clean index by id
idIdx, err := m.keyBuilder.Format("id", art.ID)
if err != nil {
@ -193,7 +193,7 @@ func (m *manager) cleanUp(ctx context.Context, art *artifact.Artifact) {
}
// refreshCache refreshes cache.
func (m *manager) refreshCache(ctx context.Context, art *artifact.Artifact) {
func (m *Manager) refreshCache(ctx context.Context, art *artifact.Artifact) {
// refreshCache used for UpdatePullTime, because we have a background goroutine to
// update per artifact pull_time in period time, in that case, we don't want to lose
// cache every fixed interval, so prefer to use refreshCache instead of cleanUp.
@ -217,11 +217,11 @@ func (m *manager) refreshCache(ctx context.Context, art *artifact.Artifact) {
}
}
func (m *manager) ResourceType(ctx context.Context) string {
func (m *Manager) ResourceType(ctx context.Context) string {
return cached.ResourceTypeArtifact
}
func (m *manager) CountCache(ctx context.Context) (int64, error) {
func (m *Manager) CountCache(ctx context.Context) (int64, error) {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {
@ -231,11 +231,11 @@ func (m *manager) CountCache(ctx context.Context) (int64, error) {
return int64(len(keys)), nil
}
func (m *manager) DeleteCache(ctx context.Context, key string) error {
func (m *Manager) DeleteCache(ctx context.Context, key string) error {
return m.client().Delete(ctx, key)
}
func (m *manager) FlushAll(ctx context.Context) error {
func (m *Manager) FlushAll(ctx context.Context) error {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {

View File

@ -42,7 +42,7 @@ func (m *managerTestSuite) SetupTest() {
m.cachedManager = NewManager(
m.artMgr,
)
m.cachedManager.(*manager).client = func() cache.Cache { return m.cache }
m.cachedManager.(*Manager).client = func() cache.Cache { return m.cache }
m.ctx = context.TODO()
}

View File

@ -25,9 +25,9 @@ import (
"github.com/goharbor/harbor/src/pkg/cached"
)
var _ CachedManager = &manager{}
var _ CachedManager = &Manager{}
// ManifestManager is the manager for manifest.
// ManifestManager is the Manager for manifest.
type ManifestManager interface {
// Save manifest to cache.
Save(ctx context.Context, digest string, manifest []byte) error
@ -37,16 +37,16 @@ type ManifestManager interface {
Delete(ctx context.Context, digest string) error
}
// CachedManager is the interface combines raw resource manager and cached manager for better extension.
// CachedManager is the interface combines raw resource Manager and cached Manager for better extension.
type CachedManager interface {
// ManifestManager is the manager for manifest.
// ManifestManager is the Manager for manifest.
ManifestManager
// Manager is the common interface for resource cache.
cached.Manager
}
// manager is the cached manager implemented by redis.
type manager struct {
// Manager is the cached Manager implemented by redis.
type Manager struct {
// client returns the redis cache client.
client func() libcache.Cache
// keyBuilder builds cache object key.
@ -55,16 +55,16 @@ type manager struct {
lifetime time.Duration
}
// NewManager returns the redis cache manager.
func NewManager() *manager {
return &manager{
// NewManager returns the redis cache Manager.
func NewManager() *Manager {
return &Manager{
client: func() libcache.Cache { return libcache.Default() },
keyBuilder: cached.NewObjectKey(cached.ResourceTypeManifest),
lifetime: time.Duration(config.CacheExpireHours()) * time.Hour,
}
}
func (m *manager) Save(ctx context.Context, digest string, manifest []byte) error {
func (m *Manager) Save(ctx context.Context, digest string, manifest []byte) error {
key, err := m.keyBuilder.Format("digest", digest)
if err != nil {
return err
@ -73,7 +73,7 @@ func (m *manager) Save(ctx context.Context, digest string, manifest []byte) erro
return m.client().Save(ctx, key, manifest, m.lifetime)
}
func (m *manager) Get(ctx context.Context, digest string) ([]byte, error) {
func (m *Manager) Get(ctx context.Context, digest string) ([]byte, error) {
key, err := m.keyBuilder.Format("digest", digest)
if err != nil {
return nil, err
@ -87,7 +87,7 @@ func (m *manager) Get(ctx context.Context, digest string) ([]byte, error) {
return nil, err
}
func (m *manager) Delete(ctx context.Context, digest string) error {
func (m *Manager) Delete(ctx context.Context, digest string) error {
key, err := m.keyBuilder.Format("digest", digest)
if err != nil {
return err
@ -96,11 +96,11 @@ func (m *manager) Delete(ctx context.Context, digest string) error {
return retry.Retry(func() error { return m.client().Delete(ctx, key) })
}
func (m *manager) ResourceType(ctx context.Context) string {
func (m *Manager) ResourceType(ctx context.Context) string {
return cached.ResourceTypeManifest
}
func (m *manager) CountCache(ctx context.Context) (int64, error) {
func (m *Manager) CountCache(ctx context.Context) (int64, error) {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {
@ -110,11 +110,11 @@ func (m *manager) CountCache(ctx context.Context) (int64, error) {
return int64(len(keys)), nil
}
func (m *manager) DeleteCache(ctx context.Context, key string) error {
func (m *Manager) DeleteCache(ctx context.Context, key string) error {
return m.client().Delete(ctx, key)
}
func (m *manager) FlushAll(ctx context.Context) error {
func (m *Manager) FlushAll(ctx context.Context) error {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {

View File

@ -38,7 +38,7 @@ type managerTestSuite struct {
func (m *managerTestSuite) SetupTest() {
m.cache = &testcache.Cache{}
m.cachedManager = NewManager()
m.cachedManager.(*manager).client = func() cache.Cache { return m.cache }
m.cachedManager.(*Manager).client = func() cache.Cache { return m.cache }
m.ctx = context.TODO()
m.digest = "sha256:52f431d980baa76878329b68ddb69cb124c25efa6e206d8b0bd797a828f0528e"

View File

@ -30,18 +30,18 @@ import (
"github.com/goharbor/harbor/src/pkg/project/models"
)
var _ CachedManager = &manager{}
var _ CachedManager = &Manager{}
// CachedManager is the interface combines raw resource manager and cached manager for better extension.
// CachedManager is the interface combines raw resource Manager and cached Manager for better extension.
type CachedManager interface {
// Manager is the raw resource manager.
// Manager is the raw resource Manager.
project.Manager
// Manager is the common interface for resource cache.
cached.Manager
}
// manager is the cached manager implemented by redis.
type manager struct {
// Manager is the cached Manager implemented by redis.
type Manager struct {
// delegator delegates the raw crud to DAO.
delegator project.Manager
// client returns the redis cache client.
@ -52,9 +52,9 @@ type manager struct {
lifetime time.Duration
}
// NewManager returns the redis cache manager.
func NewManager(m project.Manager) *manager {
return &manager{
// NewManager returns the redis cache Manager.
func NewManager(m project.Manager) *Manager {
return &Manager{
delegator: m,
client: func() libcache.Cache { return libcache.Default() },
keyBuilder: cached.NewObjectKey(cached.ResourceTypeProject),
@ -62,23 +62,23 @@ func NewManager(m project.Manager) *manager {
}
}
func (m *manager) Create(ctx context.Context, project *models.Project) (int64, error) {
func (m *Manager) Create(ctx context.Context, project *models.Project) (int64, error) {
return m.delegator.Create(ctx, project)
}
func (m *manager) Count(ctx context.Context, query *q.Query) (total int64, err error) {
func (m *Manager) Count(ctx context.Context, query *q.Query) (total int64, err error) {
return m.delegator.Count(ctx, query)
}
func (m *manager) List(ctx context.Context, query *q.Query) ([]*models.Project, error) {
func (m *Manager) List(ctx context.Context, query *q.Query) ([]*models.Project, error) {
return m.delegator.List(ctx, query)
}
func (m *manager) ListRoles(ctx context.Context, projectID int64, userID int, groupIDs ...int) ([]int, error) {
func (m *Manager) ListRoles(ctx context.Context, projectID int64, userID int, groupIDs ...int) ([]int, error) {
return m.delegator.ListRoles(ctx, projectID, userID, groupIDs...)
}
func (m *manager) Delete(ctx context.Context, id int64) error {
func (m *Manager) Delete(ctx context.Context, id int64) error {
p, err := m.Get(ctx, id)
if err != nil {
return err
@ -93,7 +93,7 @@ func (m *manager) Delete(ctx context.Context, id int64) error {
return nil
}
func (m *manager) Get(ctx context.Context, idOrName interface{}) (*models.Project, error) {
func (m *Manager) Get(ctx context.Context, idOrName interface{}) (*models.Project, error) {
var (
key string
err error
@ -139,7 +139,7 @@ func (m *manager) Get(ctx context.Context, idOrName interface{}) (*models.Projec
}
// cleanUp cleans up data in cache.
func (m *manager) cleanUp(ctx context.Context, p *models.Project) {
func (m *Manager) cleanUp(ctx context.Context, p *models.Project) {
// clean index by id
idIdx, err := m.keyBuilder.Format("id", p.ProjectID)
if err != nil {
@ -162,11 +162,11 @@ func (m *manager) cleanUp(ctx context.Context, p *models.Project) {
}
}
func (m *manager) ResourceType(ctx context.Context) string {
func (m *Manager) ResourceType(ctx context.Context) string {
return cached.ResourceTypeProject
}
func (m *manager) CountCache(ctx context.Context) (int64, error) {
func (m *Manager) CountCache(ctx context.Context) (int64, error) {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {
@ -176,11 +176,11 @@ func (m *manager) CountCache(ctx context.Context) (int64, error) {
return int64(len(keys)), nil
}
func (m *manager) DeleteCache(ctx context.Context, key string) error {
func (m *Manager) DeleteCache(ctx context.Context, key string) error {
return m.client().Delete(ctx, key)
}
func (m *manager) FlushAll(ctx context.Context) error {
func (m *Manager) FlushAll(ctx context.Context) error {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {

View File

@ -43,7 +43,7 @@ func (m *managerTestSuite) SetupTest() {
m.cachedManager = NewManager(
m.projectMgr,
)
m.cachedManager.(*manager).client = func() cache.Cache { return m.cache }
m.cachedManager.(*Manager).client = func() cache.Cache { return m.cache }
m.ctx = context.TODO()
}

View File

@ -29,18 +29,18 @@ import (
"github.com/goharbor/harbor/src/pkg/project/metadata/models"
)
var _ CachedManager = &manager{}
var _ CachedManager = &Manager{}
// CachedManager is the interface combines raw resource manager and cached manager for better extension.
// CachedManager is the interface combines raw resource Manager and cached Manager for better extension.
type CachedManager interface {
// Manager is the raw resource manager.
// Manager is the raw resource Manager.
metadata.Manager
// Manager is the common interface for resource cache.
cached.Manager
}
// manager is the cached manager implemented by redis.
type manager struct {
// Manager is the cached Manager implemented by redis.
type Manager struct {
// delegator delegates the raw crud to DAO.
delegator metadata.Manager
// client returns the redis cache client.
@ -51,9 +51,9 @@ type manager struct {
lifetime time.Duration
}
// NewManager returns the redis cache manager.
func NewManager(m metadata.Manager) *manager {
return &manager{
// NewManager returns the redis cache Manager.
func NewManager(m metadata.Manager) *Manager {
return &Manager{
delegator: m,
client: func() libcache.Cache { return libcache.Default() },
keyBuilder: cached.NewObjectKey(cached.ResourceTypeProjectMeta),
@ -61,15 +61,15 @@ func NewManager(m metadata.Manager) *manager {
}
}
func (m *manager) Add(ctx context.Context, projectID int64, meta map[string]string) error {
func (m *Manager) Add(ctx context.Context, projectID int64, meta map[string]string) error {
return m.delegator.Add(ctx, projectID, meta)
}
func (m *manager) List(ctx context.Context, name string, value string) ([]*models.ProjectMetadata, error) {
func (m *Manager) List(ctx context.Context, name string, value string) ([]*models.ProjectMetadata, error) {
return m.delegator.List(ctx, name, value)
}
func (m *manager) Get(ctx context.Context, projectID int64, meta ...string) (map[string]string, error) {
func (m *Manager) Get(ctx context.Context, projectID int64, meta ...string) (map[string]string, error) {
key, err := m.keyBuilder.Format("projectID", projectID, "meta", strings.Join(meta, ","))
if err != nil {
return nil, err
@ -95,7 +95,7 @@ func (m *manager) Get(ctx context.Context, projectID int64, meta ...string) (map
return result, nil
}
func (m *manager) Delete(ctx context.Context, projectID int64, meta ...string) error {
func (m *Manager) Delete(ctx context.Context, projectID int64, meta ...string) error {
// pass on delete operation
if err := m.delegator.Delete(ctx, projectID, meta...); err != nil {
return err
@ -105,7 +105,7 @@ func (m *manager) Delete(ctx context.Context, projectID int64, meta ...string) e
return nil
}
func (m *manager) Update(ctx context.Context, projectID int64, meta map[string]string) error {
func (m *Manager) Update(ctx context.Context, projectID int64, meta map[string]string) error {
if err := m.delegator.Update(ctx, projectID, meta); err != nil {
return err
}
@ -130,7 +130,7 @@ func (m *manager) Update(ctx context.Context, projectID int64, meta map[string]s
}
// cleanUp cleans up data in cache.
func (m *manager) cleanUp(ctx context.Context, projectID int64, meta ...string) {
func (m *Manager) cleanUp(ctx context.Context, projectID int64, meta ...string) {
key, err := m.keyBuilder.Format("projectID", projectID, "meta", strings.Join(meta, ","))
if err != nil {
log.Errorf("format project metadata key error: %v", err)
@ -142,11 +142,11 @@ func (m *manager) cleanUp(ctx context.Context, projectID int64, meta ...string)
}
}
func (m *manager) ResourceType(ctx context.Context) string {
func (m *Manager) ResourceType(ctx context.Context) string {
return cached.ResourceTypeProjectMeta
}
func (m *manager) CountCache(ctx context.Context) (int64, error) {
func (m *Manager) CountCache(ctx context.Context) (int64, error) {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {
@ -156,11 +156,11 @@ func (m *manager) CountCache(ctx context.Context) (int64, error) {
return int64(len(keys)), nil
}
func (m *manager) DeleteCache(ctx context.Context, key string) error {
func (m *Manager) DeleteCache(ctx context.Context, key string) error {
return m.client().Delete(ctx, key)
}
func (m *manager) FlushAll(ctx context.Context) error {
func (m *Manager) FlushAll(ctx context.Context) error {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {

View File

@ -42,7 +42,7 @@ func (m *managerTestSuite) SetupTest() {
m.cachedManager = NewManager(
m.projectMetaMgr,
)
m.cachedManager.(*manager).client = func() cache.Cache { return m.cache }
m.cachedManager.(*Manager).client = func() cache.Cache { return m.cache }
m.ctx = context.TODO()
}

View File

@ -29,18 +29,18 @@ import (
"github.com/goharbor/harbor/src/pkg/repository/model"
)
var _ CachedManager = &manager{}
var _ CachedManager = &Manager{}
// CachedManager is the interface combines raw resource manager and cached manager for better extension.
// CachedManager is the interface combines raw resource Manager and cached Manager for better extension.
type CachedManager interface {
// Manager is the raw resource manager.
// Manager is the raw resource Manager.
repository.Manager
// Manager is the common interface for resource cache.
cached.Manager
}
// manager is the cached manager implemented by redis.
type manager struct {
// Manager is the cached Manager implemented by redis.
type Manager struct {
// delegator delegates the raw crud to DAO.
delegator repository.Manager
// client returns the redis cache client.
@ -51,9 +51,9 @@ type manager struct {
lifetime time.Duration
}
// NewManager returns the redis cache manager.
func NewManager(m repository.Manager) *manager {
return &manager{
// NewManager returns the redis cache Manager.
func NewManager(m repository.Manager) *Manager {
return &Manager{
delegator: m,
client: func() libcache.Cache { return libcache.Default() },
keyBuilder: cached.NewObjectKey(cached.ResourceTypeRepository),
@ -61,23 +61,23 @@ func NewManager(m repository.Manager) *manager {
}
}
func (m *manager) Count(ctx context.Context, query *q.Query) (int64, error) {
func (m *Manager) Count(ctx context.Context, query *q.Query) (int64, error) {
return m.delegator.Count(ctx, query)
}
func (m *manager) List(ctx context.Context, query *q.Query) ([]*model.RepoRecord, error) {
func (m *Manager) List(ctx context.Context, query *q.Query) ([]*model.RepoRecord, error) {
return m.delegator.List(ctx, query)
}
func (m *manager) Create(ctx context.Context, repo *model.RepoRecord) (int64, error) {
func (m *Manager) Create(ctx context.Context, repo *model.RepoRecord) (int64, error) {
return m.delegator.Create(ctx, repo)
}
func (m *manager) NonEmptyRepos(ctx context.Context) ([]*model.RepoRecord, error) {
func (m *Manager) NonEmptyRepos(ctx context.Context) ([]*model.RepoRecord, error) {
return m.delegator.NonEmptyRepos(ctx)
}
func (m *manager) Get(ctx context.Context, id int64) (*model.RepoRecord, error) {
func (m *Manager) Get(ctx context.Context, id int64) (*model.RepoRecord, error) {
key, err := m.keyBuilder.Format("id", id)
if err != nil {
return nil, err
@ -103,7 +103,7 @@ func (m *manager) Get(ctx context.Context, id int64) (*model.RepoRecord, error)
return repo, nil
}
func (m *manager) GetByName(ctx context.Context, name string) (*model.RepoRecord, error) {
func (m *Manager) GetByName(ctx context.Context, name string) (*model.RepoRecord, error) {
key, err := m.keyBuilder.Format("name", name)
if err != nil {
return nil, err
@ -127,7 +127,7 @@ func (m *manager) GetByName(ctx context.Context, name string) (*model.RepoRecord
return repo, nil
}
func (m *manager) Delete(ctx context.Context, id int64) error {
func (m *Manager) Delete(ctx context.Context, id int64) error {
repo, err := m.Get(ctx, id)
if err != nil {
return err
@ -141,7 +141,7 @@ func (m *manager) Delete(ctx context.Context, id int64) error {
return nil
}
func (m *manager) Update(ctx context.Context, repo *model.RepoRecord, props ...string) error {
func (m *Manager) Update(ctx context.Context, repo *model.RepoRecord, props ...string) error {
// pass on update operation
if err := m.delegator.Update(ctx, repo, props...); err != nil {
return err
@ -151,7 +151,7 @@ func (m *manager) Update(ctx context.Context, repo *model.RepoRecord, props ...s
return nil
}
func (m *manager) AddPullCount(ctx context.Context, id int64, count uint64) error {
func (m *Manager) AddPullCount(ctx context.Context, id int64, count uint64) error {
repo, err := m.Get(ctx, id)
if err != nil {
return err
@ -166,7 +166,7 @@ func (m *manager) AddPullCount(ctx context.Context, id int64, count uint64) erro
}
// cleanUp cleans up data in cache.
func (m *manager) cleanUp(ctx context.Context, repo *model.RepoRecord) {
func (m *Manager) cleanUp(ctx context.Context, repo *model.RepoRecord) {
// clean index by id
idIdx, err := m.keyBuilder.Format("id", repo.RepositoryID)
if err != nil {
@ -190,7 +190,7 @@ func (m *manager) cleanUp(ctx context.Context, repo *model.RepoRecord) {
}
// refreshCache refreshes cache.
func (m *manager) refreshCache(ctx context.Context, repo *model.RepoRecord) {
func (m *Manager) refreshCache(ctx context.Context, repo *model.RepoRecord) {
// refreshCache used for AddPullCount, because we have a background goroutine to
// update per repo's pull_count in period time, in that case, we don't want to lose
// cache every fixed interval, so prefer to use refreshCache instead of cleanUp.
@ -214,11 +214,11 @@ func (m *manager) refreshCache(ctx context.Context, repo *model.RepoRecord) {
}
}
func (m *manager) ResourceType(ctx context.Context) string {
func (m *Manager) ResourceType(ctx context.Context) string {
return cached.ResourceTypeRepository
}
func (m *manager) CountCache(ctx context.Context) (int64, error) {
func (m *Manager) CountCache(ctx context.Context) (int64, error) {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {
@ -228,11 +228,11 @@ func (m *manager) CountCache(ctx context.Context) (int64, error) {
return int64(len(keys)), nil
}
func (m *manager) DeleteCache(ctx context.Context, key string) error {
func (m *Manager) DeleteCache(ctx context.Context, key string) error {
return m.client().Delete(ctx, key)
}
func (m *manager) FlushAll(ctx context.Context) error {
func (m *Manager) FlushAll(ctx context.Context) error {
// prefix is resource type
keys, err := m.client().Keys(ctx, m.ResourceType(ctx))
if err != nil {

View File

@ -41,7 +41,7 @@ func (m *managerTestSuite) SetupTest() {
m.cachedManager = NewManager(
m.repoMgr,
)
m.cachedManager.(*manager).client = func() cache.Cache { return m.cache }
m.cachedManager.(*Manager).client = func() cache.Cache { return m.cache }
m.ctx = context.TODO()
}

View File

@ -180,10 +180,10 @@ func (c *CfgManager) ValidateCfg(ctx context.Context, cfgs map[string]interface{
for key, value := range cfgs {
item, exist := metadata.Instance().GetByName(key)
if !exist {
return errors.New(fmt.Sprintf("invalid config, item not defined in metadatalist, %v", key))
return fmt.Errorf("invalid config, item not defined in metadatalist, %v", key)
}
if item.Scope == metadata.SystemScope {
return errors.New(fmt.Sprintf("system config items cannot be updated, item: %v", key))
return fmt.Errorf("system config items cannot be updated, item: %v", key)
}
strVal := utils.GetStrValueOfAnyType(value)
_, err := metadata.NewCfgValue(key, strVal)

View File

@ -114,11 +114,11 @@ func (c *Client) ListProjects(name string) ([]*Project, error) {
}
// ListProjectsWithQuery lists projects with query
func (c *Client) ListProjectsWithQuery(q string, with_detail bool) ([]*Project, error) {
func (c *Client) ListProjectsWithQuery(q string, withDetail bool) ([]*Project, error) {
projects := []*Project{}
// if old version does not support query, it will fallback to normal
// list(list all).
url := fmt.Sprintf("%s/projects?q=%s&with_detail=%t", c.BasePath(), url.QueryEscape(q), with_detail)
url := fmt.Sprintf("%s/projects?q=%s&with_detail=%t", c.BasePath(), url.QueryEscape(q), withDetail)
if err := c.C.GetAndIteratePagination(url, &projects); err != nil {
return nil, err
}

View File

@ -24,7 +24,7 @@ import (
)
var (
errInvalidTcrEndpoint error = errors.New("[tencent-tcr.newAdapter] Invalid TCR instance endpoint")
errInvalidTcrEndpoint = errors.New("[tencent-tcr.newAdapter] Invalid TCR instance endpoint")
)
func init() {

View File

@ -90,7 +90,7 @@ func NewManager() Manager {
}
func (mgr *systemArtifactManager) Create(ctx context.Context, artifactRecord *model.SystemArtifact, reader io.Reader) (int64, error) {
var artifactId int64
var artifactID int64
// the entire create operation is executed within a transaction to ensure that any failures
// during the blob creation or tracking record creation result in a rollback of the transaction
@ -105,11 +105,11 @@ func (mgr *systemArtifactManager) Create(ctx context.Context, artifactRecord *mo
if err != nil {
return err
}
artifactId = id
artifactID = id
return nil
})(ctx)
return artifactId, createError
return artifactID, createError
}
func (mgr *systemArtifactManager) Read(ctx context.Context, vendor string, repository string, digest string) (io.ReadCloser, error) {
@ -242,7 +242,7 @@ func (mgr *systemArtifactManager) cleanup(ctx context.Context, criteria Selector
return totalRecordsDeleted, totalReclaimedSize, err
}
totalReclaimedSize += record.Size
totalRecordsDeleted += 1
totalRecordsDeleted++
}
return totalRecordsDeleted, totalReclaimedSize, nil
}

View File

@ -351,7 +351,7 @@ func (e *executionDAO) querySetter(ctx context.Context, query *q.Query) (orm.Que
args = append(args, item)
}
args = append(args, value)
inClause, err := orm.CreateInClause(ctx, buildInClauseSqlForExtraAttrs(keys), args...)
inClause, err := orm.CreateInClause(ctx, buildInClauseSQLForExtraAttrs(keys), args...)
if err != nil {
return nil, err
}
@ -362,7 +362,7 @@ func (e *executionDAO) querySetter(ctx context.Context, query *q.Query) (orm.Que
}
// Param keys is strings.Split() after trim "extra_attrs."/"ExtraAttrs." prefix
func buildInClauseSqlForExtraAttrs(keys []string) string {
func buildInClauseSQLForExtraAttrs(keys []string) string {
switch len(keys) {
case 0:
// won't fall into this case, as the if condition on "keyPrefix == key"

View File

@ -330,7 +330,7 @@ func TestExecutionDAOSuite(t *testing.T) {
suite.Run(t, &executionDAOTestSuite{})
}
func Test_buildInClauseSqlForExtraAttrs(t *testing.T) {
func Test_buildInClauseSQLForExtraAttrs(t *testing.T) {
type args struct {
keys []string
}
@ -346,8 +346,8 @@ func Test_buildInClauseSqlForExtraAttrs(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := buildInClauseSqlForExtraAttrs(tt.args.keys); got != tt.want {
t.Errorf("buildInClauseSqlForExtraAttrs() = %v, want %v", got, tt.want)
if got := buildInClauseSQLForExtraAttrs(tt.args.keys); got != tt.want {
t.Errorf("buildInClauseSQLForExtraAttrs() = %v, want %v", got, tt.want)
}
})
}

View File

@ -29,7 +29,7 @@ var (
mediaTypeCosignLayer = "application/vnd.dev.cosign.simplesigning.v1+json"
)
// CosignSignatureMiddleware middleware to record the linkeage of artifact and its accessory
// SignatureMiddleware middleware to record the linkeage of artifact and its accessory
/* PUT /v2/library/hello-world/manifests/sha256-1b26826f602946860c279fce658f31050cff2c596583af237d971f4629b57792.sig
{
"schemaVersion":2,
@ -50,7 +50,7 @@ var (
]
}
*/
func CosignSignatureMiddleware() func(http.Handler) http.Handler {
func SignatureMiddleware() func(http.Handler) http.Handler {
return middleware.AfterResponse(func(w http.ResponseWriter, r *http.Request, statusCode int) error {
if statusCode != http.StatusCreated {
return nil

View File

@ -15,6 +15,8 @@ import (
"github.com/goharbor/harbor/src/pkg/accessory"
"github.com/goharbor/harbor/src/pkg/accessory/model"
accessorymodel "github.com/goharbor/harbor/src/pkg/accessory/model"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/base"
_ "github.com/goharbor/harbor/src/pkg/accessory/model/cosign"
"github.com/goharbor/harbor/src/pkg/artifact"
"github.com/goharbor/harbor/src/pkg/distribution"
htesting "github.com/goharbor/harbor/src/testing"
@ -137,7 +139,7 @@ func (suite *MiddlewareTestSuite) TestCosignSignature() {
res := httptest.NewRecorder()
next := suite.NextHandler(http.StatusCreated, map[string]string{"Docker-Content-Digest": descriptor.Digest.String()})
CosignSignatureMiddleware()(next).ServeHTTP(res, req)
SignatureMiddleware()(next).ServeHTTP(res, req)
suite.Equal(http.StatusCreated, res.Code)
accs, err := accessory.Mgr.List(suite.Context(), &q.Query{
@ -166,7 +168,7 @@ func (suite *MiddlewareTestSuite) TestCosignSignatureDup() {
res := httptest.NewRecorder()
next := suite.NextHandler(http.StatusCreated, map[string]string{"Docker-Content-Digest": descriptor.Digest.String()})
CosignSignatureMiddleware()(next).ServeHTTP(res, req)
SignatureMiddleware()(next).ServeHTTP(res, req)
suite.Equal(http.StatusCreated, res.Code)
accs, err := accessory.Mgr.List(suite.Context(), &q.Query{

View File

@ -79,7 +79,7 @@ func RegisterRoutes() {
Middleware(repoproxy.DisableBlobAndManifestUploadMiddleware()).
Middleware(immutable.Middleware()).
Middleware(quota.PutManifestMiddleware()).
Middleware(cosign.CosignSignatureMiddleware()).
Middleware(cosign.SignatureMiddleware()).
Middleware(blob.PutManifestMiddleware()).
HandlerFunc(putManifest)
// blob head