mirror of
https://github.com/crazy-max/diun.git
synced 2025-12-21 13:23:09 +01:00
48 lines
993 B
Go
48 lines
993 B
Go
package swarm
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/crazy-max/diun/internal/model"
|
|
"github.com/crazy-max/diun/internal/provider"
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
// Client represents an active swarm provider object
|
|
type Client struct {
|
|
*provider.Client
|
|
elts map[string]model.PrdSwarm
|
|
logger zerolog.Logger
|
|
}
|
|
|
|
// New creates new swarm provider instance
|
|
func New(elts map[string]model.PrdSwarm) *provider.Client {
|
|
return &provider.Client{
|
|
Handler: &Client{
|
|
elts: elts,
|
|
logger: log.With().Str("provider", "swarm").Logger(),
|
|
},
|
|
}
|
|
}
|
|
|
|
// ListJob returns job list to process
|
|
func (c *Client) ListJob() []model.Job {
|
|
if len(c.elts) == 0 {
|
|
return []model.Job{}
|
|
}
|
|
|
|
c.logger.Info().Msgf("Found %d image(s) to analyze", len(c.elts))
|
|
var list []model.Job
|
|
for id, elt := range c.elts {
|
|
for _, img := range c.listServiceImage(id, elt) {
|
|
list = append(list, model.Job{
|
|
Provider: fmt.Sprintf("swarm-%s", id),
|
|
Image: img,
|
|
})
|
|
}
|
|
}
|
|
|
|
return list
|
|
}
|