subscribing to approvals
parent
d7774d72fc
commit
f7532b50a2
|
@ -1,6 +1,9 @@
|
|||
package provider
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/rusenask/keel/approvals"
|
||||
"github.com/rusenask/keel/types"
|
||||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
|
@ -23,7 +26,7 @@ type Providers interface {
|
|||
}
|
||||
|
||||
// New - new providers registry
|
||||
func New(providers []Provider) *DefaultProviders {
|
||||
func New(providers []Provider, approvalsManager approvals.Manager) *DefaultProviders {
|
||||
pvs := make(map[string]Provider)
|
||||
|
||||
for _, p := range providers {
|
||||
|
@ -31,14 +34,46 @@ func New(providers []Provider) *DefaultProviders {
|
|||
log.Infof("provider.defaultProviders: provider '%s' registered", p.GetName())
|
||||
}
|
||||
|
||||
return &DefaultProviders{
|
||||
providers: pvs,
|
||||
dp := &DefaultProviders{
|
||||
providers: pvs,
|
||||
approvalsManager: approvalsManager,
|
||||
stopCh: make(chan struct{}),
|
||||
}
|
||||
|
||||
// subscribing to approved events
|
||||
// TODO: create Start() function for DefaultProviders
|
||||
go dp.subscribeToApproved()
|
||||
|
||||
return dp
|
||||
}
|
||||
|
||||
// DefaultProviders - default providers container
|
||||
type DefaultProviders struct {
|
||||
providers map[string]Provider
|
||||
providers map[string]Provider
|
||||
approvalsManager approvals.Manager
|
||||
stopCh chan struct{}
|
||||
}
|
||||
|
||||
func (p *DefaultProviders) subscribeToApproved() {
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
approvedCh, err := p.approvalsManager.SubscribeApproved(ctx)
|
||||
if err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"error": err,
|
||||
}).Fatal("provider.subscribeToApproved: failed to subscribe for approved reqs")
|
||||
}
|
||||
|
||||
for {
|
||||
select {
|
||||
case approval := <-approvedCh:
|
||||
p.Submit(*approval.Event)
|
||||
case <-p.stopCh:
|
||||
cancel()
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Submit - submit event to all providers
|
||||
|
@ -51,7 +86,7 @@ func (p *DefaultProviders) Submit(event types.Event) error {
|
|||
"provider": provider.GetName(),
|
||||
"event": event.Repository,
|
||||
"trigger": event.TriggerName,
|
||||
}).Error("provider.defaultProviders: submit event failed")
|
||||
}).Error("provider.Submit: submit event failed")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue