mirror of
https://github.com/crazy-max/diun.git
synced 2025-12-31 01:57:21 +01:00
Remove support of multi Docker and Swarm providers
This commit is contained in:
@@ -1,42 +1,36 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
|
||||
"github.com/crazy-max/diun/internal/model"
|
||||
"github.com/crazy-max/diun/internal/provider"
|
||||
"github.com/crazy-max/diun/pkg/docker"
|
||||
"github.com/docker/docker/api/types/filters"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
func (c *Client) listContainerImage(id string, elt model.PrdDocker) []model.Image {
|
||||
sublog := log.With().
|
||||
Str("provider", fmt.Sprintf("docker-%s", id)).
|
||||
Logger()
|
||||
|
||||
func (c *Client) listContainerImage() []model.Image {
|
||||
cli, err := docker.New(docker.Options{
|
||||
Endpoint: elt.Endpoint,
|
||||
APIVersion: elt.APIVersion,
|
||||
TLSCertPath: elt.TLSCertsPath,
|
||||
TLSVerify: elt.TLSVerify,
|
||||
Endpoint: c.config.Endpoint,
|
||||
APIVersion: c.config.APIVersion,
|
||||
TLSCertPath: c.config.TLSCertsPath,
|
||||
TLSVerify: *c.config.TLSVerify,
|
||||
})
|
||||
if err != nil {
|
||||
sublog.Error().Err(err).Msg("Cannot create Docker client")
|
||||
c.logger.Error().Err(err).Msg("Cannot create Docker client")
|
||||
return []model.Image{}
|
||||
}
|
||||
|
||||
ctnFilter := filters.NewArgs()
|
||||
ctnFilter.Add("status", "running")
|
||||
if elt.WatchStopped {
|
||||
if *c.config.WatchStopped {
|
||||
ctnFilter.Add("status", "created")
|
||||
ctnFilter.Add("status", "exited")
|
||||
}
|
||||
|
||||
ctns, err := cli.ContainerList(ctnFilter)
|
||||
if err != nil {
|
||||
sublog.Error().Err(err).Msg("Cannot list Docker containers")
|
||||
c.logger.Error().Err(err).Msg("Cannot list Docker containers")
|
||||
return []model.Image{}
|
||||
}
|
||||
|
||||
@@ -44,18 +38,18 @@ func (c *Client) listContainerImage(id string, elt model.PrdDocker) []model.Imag
|
||||
for _, ctn := range ctns {
|
||||
local, err := cli.IsLocalImage(ctn.Image)
|
||||
if err != nil {
|
||||
sublog.Error().Err(err).Msgf("Cannot inspect image from container %s", ctn.ID)
|
||||
c.logger.Error().Err(err).Msgf("Cannot inspect image from container %s", ctn.ID)
|
||||
continue
|
||||
} else if local {
|
||||
sublog.Debug().Msgf("Skip locally built image for container %s", ctn.ID)
|
||||
c.logger.Debug().Msgf("Skip locally built image for container %s", ctn.ID)
|
||||
continue
|
||||
}
|
||||
image, err := provider.ValidateContainerImage(ctn.Image, ctn.Labels, elt.WatchByDefault)
|
||||
image, err := provider.ValidateContainerImage(ctn.Image, ctn.Labels, *c.config.WatchByDefault)
|
||||
if err != nil {
|
||||
sublog.Error().Err(err).Msgf("Cannot get image from container %s", ctn.ID)
|
||||
c.logger.Error().Err(err).Msgf("Cannot get image from container %s", ctn.ID)
|
||||
continue
|
||||
} else if reflect.DeepEqual(image, model.Image{}) {
|
||||
sublog.Debug().Msgf("Watch disabled for container %s", ctn.ID)
|
||||
c.logger.Debug().Msgf("Watch disabled for container %s", ctn.ID)
|
||||
continue
|
||||
}
|
||||
list = append(list, image)
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/crazy-max/diun/internal/model"
|
||||
"github.com/crazy-max/diun/internal/provider"
|
||||
"github.com/rs/zerolog"
|
||||
@@ -12,15 +10,15 @@ import (
|
||||
// Client represents an active docker provider object
|
||||
type Client struct {
|
||||
*provider.Client
|
||||
elts map[string]model.PrdDocker
|
||||
config *model.PrdDocker
|
||||
logger zerolog.Logger
|
||||
}
|
||||
|
||||
// New creates new docker provider instance
|
||||
func New(elts map[string]model.PrdDocker) *provider.Client {
|
||||
func New(config *model.PrdDocker) *provider.Client {
|
||||
return &provider.Client{
|
||||
Handler: &Client{
|
||||
elts: elts,
|
||||
config: config,
|
||||
logger: log.With().Str("provider", "docker").Logger(),
|
||||
},
|
||||
}
|
||||
@@ -28,19 +26,22 @@ func New(elts map[string]model.PrdDocker) *provider.Client {
|
||||
|
||||
// ListJob returns job list to process
|
||||
func (c *Client) ListJob() []model.Job {
|
||||
if len(c.elts) == 0 {
|
||||
if c.config == nil {
|
||||
return []model.Job{}
|
||||
}
|
||||
|
||||
c.logger.Info().Msgf("Found %d image(s) to analyze", len(c.elts))
|
||||
images := c.listContainerImage()
|
||||
if len(images) == 0 {
|
||||
return []model.Job{}
|
||||
}
|
||||
|
||||
c.logger.Info().Msgf("Found %d image(s) to analyze", len(images))
|
||||
var list []model.Job
|
||||
for id, elt := range c.elts {
|
||||
for _, img := range c.listContainerImage(id, elt) {
|
||||
list = append(list, model.Job{
|
||||
Provider: fmt.Sprintf("docker-%s", id),
|
||||
Image: img,
|
||||
})
|
||||
}
|
||||
for _, image := range images {
|
||||
list = append(list, model.Job{
|
||||
Provider: "docker",
|
||||
Image: image,
|
||||
})
|
||||
}
|
||||
|
||||
return list
|
||||
|
||||
Reference in New Issue
Block a user