add event-webhook command line flag

This commit is contained in:
Michael Parker
2020-01-06 16:35:42 -06:00
parent 0abc254ef2
commit 38dfda9d8f
3 changed files with 79 additions and 18 deletions
+16
View File
@@ -51,6 +51,7 @@ type Controller struct {
routerFactory *router.Factory
observerFactory *metrics.Factory
meshProvider string
eventWebhook string
}
func NewController(
@@ -66,6 +67,7 @@ func NewController(
observerFactory *metrics.Factory,
meshProvider string,
version string,
eventWebhook string,
) *Controller {
logger.Debug("Creating event broadcaster")
flaggerscheme.AddToScheme(scheme.Scheme)
@@ -97,6 +99,7 @@ func NewController(
canaryFactory: canaryFactory,
routerFactory: routerFactory,
meshProvider: meshProvider,
eventWebhook: eventWebhook,
}
flaggerInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
@@ -244,19 +247,32 @@ func checkCustomResourceType(obj interface{}, logger *zap.SugaredLogger) (flagge
return *roll, true
}
func (c *Controller) sendEventToWebhook(r *flaggerv1.Canary, template string, args []interface{}) {
if c.eventWebhook != "" {
c.logger.Info(fmt.Sprintf(template, args...))
err := CallEventWebhook(r, c.eventWebhook, fmt.Sprintf(template, args...), corev1.EventTypeNormal)
if err != nil {
c.logger.With("canary", fmt.Sprintf("%s.%s", r.Name, r.Namespace)).Errorf("error sending event to webhook: %s", err)
}
}
}
func (c *Controller) recordEventInfof(r *flaggerv1.Canary, template string, args ...interface{}) {
c.logger.With("canary", fmt.Sprintf("%s.%s", r.Name, r.Namespace)).Infof(template, args...)
c.eventRecorder.Event(r, corev1.EventTypeNormal, "Synced", fmt.Sprintf(template, args...))
c.sendEventToWebhook(r, template, args)
}
func (c *Controller) recordEventErrorf(r *flaggerv1.Canary, template string, args ...interface{}) {
c.logger.With("canary", fmt.Sprintf("%s.%s", r.Name, r.Namespace)).Errorf(template, args...)
c.eventRecorder.Event(r, corev1.EventTypeWarning, "Synced", fmt.Sprintf(template, args...))
c.sendEventToWebhook(r, template, args)
}
func (c *Controller) recordEventWarningf(r *flaggerv1.Canary, template string, args ...interface{}) {
c.logger.With("canary", fmt.Sprintf("%s.%s", r.Name, r.Namespace)).Infof(template, args...)
c.eventRecorder.Event(r, corev1.EventTypeWarning, "Synced", fmt.Sprintf(template, args...))
c.sendEventToWebhook(r, template, args)
}
func (c *Controller) sendNotification(cd *flaggerv1.Canary, message string, metadata bool, warn bool) {