Skip to content
This repository was archived by the owner on Mar 18, 2024. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion dockerclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -539,12 +539,39 @@ func (client *DockerClient) RemoveContainer(id string, force, volumes bool) erro
return err
}

func (client *DockerClient) ListImages(all bool) ([]*Image, error) {
func (client *DockerClient) ListImages(all bool, filter *ListFilter) ([]*Image, error) {
argAll := 0
if all {
argAll = 1
}

filters := make(map[string][]string)

if filter.Dangling {
filters["dangling"] = []string{"true"}
}

if len(filter.Keys) > 0 {
for _, key := range filter.Keys {
filters["key"] = append(filters["key"], key)
}
}

if len(filter.Labels) > 0 {
for _, label := range filter.Labels {
filters["label"] = append(filters["label"], label)
}
}

uri := fmt.Sprintf("/%s/images/json?all=%d", APIVersion, argAll)
if len(filters) > 0 {
mf, err := json.Marshal(filters)
if err != nil {
return nil, err
}
uri += fmt.Sprintf("&filters=%s", url.QueryEscape(string(mf)))
}

data, err := client.doRequest("GET", uri, nil, nil)
if err != nil {
return nil, err
Expand Down
2 changes: 1 addition & 1 deletion interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ type Client interface {
PullImage(name string, auth *AuthConfig) error
LoadImage(reader io.Reader) error
RemoveContainer(id string, force, volumes bool) error
ListImages(all bool) ([]*Image, error)
ListImages(all bool, filter *ListFilter) ([]*Image, error)
RemoveImage(name string) ([]*ImageDelete, error)
PauseContainer(name string) error
UnpauseContainer(name string) error
Expand Down
4 changes: 2 additions & 2 deletions mockclient/mock.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,8 @@ func (client *MockClient) RemoveContainer(id string, force, volumes bool) error
return args.Error(0)
}

func (client *MockClient) ListImages(all bool) ([]*dockerclient.Image, error) {
args := client.Mock.Called(all)
func (client *MockClient) ListImages(all bool, filter *ListFilter) ([]*dockerclient.Image, error) {
args := client.Mock.Called(all, filter)
return args.Get(0).([]*dockerclient.Image), args.Error(1)
}

Expand Down
6 changes: 6 additions & 0 deletions types.go
Original file line number Diff line number Diff line change
Expand Up @@ -437,3 +437,9 @@ type BuildImage struct {
CpuSetMems string
CgroupParent string
}

type ListFilter struct {
Dangling bool
Labels []string
Keys []string
}