provider interface update
parent
f147d6ea25
commit
72d7fc6092
|
@ -9,13 +9,17 @@ import (
|
|||
// Provider - generic provider interface
|
||||
type Provider interface {
|
||||
Submit(event types.Event) error
|
||||
TrackedImages() ([]*types.TrackedImage, error)
|
||||
GetName() string
|
||||
Stop()
|
||||
}
|
||||
|
||||
// Providers - available providers
|
||||
type Providers interface {
|
||||
Submit(event types.Event) error
|
||||
TrackedImages() ([]*types.TrackedImage, error)
|
||||
List() []string // list all providers
|
||||
Stop() // stop all providers
|
||||
}
|
||||
|
||||
// New - new providers registry
|
||||
|
@ -24,6 +28,7 @@ func New(providers []Provider) *DefaultProviders {
|
|||
|
||||
for _, p := range providers {
|
||||
pvs[p.GetName()] = p
|
||||
log.Infof("provider.DefaultProviders: provider '%s' registered", p.GetName())
|
||||
}
|
||||
|
||||
return &DefaultProviders{
|
||||
|
@ -31,10 +36,12 @@ func New(providers []Provider) *DefaultProviders {
|
|||
}
|
||||
}
|
||||
|
||||
// DefaultProviders - default providers container
|
||||
type DefaultProviders struct {
|
||||
providers map[string]Provider
|
||||
}
|
||||
|
||||
// Submit - submit event to all providers
|
||||
func (p *DefaultProviders) Submit(event types.Event) error {
|
||||
for _, provider := range p.providers {
|
||||
err := provider.Submit(event)
|
||||
|
@ -51,6 +58,25 @@ func (p *DefaultProviders) Submit(event types.Event) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// TrackedImages - get tracked images for provider
|
||||
func (p *DefaultProviders) TrackedImages() ([]*types.TrackedImage, error) {
|
||||
var trackedImages []*types.TrackedImage
|
||||
for _, provider := range p.providers {
|
||||
ti, err := provider.TrackedImages()
|
||||
if err != nil {
|
||||
log.WithFields(log.Fields{
|
||||
"error": err,
|
||||
"provider": provider.GetName(),
|
||||
}).Error("provider.DefaultProviders: failed to get tracked images")
|
||||
continue
|
||||
}
|
||||
trackedImages = append(trackedImages, ti...)
|
||||
}
|
||||
|
||||
return trackedImages, nil
|
||||
}
|
||||
|
||||
// List - list available providers
|
||||
func (p *DefaultProviders) List() []string {
|
||||
list := []string{}
|
||||
for name := range p.providers {
|
||||
|
@ -58,3 +84,11 @@ func (p *DefaultProviders) List() []string {
|
|||
}
|
||||
return list
|
||||
}
|
||||
|
||||
// Stop - stop all providers
|
||||
func (p *DefaultProviders) Stop() {
|
||||
for _, provider := range p.providers {
|
||||
provider.Stop()
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue