Include provider in notifications

This commit is contained in:
CrazyMax
2019-12-14 17:13:32 +01:00
parent e7626a94ed
commit c60fe06894
11 changed files with 19 additions and 16 deletions

View File

@@ -97,7 +97,6 @@ func (di *Diun) Run() {
if err := di.runJob(job); err != nil { if err := di.runJob(job); err != nil {
log.Error().Err(err). log.Error().Err(err).
Str("provider", job.Provider). Str("provider", job.Provider).
Str("id", job.ID).
Msg("Cannot run job") Msg("Cannot run job")
} }
di.wg.Done() di.wg.Done()

View File

@@ -18,7 +18,6 @@ func (di *Diun) createJob(job model.Job) {
sublog := log.With(). sublog := log.With().
Str("provider", job.Provider). Str("provider", job.Provider).
Str("id", job.ID).
Str("image", job.Image.Name). Str("image", job.Image.Name).
Logger() Logger()
@@ -129,7 +128,6 @@ func (di *Diun) createJob(job model.Job) {
func (di *Diun) runJob(job model.Job) error { func (di *Diun) runJob(job model.Job) error {
sublog := log.With(). sublog := log.With().
Str("provider", job.Provider). Str("provider", job.Provider).
Str("id", job.ID).
Str("image", job.RegImage.String()). Str("image", job.RegImage.String()).
Logger() Logger()
@@ -170,6 +168,7 @@ func (di *Diun) runJob(job model.Job) error {
di.notif.Send(model.NotifEntry{ di.notif.Send(model.NotifEntry{
Status: status, Status: status,
Provider: job.Provider,
Image: job.RegImage, Image: job.RegImage,
Manifest: liveManifest, Manifest: liveManifest,
}) })

View File

@@ -8,7 +8,6 @@ import (
// Job holds job configuration // Job holds job configuration
type Job struct { type Job struct {
Provider string Provider string
ID string
Image Image Image Image
RegImage registry.Image RegImage registry.Image
Registry *docker.RegistryClient Registry *docker.RegistryClient

View File

@@ -14,6 +14,7 @@ type Notif struct {
// NotifEntry represents a notification entry // NotifEntry represents a notification entry
type NotifEntry struct { type NotifEntry struct {
Status ImageStatus `json:"status,omitempty"` Status ImageStatus `json:"status,omitempty"`
Provider string `json:"provider,omitempty"`
Image registry.Image `json:"image,omitempty"` Image registry.Image `json:"image,omitempty"`
Manifest docker.Manifest `json:"manifest,omitempty"` Manifest docker.Manifest `json:"manifest,omitempty"`
} }

View File

@@ -63,7 +63,7 @@ func (c *Client) Send(entry model.NotifEntry) error {
var emailBuf bytes.Buffer var emailBuf bytes.Buffer
emailTpl := template.Must(template.New("email").Parse(` emailTpl := template.Must(template.New("email").Parse(`
Docker 🐳 tag **{{ .Image.Domain }}/{{ .Image.Path }}:{{ .Image.Tag }}** which you subscribed to has been {{ if (eq .Status "new") }}newly added{{ else }}updated{{ end }}. Docker 🐳 tag **{{ .Image.Domain }}/{{ .Image.Path }}:{{ .Image.Tag }}** which you subscribed to through **{{ .Provider }}** provider has been {{ if (eq .Status "new") }}newly added{{ else }}updated{{ end }}.
This image has been {{ if (eq .Status "new") }}created{{ else }}updated{{ end }} at <code>{{ .Manifest.Created }}</code> with digest <code>{{ .Manifest.Digest }}</code> for <code>{{ .Manifest.Os }}/{{ .Manifest.Architecture }}</code> platform. This image has been {{ if (eq .Status "new") }}created{{ else }}updated{{ end }} at <code>{{ .Manifest.Created }}</code> with digest <code>{{ .Manifest.Digest }}</code> for <code>{{ .Manifest.Os }}/{{ .Manifest.Architecture }}</code> platform.

View File

@@ -43,6 +43,7 @@ func (c *Client) Send(entry model.NotifEntry) error {
body, err := json.Marshal(struct { body, err := json.Marshal(struct {
Version string `json:"diun_version"` Version string `json:"diun_version"`
Status string `json:"status"` Status string `json:"status"`
Provider string `json:"provider"`
Image string `json:"image"` Image string `json:"image"`
MIMEType string `json:"mime_type"` MIMEType string `json:"mime_type"`
Digest digest.Digest `json:"digest"` Digest digest.Digest `json:"digest"`
@@ -52,6 +53,7 @@ func (c *Client) Send(entry model.NotifEntry) error {
}{ }{
Version: c.app.Version, Version: c.app.Version,
Status: string(entry.Status), Status: string(entry.Status),
Provider: entry.Provider,
Image: entry.Image.String(), Image: entry.Image.String(),
MIMEType: entry.Manifest.MIMEType, MIMEType: entry.Manifest.MIMEType,
Digest: entry.Manifest.Digest, Digest: entry.Manifest.Digest,

View File

@@ -1,6 +1,7 @@
package docker package docker
import ( import (
"fmt"
"reflect" "reflect"
"github.com/crazy-max/diun/internal/model" "github.com/crazy-max/diun/internal/model"
@@ -12,8 +13,7 @@ import (
func (c *Client) listContainerImage(elt model.PrdDocker) []model.Image { func (c *Client) listContainerImage(elt model.PrdDocker) []model.Image {
sublog := log.With(). sublog := log.With().
Str("provider", "docker"). Str("provider", fmt.Sprintf("docker-%s", elt.ID)).
Str("id", elt.ID).
Logger() Logger()
cli, err := docker.NewClient(elt.Endpoint, elt.ApiVersion, elt.TLSCertsPath, elt.TLSVerify) cli, err := docker.NewClient(elt.Endpoint, elt.ApiVersion, elt.TLSCertsPath, elt.TLSVerify)

View File

@@ -1,6 +1,8 @@
package docker package docker
import ( import (
"fmt"
"github.com/crazy-max/diun/internal/model" "github.com/crazy-max/diun/internal/model"
"github.com/crazy-max/diun/internal/provider" "github.com/crazy-max/diun/internal/provider"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@@ -30,8 +32,7 @@ func (c *Client) ListJob() []model.Job {
for _, elt := range c.elts { for _, elt := range c.elts {
for _, img := range c.listContainerImage(elt) { for _, img := range c.listContainerImage(elt) {
list = append(list, model.Job{ list = append(list, model.Job{
Provider: "docker", Provider: fmt.Sprintf("docker-%s", elt.ID),
ID: elt.ID,
Image: img, Image: img,
}) })
} }

View File

@@ -1,6 +1,8 @@
package static package static
import ( import (
"fmt"
"github.com/crazy-max/diun/internal/model" "github.com/crazy-max/diun/internal/model"
"github.com/crazy-max/diun/internal/provider" "github.com/crazy-max/diun/internal/provider"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@@ -27,10 +29,9 @@ func (c *Client) ListJob() []model.Job {
log.Info().Msgf("Found %d static provider(s) to analyze...", len(c.elts)) log.Info().Msgf("Found %d static provider(s) to analyze...", len(c.elts))
var list []model.Job var list []model.Job
for _, elt := range c.elts { for key, elt := range c.elts {
list = append(list, model.Job{ list = append(list, model.Job{
Provider: "static", Provider: fmt.Sprintf("static-%d", key),
ID: elt.Name,
Image: model.Image(elt), Image: model.Image(elt),
}) })
} }

View File

@@ -1,6 +1,7 @@
package swarm package swarm
import ( import (
"fmt"
"reflect" "reflect"
"github.com/crazy-max/diun/internal/model" "github.com/crazy-max/diun/internal/model"
@@ -12,8 +13,7 @@ import (
func (c *Client) listServiceImage(elt model.PrdSwarm) []model.Image { func (c *Client) listServiceImage(elt model.PrdSwarm) []model.Image {
sublog := log.With(). sublog := log.With().
Str("provider", "swarm"). Str("provider", fmt.Sprintf("swarm-%s", elt.ID)).
Str("id", elt.ID).
Logger() Logger()
cli, err := docker.NewClient(elt.Endpoint, elt.ApiVersion, elt.TLSCertsPath, elt.TLSVerify) cli, err := docker.NewClient(elt.Endpoint, elt.ApiVersion, elt.TLSCertsPath, elt.TLSVerify)

View File

@@ -1,6 +1,8 @@
package swarm package swarm
import ( import (
"fmt"
"github.com/crazy-max/diun/internal/model" "github.com/crazy-max/diun/internal/model"
"github.com/crazy-max/diun/internal/provider" "github.com/crazy-max/diun/internal/provider"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
@@ -30,8 +32,7 @@ func (c *Client) ListJob() []model.Job {
for _, elt := range c.elts { for _, elt := range c.elts {
for _, img := range c.listServiceImage(elt) { for _, img := range c.listServiceImage(elt) {
list = append(list, model.Job{ list = append(list, model.Job{
Provider: "swarm", Provider: fmt.Sprintf("swarm-%s", elt.ID),
ID: elt.ID,
Image: img, Image: img,
}) })
} }