passing in credentials helper

feature/ecr_registry_auth
Karolis Rusenas 2018-04-24 22:46:27 +01:00
parent 963373bfc7
commit a11c1788b7
1 changed files with 28 additions and 7 deletions

View File

@ -5,6 +5,7 @@ import (
"sync"
"time"
"github.com/keel-hq/keel/extension/credentialshelper"
"github.com/keel-hq/keel/provider"
"github.com/keel-hq/keel/secrets"
"github.com/keel-hq/keel/types"
@ -32,6 +33,8 @@ type DefaultManager struct {
secretsGetter secrets.Getter
credentialsHelper credentialshelper.CredentialsHelper
// repository watcher
watcher Watcher
@ -45,10 +48,11 @@ type DefaultManager struct {
}
// 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{
providers: providers,
secretsGetter: secretsGetter,
credentialsHelper: credentialsHelper,
watcher: watcher,
mu: &sync.Mutex{},
scanTick: 55,
@ -104,9 +108,11 @@ func (s *DefaultManager) scan(ctx context.Context) error {
tracked++
var imageCreds *types.Credentials
// anonymous credentials
creds := &types.Credentials{}
imageCreds, err := s.secretsGetter.Get(trackedImage)
imageCreds, err = s.secretsGetter.Get(trackedImage)
if err != nil {
log.WithFields(log.Fields{
"error": err,
@ -117,6 +123,21 @@ func (s *DefaultManager) scan(ctx context.Context) error {
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)
if err != nil {
log.WithFields(log.Fields{