/
image.go
56 lines (50 loc) · 1.25 KB
/
image.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package docker
import (
"context"
"strings"
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters"
log "github.com/sirupsen/logrus"
)
const CmdEnvKey = "MUFAASSOURCECMD"
// List return built images, filtered by a list of docker
// compatible filters (key=value) eg. [id=..., name=...]
func ImageList(listFilters []string) ([]types.ImageSummary, error) {
cli, err := getClient()
if err != nil {
return nil, err
}
f, err := buildFilter(listFilters)
if err != nil {
return nil, err
}
if log.GetLevel() == log.DebugLevel {
strfilter, err := filters.ToParam(f)
if err != nil {
log.Warnf("Failed to convert params:, %s", err.Error())
} else {
log.Debugf("Image filters: %s", strings.Replace(strfilter, "\\\"", "\"", -1))
}
}
images, err := cli.ImageList(context.Background(), types.ImageListOptions{
All: true,
Filters: f,
})
if err != nil {
return nil, err
}
return images, nil
}
//ImageRemove remove an image
func ImageRemove(id string, force bool) (err error) {
cli, err := getClient()
if err != nil {
return err
}
log.Debugf("Remove image %s", id)
_, err = cli.ImageRemove(context.Background(), id, types.ImageRemoveOptions{
Force: force,
PruneChildren: force,
})
return err
}