github.com/kubeshop/testkube@v1.17.23/pkg/event/loader.go (about) 1 package event 2 3 import ( 4 "go.uber.org/zap" 5 6 "github.com/kubeshop/testkube/pkg/event/kind/common" 7 "github.com/kubeshop/testkube/pkg/log" 8 ) 9 10 func NewLoader() *Loader { 11 return &Loader{ 12 Log: log.DefaultLogger, 13 Loaders: make([]common.ListenerLoader, 0), 14 } 15 } 16 17 // Loader updates list of available listeners in the background as we don't want to load them on each event 18 type Loader struct { 19 Log *zap.SugaredLogger 20 Loaders []common.ListenerLoader 21 } 22 23 // Register registers new listener reconciler 24 func (s *Loader) Register(loader common.ListenerLoader) { 25 s.Loaders = append(s.Loaders, loader) 26 } 27 28 // Reconcile loop for reconciling listeners from different sources 29 func (s *Loader) Reconcile() (listeners common.Listeners) { 30 listeners = make(common.Listeners, 0) 31 for _, loader := range s.Loaders { 32 l, err := loader.Load() 33 s.Log.Debugf("Got listeners from loader %T %+v\n", loader, l) 34 35 if err != nil { 36 s.Log.Errorw("error loading listeners", "error", err) 37 continue 38 } 39 listeners = append(listeners, l...) 40 } 41 42 return listeners 43 }