Global defaults for image configs

Allows setting of image configs at a global level to act as default
values.

This required a change in the model.Image struct due to a bool field not
having a third, unset state. The remedy is to unmarshal into a temporary
data structure to detect the presents of a field value and then use that
to determine if the default value should be used.

Fixes #491
This commit is contained in:
Ian Fijolek
2023-01-23 16:38:43 -08:00
parent 052a472d0b
commit 60ddac4a59
20 changed files with 1010 additions and 71 deletions

View File

@@ -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)
image, err := provider.ValidateImage(imageName, metadata(ctn), ctn.Labels, *c.config.WatchByDefault, *c.imageDefaults)
if err != nil {
c.logger.Error().Err(err).

View File

@@ -10,16 +10,18 @@ import (
// Client represents an active docker provider object
type Client struct {
*provider.Client
config *model.PrdDocker
logger zerolog.Logger
config *model.PrdDocker
logger zerolog.Logger
imageDefaults *model.Image
}
// New creates new docker provider instance
func New(config *model.PrdDocker) *provider.Client {
func New(config *model.PrdDocker, imageDefaults *model.Image) *provider.Client {
return &provider.Client{
Handler: &Client{
config: config,
logger: log.With().Str("provider", "docker").Logger(),
config: config,
logger: log.With().Str("provider", "docker").Logger(),
imageDefaults: imageDefaults,
},
}
}