From 655ebdd1cd3e693c07ab975a1ebd0537afd9444f Mon Sep 17 00:00:00 2001 From: Somtochi Onyekwere Date: Wed, 25 Aug 2021 12:51:16 +0100 Subject: [PATCH 1/4] Use Shoutrr type for telegram notification Signed-off-by: Somtochi Onyekwere --- controllers/provider_controller.go | 7 ++++- go.mod | 2 +- go.sum | 19 ++------------ internal/notifier/factory.go | 4 ++- internal/notifier/shoutrr.go | 42 ++++++++++++++++++++++++++++++ internal/notifier/telegram.go | 25 ++++++++---------- internal/server/event_handlers.go | 7 ++++- 7 files changed, 71 insertions(+), 35 deletions(-) create mode 100644 internal/notifier/shoutrr.go diff --git a/controllers/provider_controller.go b/controllers/provider_controller.go index a7e9105d9..96be42489 100644 --- a/controllers/provider_controller.go +++ b/controllers/provider_controller.go @@ -101,6 +101,7 @@ func (r *ProviderReconciler) SetupWithManager(mgr ctrl.Manager) error { func (r *ProviderReconciler) validate(ctx context.Context, provider v1beta1.Provider) error { address := provider.Spec.Address token := "" + port := "" if provider.Spec.SecretRef != nil { var secret corev1.Secret secretName := types.NamespacedName{Namespace: provider.Namespace, Name: provider.Spec.SecretRef.Name} @@ -116,6 +117,10 @@ func (r *ProviderReconciler) validate(ctx context.Context, provider v1beta1.Prov if t, ok := secret.Data["token"]; ok { token = string(t) } + + if p, ok := secret.Data["port"]; ok { + port = string(p) + } } if address == "" { @@ -143,7 +148,7 @@ func (r *ProviderReconciler) validate(ctx context.Context, provider v1beta1.Prov } } - factory := notifier.NewFactory(address, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool) + factory := notifier.NewFactory(address, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool, port) if _, err := factory.Notifier(provider.Spec.Type); err != nil { return fmt.Errorf("failed to initialise provider, error: %w", err) } diff --git a/go.mod b/go.mod index 65bf44951..707f2f3ff 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/Azure/azure-event-hubs-go/v3 v3.3.7 github.com/Azure/azure-sdk-for-go v53.4.0+incompatible // indirect github.com/Azure/go-amqp v0.13.6 // indirect - github.com/containrrr/shoutrrr v0.4.4 + github.com/containrrr/shoutrrr v0.5.0 github.com/fluxcd/notification-controller/api v0.15.1 github.com/fluxcd/pkg/apis/meta v0.10.0 github.com/fluxcd/pkg/runtime v0.12.0 diff --git a/go.sum b/go.sum index 284e8ab2b..cab0bc86a 100644 --- a/go.sum +++ b/go.sum @@ -135,8 +135,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/containrrr/shoutrrr v0.4.4 h1:vHZ4E/76pKVY+Jyn/qhBz3X540Bn8NI5ppPHK4PyILY= -github.com/containrrr/shoutrrr v0.4.4/go.mod h1:zqL2BvfC1W4FujrT4b3/ZCLxvD+uoeEpBL7rg9Dqpbg= +github.com/containrrr/shoutrrr v0.5.0 h1:befKPRMqSvEsHYgxYJq4nuGmSWYvjbhVvb0nNk5OR5Q= +github.com/containrrr/shoutrrr v0.5.0/go.mod h1:XSU8tOIZ1JG8m6OuPozfGLpj6Ed+S8ZrRJaEodQhbzw= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -202,10 +202,8 @@ github.com/getsentry/sentry-go v0.11.0 h1:qro8uttJGvNAMr5CLcFI9CHR0aDzXl0Vs3Pmw/ github.com/getsentry/sentry-go v0.11.0/go.mod h1:KBQIxiZAetw62Cj8Ri964vAEWVdgfaUCn30Q3bCvANo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= -github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi v4.1.2+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= @@ -238,19 +236,13 @@ github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHK github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0 h1:KgJ0snyC2R9VXYN2rneOtQcw5aHQB1Vv0sFl1UcHBOY= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= @@ -330,7 +322,6 @@ github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -414,7 +405,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.7 h1:0hzRabrMN4tSTvMfnL3SCv1ZGeAP23ynzodBgaHeMeg= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/knq/sysutil v0.0.0-20181215143952-f05b59f0f307/go.mod h1:BjPj+aVjl9FW/cCGiF3nGh5v+9Gd3VCgBQbod/GlMaQ= @@ -434,7 +424,6 @@ github.com/ktrysmt/go-bitbucket v0.6.5/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.1.17/go.mod h1:Tn2yRQL/UclUalpb5rPdXDevbkJ+lp/2svdyFBg6CHQ= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= @@ -627,10 +616,8 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/twitchyliquid64/golang-asm v0.0.0-20190126203739-365674df15fc/go.mod h1:NoCfSFWosfqMqmmD7hApkirIK9ozpHjxRnRxs1l413A= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= @@ -1016,7 +1003,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gosrc.io/xmpp v0.5.1 h1:Rgrm5s2rt+npGggJH3HakQxQXR8ZZz3+QRzakRQqaq4= gosrc.io/xmpp v0.5.1/go.mod h1:L3NFMqYOxyLz3JGmgFyWf7r9htE91zVGiK40oW4RwdY= gotest.tools v2.1.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/gotestsum v0.3.5/go.mod h1:Mnf3e5FUzXbkCfynWBGOwLssY7gTQgCHObK9tMpAriY= @@ -1061,7 +1047,6 @@ k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471 h1:DnzUXII7sVg1FJ/4JX6YDRJfLNAC7 k8s.io/utils v0.0.0-20210722164352-7f3ee0f31471/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= mvdan.cc/sh v2.6.4+incompatible/go.mod h1:IeeQbZq+x2SUGBensq/jge5lLQbS3XT2ktyp3wrt4x8= nhooyr.io/websocket v1.6.5/go.mod h1:F259lAzPRAH0htX2y3ehpJe09ih1aSHN7udWki1defY= -nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= diff --git a/internal/notifier/factory.go b/internal/notifier/factory.go index 15bd5622a..923fe6200 100644 --- a/internal/notifier/factory.go +++ b/internal/notifier/factory.go @@ -24,6 +24,7 @@ import ( ) type Factory struct { + Port string URL string ProxyURL string Username string @@ -32,7 +33,7 @@ type Factory struct { CertPool *x509.CertPool } -func NewFactory(url string, proxy string, username string, channel string, token string, certPool *x509.CertPool) *Factory { +func NewFactory(url string, proxy string, username string, channel string, token string, certPool *x509.CertPool, port string) *Factory { return &Factory{ URL: url, ProxyURL: proxy, @@ -40,6 +41,7 @@ func NewFactory(url string, proxy string, username string, channel string, token Username: username, Token: token, CertPool: certPool, + Port: port, } } diff --git a/internal/notifier/shoutrr.go b/internal/notifier/shoutrr.go new file mode 100644 index 000000000..99c878ad5 --- /dev/null +++ b/internal/notifier/shoutrr.go @@ -0,0 +1,42 @@ +package notifier + +import ( + "fmt" + + "github.com/containrrr/shoutrrr" + "github.com/fluxcd/pkg/runtime/events" + + "github.com/fluxcd/notification-controller/api/v1beta1" +) + +type Shoutrrr struct { + URL string + Type string +} + +func (s *Shoutrrr) getMessage(event events.Event) (string, error) { + var message string + var err error + switch s.Type { + case v1beta1.TelegramProvider: + message = TelegramMessage(event) + default: + err = fmt.Errorf("provider currently not supported by shoutrrr") + } + + return message, err +} + +func (s *Shoutrrr) Post(event events.Event) error { + // Skip any update events + if isCommitStatus(event.Metadata, "update") { + return nil + } + + msg, err := s.getMessage(event) + if err != nil { + return err + } + + return shoutrrr.Send(s.URL, msg) +} diff --git a/internal/notifier/telegram.go b/internal/notifier/telegram.go index 4ff093f56..9b361c037 100644 --- a/internal/notifier/telegram.go +++ b/internal/notifier/telegram.go @@ -5,8 +5,9 @@ import ( "fmt" "strings" - "github.com/containrrr/shoutrrr" "github.com/fluxcd/pkg/runtime/events" + + "github.com/fluxcd/notification-controller/api/v1beta1" ) type Telegram struct { @@ -14,23 +15,20 @@ type Telegram struct { Token string } -func NewTelegram(channel, token string) (*Telegram, error) { +func NewTelegram(channel, token string) (*Shoutrrr, error) { if channel == "" { return nil, errors.New("empty Telegram channel") } - return &Telegram{ - Channel: channel, - Token: token, + url := fmt.Sprintf("telegram://%s@telegram?channels=%s&parseMode=markDownv2", + token, channel) + return &Shoutrrr{ + URL: url, + Type: v1beta1.TelegramProvider, }, nil } -func (t *Telegram) Post(event events.Event) error { - // Skip any update events - if isCommitStatus(event.Metadata, "update") { - return nil - } - +func TelegramMessage(event events.Event) string { emoji := "💫" if event.Severity == events.EventSeverityError { emoji = "🚨" @@ -43,9 +41,8 @@ func (t *Telegram) Post(event events.Event) error { metadata = metadata + fmt.Sprintf("\\- *%s*: %s\n", k, v) } message := fmt.Sprintf("*%s*\n%s\n%s", escapeString(heading), escapeString(event.Message), metadata) - url := fmt.Sprintf("telegram://%s@telegram?channels=%s&parseMode=markDownv2", t.Token, t.Channel) - err := shoutrrr.Send(url, message) - return err + + return message } // The telegram API requires that some special characters are escaped diff --git a/internal/server/event_handlers.go b/internal/server/event_handlers.go index c9255b6aa..48da2df8f 100644 --- a/internal/server/event_handlers.go +++ b/internal/server/event_handlers.go @@ -137,6 +137,7 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) webhook := provider.Spec.Address token := "" + port := "" if provider.Spec.SecretRef != nil { var secret corev1.Secret secretName := types.NamespacedName{Namespace: alert.Namespace, Name: provider.Spec.SecretRef.Name} @@ -157,6 +158,10 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) if t, ok := secret.Data["token"]; ok { token = string(t) } + + if p, ok := secret.Data["port"]; ok { + port = string(p) + } } var certPool *x509.CertPool @@ -201,7 +206,7 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) continue } - factory := notifier.NewFactory(webhook, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool) + factory := notifier.NewFactory(webhook, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool, port) sender, err := factory.Notifier(provider.Spec.Type) if err != nil { s.logger.Error(err, "failed to initialise provider", From 3742b742c96e63b1de237be852cc465f5e7e8a87 Mon Sep 17 00:00:00 2001 From: Somtochi Onyekwere Date: Wed, 25 Aug 2021 15:25:39 +0100 Subject: [PATCH 2/4] Remove port from secret Signed-off-by: Somtochi Onyekwere --- controllers/provider_controller.go | 7 +------ internal/notifier/factory.go | 4 +--- internal/server/event_handlers.go | 7 +------ 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/controllers/provider_controller.go b/controllers/provider_controller.go index 96be42489..a7e9105d9 100644 --- a/controllers/provider_controller.go +++ b/controllers/provider_controller.go @@ -101,7 +101,6 @@ func (r *ProviderReconciler) SetupWithManager(mgr ctrl.Manager) error { func (r *ProviderReconciler) validate(ctx context.Context, provider v1beta1.Provider) error { address := provider.Spec.Address token := "" - port := "" if provider.Spec.SecretRef != nil { var secret corev1.Secret secretName := types.NamespacedName{Namespace: provider.Namespace, Name: provider.Spec.SecretRef.Name} @@ -117,10 +116,6 @@ func (r *ProviderReconciler) validate(ctx context.Context, provider v1beta1.Prov if t, ok := secret.Data["token"]; ok { token = string(t) } - - if p, ok := secret.Data["port"]; ok { - port = string(p) - } } if address == "" { @@ -148,7 +143,7 @@ func (r *ProviderReconciler) validate(ctx context.Context, provider v1beta1.Prov } } - factory := notifier.NewFactory(address, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool, port) + factory := notifier.NewFactory(address, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool) if _, err := factory.Notifier(provider.Spec.Type); err != nil { return fmt.Errorf("failed to initialise provider, error: %w", err) } diff --git a/internal/notifier/factory.go b/internal/notifier/factory.go index 923fe6200..15bd5622a 100644 --- a/internal/notifier/factory.go +++ b/internal/notifier/factory.go @@ -24,7 +24,6 @@ import ( ) type Factory struct { - Port string URL string ProxyURL string Username string @@ -33,7 +32,7 @@ type Factory struct { CertPool *x509.CertPool } -func NewFactory(url string, proxy string, username string, channel string, token string, certPool *x509.CertPool, port string) *Factory { +func NewFactory(url string, proxy string, username string, channel string, token string, certPool *x509.CertPool) *Factory { return &Factory{ URL: url, ProxyURL: proxy, @@ -41,7 +40,6 @@ func NewFactory(url string, proxy string, username string, channel string, token Username: username, Token: token, CertPool: certPool, - Port: port, } } diff --git a/internal/server/event_handlers.go b/internal/server/event_handlers.go index 48da2df8f..c9255b6aa 100644 --- a/internal/server/event_handlers.go +++ b/internal/server/event_handlers.go @@ -137,7 +137,6 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) webhook := provider.Spec.Address token := "" - port := "" if provider.Spec.SecretRef != nil { var secret corev1.Secret secretName := types.NamespacedName{Namespace: alert.Namespace, Name: provider.Spec.SecretRef.Name} @@ -158,10 +157,6 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) if t, ok := secret.Data["token"]; ok { token = string(t) } - - if p, ok := secret.Data["port"]; ok { - port = string(p) - } } var certPool *x509.CertPool @@ -206,7 +201,7 @@ func (s *EventServer) handleEvent() func(w http.ResponseWriter, r *http.Request) continue } - factory := notifier.NewFactory(webhook, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool, port) + factory := notifier.NewFactory(webhook, provider.Spec.Proxy, provider.Spec.Username, provider.Spec.Channel, token, certPool) sender, err := factory.Notifier(provider.Spec.Type) if err != nil { s.logger.Error(err, "failed to initialise provider", From 9c92b18801b8e58e6ca52c11212100e98f5d37cb Mon Sep 17 00:00:00 2001 From: Somtochi Onyekwere Date: Wed, 25 Aug 2021 15:26:32 +0100 Subject: [PATCH 3/4] Rename shoutrrr file Signed-off-by: Somtochi Onyekwere --- internal/notifier/{shoutrr.go => shoutrrr.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename internal/notifier/{shoutrr.go => shoutrrr.go} (100%) diff --git a/internal/notifier/shoutrr.go b/internal/notifier/shoutrrr.go similarity index 100% rename from internal/notifier/shoutrr.go rename to internal/notifier/shoutrrr.go From 3783ad784329db01476f61d7a9b9ce48206e705e Mon Sep 17 00:00:00 2001 From: Somtochi Onyekwere Date: Wed, 25 Aug 2021 23:24:19 +0100 Subject: [PATCH 4/4] Add unit test Signed-off-by: Somtochi Onyekwere --- internal/notifier/telegram_test.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 internal/notifier/telegram_test.go diff --git a/internal/notifier/telegram_test.go b/internal/notifier/telegram_test.go new file mode 100644 index 000000000..b08910173 --- /dev/null +++ b/internal/notifier/telegram_test.go @@ -0,0 +1,15 @@ +package notifier + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNewTelegram(t *testing.T) { + s, err := NewTelegram("@test", "token") + require.NoError(t, err) + + url := "telegram://token@telegram?channels=@test&parseMode=markDownv2" + require.Equal(t, url, s.URL) +}