FIX: docker registry notifications bulk events can include different type events

feature/policy_from_annotations
Karolis Rusenas 2018-11-07 22:52:37 +00:00
parent 2175a981a3
commit 1dccced20d
2 changed files with 40 additions and 11 deletions

View File

@ -225,7 +225,15 @@ func setupProviders(k8sImplementer kubernetes.Implementer, sender notification.S
"error": err, "error": err,
}).Fatal("main.setupProviders: failed to create kubernetes provider") }).Fatal("main.setupProviders: failed to create kubernetes provider")
} }
go k8sProvider.Start() go func() {
err := k8sProvider.Start()
if err != nil {
log.WithFields(log.Fields{
"error": err,
}).Fatal("kubernetes provider stopped with an error")
}
}()
enabledProviders = append(enabledProviders, k8sProvider) enabledProviders = append(enabledProviders, k8sProvider)
if os.Getenv(EnvHelmProvider) == "1" { if os.Getenv(EnvHelmProvider) == "1" {
@ -233,7 +241,15 @@ func setupProviders(k8sImplementer kubernetes.Implementer, sender notification.S
helmImplementer := helm.NewHelmImplementer(tillerAddr) helmImplementer := helm.NewHelmImplementer(tillerAddr)
helmProvider := helm.NewProvider(helmImplementer, sender, approvalsManager) helmProvider := helm.NewProvider(helmImplementer, sender, approvalsManager)
go helmProvider.Start() go func() {
err := helmProvider.Start()
if err != nil {
log.WithFields(log.Fields{
"error": err,
}).Fatal("helm provider stopped with an error")
}
}()
enabledProviders = append(enabledProviders, helmProvider) enabledProviders = append(enabledProviders, helmProvider)
} }
@ -253,7 +269,15 @@ func setupTriggers(ctx context.Context, providers provider.Providers, approvalsM
ApprovalManager: approvalsManager, ApprovalManager: approvalsManager,
}) })
go whs.Start() go func() {
err := whs.Start()
if err != nil {
log.WithFields(log.Fields{
"error": err,
"port": types.KeelDefaultPort,
}).Fatal("trigger server stopped")
}
}()
// checking whether pubsub (GCR) trigger is enabled // checking whether pubsub (GCR) trigger is enabled
if os.Getenv(EnvTriggerPubSub) != "" { if os.Getenv(EnvTriggerPubSub) != "" {

View File

@ -2,7 +2,6 @@ package http
import ( import (
"encoding/json" "encoding/json"
"fmt"
"net/http" "net/http"
"time" "time"
@ -99,18 +98,18 @@ func (s *TriggerServer) registryNotificationHandler(resp http.ResponseWriter, re
return return
} }
log.WithFields(log.Fields{
"event": rn,
}).Debug("registryNotificationHandler: received event, looking for a push tag")
for _, e := range rn.Events { for _, e := range rn.Events {
if e.Action != "push" { if e.Action != "push" {
// ignoring non-push events continue
resp.WriteHeader(200)
return
} }
if e.Target.Tag == "" { if e.Target.Tag == "" {
resp.WriteHeader(http.StatusBadRequest) continue
fmt.Fprintf(resp, "tag cannot be empty")
return
} }
dockerURL := e.Request.Host + "/" + e.Target.Repository dockerURL := e.Request.Host + "/" + e.Target.Repository
@ -122,10 +121,16 @@ func (s *TriggerServer) registryNotificationHandler(resp http.ResponseWriter, re
event.Repository.Tag = e.Target.Tag event.Repository.Tag = e.Target.Tag
event.Repository.Digest = e.Target.Digest event.Repository.Digest = e.Target.Digest
log.WithFields(log.Fields{
"action": e.Action,
"tag": e.Target.Tag,
"repository": dockerURL,
"digest": e.Target.Digest,
}).Debug("registryNotificationHandler: got registry notification, processing")
s.trigger(event) s.trigger(event)
newRegistryNotificationWebhooksCounter.With(prometheus.Labels{"image": event.Repository.Name}).Inc() newRegistryNotificationWebhooksCounter.With(prometheus.Labels{"image": event.Repository.Name}).Inc()
} }
} }