/
puller.go
35 lines (31 loc) · 877 Bytes
/
puller.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package maelstrom
import (
"github.com/coopernurse/maelstrom/pkg/db"
v1 "github.com/coopernurse/maelstrom/pkg/v1"
docker "github.com/docker/docker/client"
log "github.com/mgutz/logxi/v1"
)
func NewImagePuller(dockerClient *docker.Client, db db.Db, pullState *PullState) *ImagePuller {
return &ImagePuller{
dockerClient: dockerClient,
db: db,
pullState: pullState,
}
}
type ImagePuller struct {
dockerClient *docker.Client
db db.Db
pullState *PullState
}
func (i *ImagePuller) OnComponentNotification(change v1.DataChangedUnion) {
if change.PutComponent != nil {
comp, err := i.db.GetComponent(change.PutComponent.Name)
if err == nil {
if comp.Docker.PullImageOnPut {
i.pullState.Pull(comp, false)
}
} else {
log.Error("puller: unable to GetComponent", "err", err, "component", change.PutComponent.Name)
}
}
}