mirror of
https://github.com/project-zot/zot.git
synced 2025-01-06 22:40:28 -05:00
612a12e5a8
Signed-off-by: Petu Eusebiu <peusebiu@cisco.com>
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
//go:build sync
|
|
// +build sync
|
|
|
|
package extensions
|
|
|
|
import (
|
|
"zotregistry.io/zot/pkg/api/config"
|
|
"zotregistry.io/zot/pkg/extensions/sync"
|
|
"zotregistry.io/zot/pkg/log"
|
|
"zotregistry.io/zot/pkg/meta/repodb"
|
|
"zotregistry.io/zot/pkg/scheduler"
|
|
"zotregistry.io/zot/pkg/storage"
|
|
)
|
|
|
|
func EnableSyncExtension(config *config.Config, repoDB repodb.RepoDB,
|
|
storeController storage.StoreController, sch *scheduler.Scheduler, log log.Logger,
|
|
) (*sync.BaseOnDemand, error) {
|
|
if config.Extensions.Sync != nil && *config.Extensions.Sync.Enable {
|
|
onDemand := sync.NewOnDemand(log)
|
|
|
|
for _, registryConfig := range config.Extensions.Sync.Registries {
|
|
isPeriodical := len(registryConfig.Content) != 0 && registryConfig.PollInterval != 0
|
|
isOnDemand := registryConfig.OnDemand
|
|
|
|
if isPeriodical || isOnDemand {
|
|
service, err := sync.New(registryConfig, config.Extensions.Sync.CredentialsFile,
|
|
storeController, repoDB, log)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if isPeriodical {
|
|
// add to task scheduler periodic sync
|
|
gen := sync.NewTaskGenerator(service, log)
|
|
sch.SubmitGenerator(gen, registryConfig.PollInterval, scheduler.MediumPriority)
|
|
}
|
|
|
|
if isOnDemand {
|
|
// onDemand services used in routes.go
|
|
onDemand.Add(service)
|
|
}
|
|
}
|
|
}
|
|
|
|
return onDemand, nil
|
|
}
|
|
|
|
log.Info().Msg("Sync registries config not provided or disabled, skipping sync")
|
|
|
|
return nil, nil //nolint: nilnil
|
|
}
|