passing in credentials helper
parent
963373bfc7
commit
a11c1788b7
|
@ -5,6 +5,7 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/keel-hq/keel/extension/credentialshelper"
|
||||||
"github.com/keel-hq/keel/provider"
|
"github.com/keel-hq/keel/provider"
|
||||||
"github.com/keel-hq/keel/secrets"
|
"github.com/keel-hq/keel/secrets"
|
||||||
"github.com/keel-hq/keel/types"
|
"github.com/keel-hq/keel/types"
|
||||||
|
@ -32,6 +33,8 @@ type DefaultManager struct {
|
||||||
|
|
||||||
secretsGetter secrets.Getter
|
secretsGetter secrets.Getter
|
||||||
|
|
||||||
|
credentialsHelper credentialshelper.CredentialsHelper
|
||||||
|
|
||||||
// repository watcher
|
// repository watcher
|
||||||
watcher Watcher
|
watcher Watcher
|
||||||
|
|
||||||
|
@ -45,10 +48,11 @@ type DefaultManager struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPollManager - new default poller
|
// NewPollManager - new default poller
|
||||||
func NewPollManager(providers provider.Providers, watcher Watcher, secretsGetter secrets.Getter) *DefaultManager {
|
func NewPollManager(providers provider.Providers, watcher Watcher, secretsGetter secrets.Getter, credentialsHelper credentialshelper.CredentialsHelper) *DefaultManager {
|
||||||
return &DefaultManager{
|
return &DefaultManager{
|
||||||
providers: providers,
|
providers: providers,
|
||||||
secretsGetter: secretsGetter,
|
secretsGetter: secretsGetter,
|
||||||
|
credentialsHelper: credentialsHelper,
|
||||||
watcher: watcher,
|
watcher: watcher,
|
||||||
mu: &sync.Mutex{},
|
mu: &sync.Mutex{},
|
||||||
scanTick: 55,
|
scanTick: 55,
|
||||||
|
@ -104,9 +108,11 @@ func (s *DefaultManager) scan(ctx context.Context) error {
|
||||||
|
|
||||||
tracked++
|
tracked++
|
||||||
|
|
||||||
|
var imageCreds *types.Credentials
|
||||||
|
|
||||||
// anonymous credentials
|
// anonymous credentials
|
||||||
creds := &types.Credentials{}
|
creds := &types.Credentials{}
|
||||||
imageCreds, err := s.secretsGetter.Get(trackedImage)
|
imageCreds, err = s.secretsGetter.Get(trackedImage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithFields(log.Fields{
|
log.WithFields(log.Fields{
|
||||||
"error": err,
|
"error": err,
|
||||||
|
@ -117,6 +123,21 @@ func (s *DefaultManager) scan(ctx context.Context) error {
|
||||||
creds = imageCreds
|
creds = imageCreds
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO: refactor to either recreate it every 10 hours (12 hours expiration) or better to retrieve creds
|
||||||
|
// just before quering the registry
|
||||||
|
if imageCreds.Username == "" && imageCreds.Password == "" {
|
||||||
|
registryCreds, err := s.credentialsHelper.GetCredentials(trackedImage.Image.Registry())
|
||||||
|
if err != nil {
|
||||||
|
log.WithFields(log.Fields{
|
||||||
|
"error": err,
|
||||||
|
"registry": trackedImage.Image.Registry(),
|
||||||
|
"image": trackedImage.Image.Remote(),
|
||||||
|
}).Error("trigger.poll.manager: failed to get registry credentials")
|
||||||
|
} else {
|
||||||
|
creds = registryCreds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = s.watcher.Watch(trackedImage.Image.Remote(), trackedImage.PollSchedule, creds.Username, creds.Password)
|
err = s.watcher.Watch(trackedImage.Image.Remote(), trackedImage.PollSchedule, creds.Username, creds.Password)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.WithFields(log.Fields{
|
log.WithFields(log.Fields{
|
||||||
|
|
Loading…
Reference in New Issue