From b2a19c457ce753b7ce2042a60e3c212e8a6d76e8 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 23 Sep 2023 13:26:09 +0200 Subject: [PATCH] move imageDefaults from watch to defaults in config root --- internal/app/diun.go | 12 ++--- internal/config/config.go | 6 ++- internal/config/config_test.go | 46 +++++++++++-------- internal/config/fixtures/config.test.yml | 9 ++-- .../{watch_imagedefaults.go => defaults.go} | 10 ++-- internal/model/watch.go | 1 - internal/provider/common.go | 18 ++++---- internal/provider/common_test.go | 42 ++++++++--------- internal/provider/docker/container.go | 2 +- internal/provider/docker/docker.go | 14 +++--- internal/provider/dockerfile/dockerfile.go | 14 +++--- internal/provider/dockerfile/image.go | 2 +- internal/provider/file/file.go | 14 +++--- internal/provider/file/file_test.go | 8 ++-- internal/provider/file/image.go | 6 +-- internal/provider/kubernetes/kubernetes.go | 14 +++--- internal/provider/kubernetes/pod.go | 2 +- internal/provider/nomad/nomad.go | 14 +++--- internal/provider/nomad/task.go | 2 +- internal/provider/swarm/service.go | 2 +- internal/provider/swarm/swarm.go | 14 +++--- test/docker5/diun.yml | 11 +++-- 22 files changed, 136 insertions(+), 127 deletions(-) rename internal/model/{watch_imagedefaults.go => defaults.go} (82%) diff --git a/internal/app/diun.go b/internal/app/diun.go index 9c5d05d4..e6883003 100644 --- a/internal/app/diun.go +++ b/internal/app/diun.go @@ -153,32 +153,32 @@ func (di *Diun) Run() { defer di.pool.Release() // Docker provider - for _, job := range dockerPrd.New(di.cfg.Providers.Docker, di.cfg.Watch.ImageDefaults).ListJob() { + for _, job := range dockerPrd.New(di.cfg.Providers.Docker, di.cfg.Defaults).ListJob() { di.createJob(job) } // Swarm provider - for _, job := range swarmPrd.New(di.cfg.Providers.Swarm, di.cfg.Watch.ImageDefaults).ListJob() { + for _, job := range swarmPrd.New(di.cfg.Providers.Swarm, di.cfg.Defaults).ListJob() { di.createJob(job) } // Kubernetes provider - for _, job := range kubernetesPrd.New(di.cfg.Providers.Kubernetes, di.cfg.Watch.ImageDefaults).ListJob() { + for _, job := range kubernetesPrd.New(di.cfg.Providers.Kubernetes, di.cfg.Defaults).ListJob() { di.createJob(job) } // File provider - for _, job := range filePrd.New(di.cfg.Providers.File, di.cfg.Watch.ImageDefaults).ListJob() { + for _, job := range filePrd.New(di.cfg.Providers.File, di.cfg.Defaults).ListJob() { di.createJob(job) } // Dockerfile provider - for _, job := range dockerfilePrd.New(di.cfg.Providers.Dockerfile, di.cfg.Watch.ImageDefaults).ListJob() { + for _, job := range dockerfilePrd.New(di.cfg.Providers.Dockerfile, di.cfg.Defaults).ListJob() { di.createJob(job) } // Nomad provider - for _, job := range nomadPrd.New(di.cfg.Providers.Nomad, di.cfg.Watch.ImageDefaults).ListJob() { + for _, job := range nomadPrd.New(di.cfg.Providers.Nomad, di.cfg.Defaults).ListJob() { di.createJob(job) } diff --git a/internal/config/config.go b/internal/config/config.go index a39b0982..e8f5671d 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -16,6 +16,7 @@ import ( type Config struct { Db *model.Db `yaml:"db,omitempty" json:"db,omitempty"` Watch *model.Watch `yaml:"watch,omitempty" json:"watch,omitempty"` + Defaults *model.Defaults `yaml:"defaults,omitempty" json:"defaults,omitempty"` Notif *model.Notif `yaml:"notif,omitempty" json:"notif,omitempty"` RegOpts model.RegOpts `yaml:"regopts,omitempty" json:"regopts,omitempty" validate:"unique=Name,dive"` Providers *model.Providers `yaml:"providers,omitempty" json:"providers,omitempty"` @@ -24,8 +25,9 @@ type Config struct { // Load returns Config struct func Load(config string) (*Config, error) { cfg := Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), } fileLoader := gonfig.NewFileLoader(gonfig.FileLoaderConfig{ diff --git a/internal/config/config_test.go b/internal/config/config_test.go index b21ef57d..5b70440f 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -58,12 +58,12 @@ func TestLoadFile(t *testing.T) { BaseURL: "https://hc-ping.com/", UUID: "5bf66975-d4c7-4bf5-bcc8-b8d8a82ea278", }, - ImageDefaults: &model.ImageDefaults{ - WatchRepo: utl.NewFalse(), - NotifyOn: []model.NotifyOn{model.NotifyOnNew}, - MaxTags: 5, - SortTags: registry.SortTagReverse, - }, + }, + Defaults: &model.Defaults{ + WatchRepo: utl.NewFalse(), + NotifyOn: []model.NotifyOn{model.NotifyOnNew}, + MaxTags: 5, + SortTags: registry.SortTagReverse, }, Notif: &model.Notif{ Amqp: &model.NotifAmqp{ @@ -271,10 +271,11 @@ func TestLoadEnv(t *testing.T) { "DIUN_PROVIDERS_DOCKER=true", }, expected: &Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), - Notif: nil, - RegOpts: nil, + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), + Notif: nil, + RegOpts: nil, Providers: &model.Providers{ Docker: &model.PrdDocker{ TLSVerify: utl.NewTrue(), @@ -296,8 +297,9 @@ func TestLoadEnv(t *testing.T) { "DIUN_PROVIDERS_DOCKER=true", }, expected: &Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), RegOpts: model.RegOpts{ { Name: "docker.io", @@ -326,8 +328,9 @@ func TestLoadEnv(t *testing.T) { "DIUN_PROVIDERS_SWARM=true", }, expected: &Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), Notif: &model.Notif{ Telegram: &model.NotifTelegram{ Token: "abcdef123456", @@ -352,8 +355,9 @@ func TestLoadEnv(t *testing.T) { "DIUN_PROVIDERS_FILE_DIRECTORY=./fixtures", }, expected: &Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), Notif: &model.Notif{ Script: &model.NotifScript{ Cmd: "uname", @@ -424,8 +428,9 @@ func TestLoadMixed(t *testing.T) { "DIUN_NOTIF_MAIL_LOCALNAME=foo.com", }, expected: &Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), Notif: &model.Notif{ Mail: &model.NotifMail{ Host: "127.0.0.1", @@ -469,8 +474,9 @@ for {{ .Entry.Manifest.Platform }} platform. "DIUN_NOTIF_WEBHOOK_TIMEOUT=1m", }, expected: &Config{ - Db: (&model.Db{}).GetDefaults(), - Watch: (&model.Watch{}).GetDefaults(), + Db: (&model.Db{}).GetDefaults(), + Watch: (&model.Watch{}).GetDefaults(), + Defaults: (&model.Defaults{}).GetDefaults(), Notif: &model.Notif{ Webhook: &model.NotifWebhook{ Endpoint: "http://webhook.foo.com/sd54qad89azd5a", diff --git a/internal/config/fixtures/config.test.yml b/internal/config/fixtures/config.test.yml index f8f53843..58d3c686 100644 --- a/internal/config/fixtures/config.test.yml +++ b/internal/config/fixtures/config.test.yml @@ -11,10 +11,11 @@ watch: healthchecks: baseURL: https://hc-ping.com/ uuid: 5bf66975-d4c7-4bf5-bcc8-b8d8a82ea278 - imageDefaults: - notifyOn: - - new - maxTags: 5 + +defaults: + notifyOn: + - new + maxTags: 5 notif: amqp: diff --git a/internal/model/watch_imagedefaults.go b/internal/model/defaults.go similarity index 82% rename from internal/model/watch_imagedefaults.go rename to internal/model/defaults.go index 64dbdbbc..88a78a90 100644 --- a/internal/model/watch_imagedefaults.go +++ b/internal/model/defaults.go @@ -5,8 +5,8 @@ import ( "github.com/crazy-max/diun/v4/pkg/utl" ) -// ImageDefaults holds data necessary for image defaults configuration -type ImageDefaults struct { +// Defaults holds data necessary for image defaults configuration +type Defaults struct { WatchRepo *bool `yaml:"watchRepo,omitempty" json:"watchRepo,omitempty"` NotifyOn []NotifyOn `yaml:"notifyOn,omitempty" json:"notifyOn,omitempty"` MaxTags int `yaml:"maxTags,omitempty" json:"maxTags,omitempty"` @@ -17,14 +17,14 @@ type ImageDefaults struct { } // GetDefaults gets the default values -func (s *ImageDefaults) GetDefaults() *Watch { - n := &Watch{} +func (s *Defaults) GetDefaults() *Defaults { + n := &Defaults{} n.SetDefaults() return n } // SetDefaults sets the default values -func (s *ImageDefaults) SetDefaults() { +func (s *Defaults) SetDefaults() { s.WatchRepo = utl.NewFalse() s.NotifyOn = NotifyOnDefaults s.SortTags = registry.SortTagReverse diff --git a/internal/model/watch.go b/internal/model/watch.go index a5719b50..f9239519 100644 --- a/internal/model/watch.go +++ b/internal/model/watch.go @@ -15,7 +15,6 @@ type Watch struct { RunOnStartup *bool `yaml:"runOnStartup,omitempty" json:"runOnStartup,omitempty" validate:"required"` CompareDigest *bool `yaml:"compareDigest,omitempty" json:"compareDigest,omitempty" validate:"required"` Healthchecks *Healthchecks `yaml:"healthchecks,omitempty" json:"healthchecks,omitempty"` - ImageDefaults *ImageDefaults `yaml:"imageDefaults,omitempty" json:"imageDefaults,omitempty"` } // GetDefaults gets the default values diff --git a/internal/provider/common.go b/internal/provider/common.go index cbefc7d4..f2f98802 100644 --- a/internal/provider/common.go +++ b/internal/provider/common.go @@ -18,19 +18,19 @@ var ( ) // ValidateImage returns a standard image through Docker labels -func ValidateImage(image string, metadata, labels map[string]string, watchByDef bool, imageDefaults *model.ImageDefaults) (img model.Image, err error) { +func ValidateImage(image string, metadata, labels map[string]string, watchByDef bool, defaults *model.Defaults) (img model.Image, err error) { img = model.Image{ Name: image, } - if imageDefaults != nil { - img.WatchRepo = imageDefaults.WatchRepo - img.NotifyOn = imageDefaults.NotifyOn - img.MaxTags = imageDefaults.MaxTags - img.SortTags = imageDefaults.SortTags - img.IncludeTags = imageDefaults.IncludeTags - img.ExcludeTags = imageDefaults.ExcludeTags - img.Metadata = imageDefaults.Metadata + if defaults != nil { + img.WatchRepo = defaults.WatchRepo + img.NotifyOn = defaults.NotifyOn + img.MaxTags = defaults.MaxTags + img.SortTags = defaults.SortTags + img.IncludeTags = defaults.IncludeTags + img.ExcludeTags = defaults.ExcludeTags + img.Metadata = defaults.Metadata } if enableStr, ok := labels["diun.enable"]; ok { diff --git a/internal/provider/common_test.go b/internal/provider/common_test.go index 00c5c7b3..72a9abe3 100644 --- a/internal/provider/common_test.go +++ b/internal/provider/common_test.go @@ -17,7 +17,7 @@ func TestValidateImage(t *testing.T) { metadata map[string]string labels map[string]string watchByDef bool - imageDefaults *model.ImageDefaults + defaults *model.Defaults expectedImage model.Image expectedErr error }{ @@ -85,8 +85,8 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.regopt": "foo", }, - watchByDef: true, - imageDefaults: &model.ImageDefaults{}, + watchByDef: true, + defaults: &model.Defaults{}, expectedImage: model.Image{ Name: "myimg", RegOpt: "foo", @@ -110,7 +110,7 @@ func TestValidateImage(t *testing.T) { name: "Include using global settings", image: "myimg", watchByDef: true, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ WatchRepo: utl.NewTrue(), }, expectedImage: model.Image{ @@ -126,7 +126,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.watch_repo": "chickens", }, - imageDefaults: &model.ImageDefaults{}, + defaults: &model.Defaults{}, expectedImage: model.Image{ Name: "myimg", }, @@ -139,7 +139,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.watch_repo": "false", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ WatchRepo: utl.NewTrue(), }, expectedImage: model.Image{ @@ -155,7 +155,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.watch_repo": "true", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ WatchRepo: utl.NewFalse(), }, expectedImage: model.Image{ @@ -207,7 +207,7 @@ func TestValidateImage(t *testing.T) { image: "myimg", watchByDef: true, labels: map[string]string{}, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ NotifyOn: []model.NotifyOn{model.NotifyOnNew}, }, expectedImage: model.Image{ @@ -223,7 +223,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.notify_on": "update", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ NotifyOn: []model.NotifyOn{model.NotifyOnNew}, }, expectedImage: model.Image{ @@ -274,7 +274,7 @@ func TestValidateImage(t *testing.T) { image: "myimg", watchByDef: true, labels: map[string]string{}, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ SortTags: registry.SortTagSemver, }, expectedImage: model.Image{ @@ -290,7 +290,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.sort_tags": "reverse", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ SortTags: registry.SortTagSemver, }, expectedImage: model.Image{ @@ -341,7 +341,7 @@ func TestValidateImage(t *testing.T) { image: "myimg", watchByDef: true, labels: map[string]string{}, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ MaxTags: 10, }, expectedImage: model.Image{ @@ -357,7 +357,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.max_tags": "11", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ MaxTags: 10, }, expectedImage: model.Image{ @@ -397,7 +397,7 @@ func TestValidateImage(t *testing.T) { image: "myimg", watchByDef: true, labels: map[string]string{}, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ IncludeTags: []string{"alpine"}, }, expectedImage: model.Image{ @@ -413,7 +413,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.include_tags": "ubuntu", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ IncludeTags: []string{"alpine"}, }, expectedImage: model.Image{ @@ -453,7 +453,7 @@ func TestValidateImage(t *testing.T) { image: "myimg", watchByDef: true, labels: map[string]string{}, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ ExcludeTags: []string{"alpine"}, }, expectedImage: model.Image{ @@ -469,7 +469,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.exclude_tags": "ubuntu", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ ExcludeTags: []string{"alpine"}, }, expectedImage: model.Image{ @@ -626,7 +626,7 @@ func TestValidateImage(t *testing.T) { image: "myimg", watchByDef: true, labels: map[string]string{}, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ Metadata: map[string]string{ "foo123": "bar", }, @@ -646,7 +646,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.metadata.biz123": "baz", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ Metadata: map[string]string{ "foo123": "bar", }, @@ -667,7 +667,7 @@ func TestValidateImage(t *testing.T) { labels: map[string]string{ "diun.metadata.foo123": "baz", }, - imageDefaults: &model.ImageDefaults{ + defaults: &model.Defaults{ Metadata: map[string]string{ "foo123": "bar", }, @@ -690,7 +690,7 @@ func TestValidateImage(t *testing.T) { tt.metadata, tt.labels, tt.watchByDef, - tt.imageDefaults, + tt.defaults, ) if tt.expectedErr == nil { assert.NoError(t, err) diff --git a/internal/provider/docker/container.go b/internal/provider/docker/container.go index e5a829d6..bf3b0375 100644 --- a/internal/provider/docker/container.go +++ b/internal/provider/docker/container.go @@ -91,7 +91,7 @@ func (c *Client) listContainerImage() []model.Image { Str("ctn_image", imageName). Interface("ctn_labels", ctn.Labels). Msg("Validate image") - image, err := provider.ValidateImage(imageName, metadata(ctn), ctn.Labels, *c.config.WatchByDefault, c.imageDefaults) + image, err := provider.ValidateImage(imageName, metadata(ctn), ctn.Labels, *c.config.WatchByDefault, c.defaults) if err != nil { c.logger.Error().Err(err). diff --git a/internal/provider/docker/docker.go b/internal/provider/docker/docker.go index 7753cddb..bc42ce33 100644 --- a/internal/provider/docker/docker.go +++ b/internal/provider/docker/docker.go @@ -10,18 +10,18 @@ import ( // Client represents an active docker provider object type Client struct { *provider.Client - config *model.PrdDocker - logger zerolog.Logger - imageDefaults *model.ImageDefaults + config *model.PrdDocker + logger zerolog.Logger + defaults *model.Defaults } // New creates new docker provider instance -func New(config *model.PrdDocker, imageDefaults *model.ImageDefaults) *provider.Client { +func New(config *model.PrdDocker, defaults *model.Defaults) *provider.Client { return &provider.Client{ Handler: &Client{ - config: config, - logger: log.With().Str("provider", "docker").Logger(), - imageDefaults: imageDefaults, + config: config, + logger: log.With().Str("provider", "docker").Logger(), + defaults: defaults, }, } } diff --git a/internal/provider/dockerfile/dockerfile.go b/internal/provider/dockerfile/dockerfile.go index 8ba6d9d1..1f9e8d26 100644 --- a/internal/provider/dockerfile/dockerfile.go +++ b/internal/provider/dockerfile/dockerfile.go @@ -10,18 +10,18 @@ import ( // Client represents an active dockerfile provider object type Client struct { *provider.Client - config *model.PrdDockerfile - logger zerolog.Logger - imageDefaults *model.ImageDefaults + config *model.PrdDockerfile + logger zerolog.Logger + defaults *model.Defaults } // New creates new dockerfile provider instance -func New(config *model.PrdDockerfile, imageDefaults *model.ImageDefaults) *provider.Client { +func New(config *model.PrdDockerfile, defaults *model.Defaults) *provider.Client { return &provider.Client{ Handler: &Client{ - config: config, - logger: log.With().Str("provider", "dockerfile").Logger(), - imageDefaults: imageDefaults, + config: config, + logger: log.With().Str("provider", "dockerfile").Logger(), + defaults: defaults, }, } } diff --git a/internal/provider/dockerfile/image.go b/internal/provider/dockerfile/image.go index 78030a57..b2d48fe8 100644 --- a/internal/provider/dockerfile/image.go +++ b/internal/provider/dockerfile/image.go @@ -32,7 +32,7 @@ func (c *Client) listExtImage() (list []model.Image) { Interface("dfile_comments", fromImage.Comments). Int("dfile_line", fromImage.Line). Msg("Validate image") - image, err := provider.ValidateImage(fromImage.Name, nil, c.extractLabels(fromImage.Comments), true, c.imageDefaults) + image, err := provider.ValidateImage(fromImage.Name, nil, c.extractLabels(fromImage.Comments), true, c.defaults) if err != nil { c.logger.Error().Err(err). Str("dfile_image", fromImage.Name). diff --git a/internal/provider/file/file.go b/internal/provider/file/file.go index 77405bbf..dd2f9336 100644 --- a/internal/provider/file/file.go +++ b/internal/provider/file/file.go @@ -10,18 +10,18 @@ import ( // Client represents an active file provider object type Client struct { *provider.Client - config *model.PrdFile - logger zerolog.Logger - imageDefaults *model.ImageDefaults + config *model.PrdFile + logger zerolog.Logger + defaults *model.Defaults } // New creates new file provider instance -func New(config *model.PrdFile, imageDefaults *model.ImageDefaults) *provider.Client { +func New(config *model.PrdFile, defaults *model.Defaults) *provider.Client { return &provider.Client{ Handler: &Client{ - config: config, - logger: log.With().Str("provider", "file").Logger(), - imageDefaults: imageDefaults, + config: config, + logger: log.With().Str("provider", "file").Logger(), + defaults: defaults, }, } } diff --git a/internal/provider/file/file_test.go b/internal/provider/file/file_test.go index dce29a9d..b3268ff4 100644 --- a/internal/provider/file/file_test.go +++ b/internal/provider/file/file_test.go @@ -10,7 +10,7 @@ import ( ) var ( - defaultImageDefaults = model.ImageDefaults{ + defaults = model.Defaults{ NotifyOn: model.NotifyOnDefaults, SortTags: registry.SortTagReverse, } @@ -157,7 +157,7 @@ var ( func TestListJobFilename(t *testing.T) { fc := New(&model.PrdFile{ Filename: "./fixtures/dockerhub.yml", - }, &defaultImageDefaults) + }, &defaults) assert.Equal(t, dockerhubFile, fc.ListJob()) } @@ -165,7 +165,7 @@ func TestListJobFilename(t *testing.T) { func TestListJobDirectory(t *testing.T) { fc := New(&model.PrdFile{ Directory: "./fixtures", - }, &defaultImageDefaults) + }, &defaults) assert.Equal(t, append(append(bintrayFile, dockerhubFile...), append(lscrFile, quayFile...)...), fc.ListJob()) } @@ -173,7 +173,7 @@ func TestListJobDirectory(t *testing.T) { func TestDefaultImageOptions(t *testing.T) { fc := New(&model.PrdFile{ Filename: "./fixtures/dockerhub.yml", - }, &model.ImageDefaults{ + }, &model.Defaults{ WatchRepo: utl.NewTrue(), }) diff --git a/internal/provider/file/image.go b/internal/provider/file/image.go index f26de19b..37e6feb8 100644 --- a/internal/provider/file/image.go +++ b/internal/provider/file/image.go @@ -34,11 +34,11 @@ func (c *Client) listFileImage() []model.Image { for _, item := range items { // Set default WatchRepo if item.WatchRepo == nil { - item.WatchRepo = c.imageDefaults.WatchRepo + item.WatchRepo = c.defaults.WatchRepo } // Check NotifyOn if len(item.NotifyOn) == 0 { - item.NotifyOn = c.imageDefaults.NotifyOn + item.NotifyOn = c.defaults.NotifyOn } else { for _, no := range item.NotifyOn { if !no.Valid() { @@ -52,7 +52,7 @@ func (c *Client) listFileImage() []model.Image { // Check SortType if item.SortTags == "" { - item.SortTags = c.imageDefaults.SortTags + item.SortTags = c.defaults.SortTags } if !item.SortTags.Valid() { c.logger.Error(). diff --git a/internal/provider/kubernetes/kubernetes.go b/internal/provider/kubernetes/kubernetes.go index 40469686..58a9eccc 100644 --- a/internal/provider/kubernetes/kubernetes.go +++ b/internal/provider/kubernetes/kubernetes.go @@ -10,18 +10,18 @@ import ( // Client represents an active kubernetes provider object type Client struct { *provider.Client - config *model.PrdKubernetes - logger zerolog.Logger - imageDefaults *model.ImageDefaults + config *model.PrdKubernetes + logger zerolog.Logger + defaults *model.Defaults } // New creates new kubernetes provider instance -func New(config *model.PrdKubernetes, imageDefaults *model.ImageDefaults) *provider.Client { +func New(config *model.PrdKubernetes, defaults *model.Defaults) *provider.Client { return &provider.Client{ Handler: &Client{ - config: config, - logger: log.With().Str("provider", "kubernetes").Logger(), - imageDefaults: imageDefaults, + config: config, + logger: log.With().Str("provider", "kubernetes").Logger(), + defaults: defaults, }, } } diff --git a/internal/provider/kubernetes/pod.go b/internal/provider/kubernetes/pod.go index 672c0585..a870b746 100644 --- a/internal/provider/kubernetes/pod.go +++ b/internal/provider/kubernetes/pod.go @@ -41,7 +41,7 @@ func (c *Client) listPodImage() []model.Image { Str("ctn_image", ctn.Image). Msg("Validate image") - image, err := provider.ValidateImage(ctn.Image, metadata(pod, ctn), pod.Annotations, *c.config.WatchByDefault, c.imageDefaults) + image, err := provider.ValidateImage(ctn.Image, metadata(pod, ctn), pod.Annotations, *c.config.WatchByDefault, c.defaults) if err != nil { c.logger.Error().Err(err). Str("pod_name", pod.Name). diff --git a/internal/provider/nomad/nomad.go b/internal/provider/nomad/nomad.go index a10d0017..42c244d8 100644 --- a/internal/provider/nomad/nomad.go +++ b/internal/provider/nomad/nomad.go @@ -10,18 +10,18 @@ import ( // Client represents an active nomad provider object type Client struct { *provider.Client - config *model.PrdNomad - logger zerolog.Logger - imageDefaults *model.ImageDefaults + config *model.PrdNomad + logger zerolog.Logger + defaults *model.Defaults } // New creates new nomad provider instance -func New(config *model.PrdNomad, imageDefaults *model.ImageDefaults) *provider.Client { +func New(config *model.PrdNomad, defaults *model.Defaults) *provider.Client { return &provider.Client{ Handler: &Client{ - config: config, - logger: log.With().Str("provider", "nomad").Logger(), - imageDefaults: imageDefaults, + config: config, + logger: log.With().Str("provider", "nomad").Logger(), + defaults: defaults, }, } } diff --git a/internal/provider/nomad/task.go b/internal/provider/nomad/task.go index 43f34a06..9dc52a1d 100644 --- a/internal/provider/nomad/task.go +++ b/internal/provider/nomad/task.go @@ -101,7 +101,7 @@ func (c *Client) listTaskImages() []model.Image { c.logger.Error().Err(err).Msg("Cannot merge task metadata") } - image, err := provider.ValidateImage(imageName, metadata(job, taskGroup, task), labels, *c.config.WatchByDefault, c.imageDefaults) + image, err := provider.ValidateImage(imageName, metadata(job, taskGroup, task), labels, *c.config.WatchByDefault, c.defaults) if err != nil { c.logger.Error(). Err(err). diff --git a/internal/provider/swarm/service.go b/internal/provider/swarm/service.go index be94090a..44f42a65 100644 --- a/internal/provider/swarm/service.go +++ b/internal/provider/swarm/service.go @@ -37,7 +37,7 @@ func (c *Client) listServiceImage() []model.Image { Str("ctn_image", svc.Spec.TaskTemplate.ContainerSpec.Image). Msg("Validate image") - image, err := provider.ValidateImage(svc.Spec.TaskTemplate.ContainerSpec.Image, metadata(svc), svc.Spec.Labels, *c.config.WatchByDefault, c.imageDefaults) + image, err := provider.ValidateImage(svc.Spec.TaskTemplate.ContainerSpec.Image, metadata(svc), svc.Spec.Labels, *c.config.WatchByDefault, c.defaults) if err != nil { c.logger.Error().Err(err). Str("svc_name", svc.Spec.Name). diff --git a/internal/provider/swarm/swarm.go b/internal/provider/swarm/swarm.go index ff227498..522c9c81 100644 --- a/internal/provider/swarm/swarm.go +++ b/internal/provider/swarm/swarm.go @@ -10,18 +10,18 @@ import ( // Client represents an active swarm provider object type Client struct { *provider.Client - config *model.PrdSwarm - logger zerolog.Logger - imageDefaults *model.ImageDefaults + config *model.PrdSwarm + logger zerolog.Logger + defaults *model.Defaults } // New creates new swarm provider instance -func New(config *model.PrdSwarm, imageDefaults *model.ImageDefaults) *provider.Client { +func New(config *model.PrdSwarm, defaults *model.Defaults) *provider.Client { return &provider.Client{ Handler: &Client{ - config: config, - logger: log.With().Str("provider", "swarm").Logger(), - imageDefaults: imageDefaults, + config: config, + logger: log.With().Str("provider", "swarm").Logger(), + defaults: defaults, }, } } diff --git a/test/docker5/diun.yml b/test/docker5/diun.yml index 8ac5fef8..3a3c8917 100644 --- a/test/docker5/diun.yml +++ b/test/docker5/diun.yml @@ -1,11 +1,12 @@ watch: workers: 20 schedule: "0 */6 * * *" - imageDefaults: - watchRepo: true - notifyOn: - - new - maxTags: 5 + +defaults: + watchRepo: true + notifyOn: + - new + maxTags: 5 providers: docker: {}