|
@@ -303,7 +303,7 @@ func (daemon *Daemon) foldFilter(view container.View, config *types.ContainerLis
|
|
var beforeContFilter, sinceContFilter *container.Snapshot
|
|
var beforeContFilter, sinceContFilter *container.Snapshot
|
|
|
|
|
|
err = psFilters.WalkValues("before", func(value string) error {
|
|
err = psFilters.WalkValues("before", func(value string) error {
|
|
- beforeContFilter, err = view.Get(value)
|
|
|
|
|
|
+ beforeContFilter, err = idOrNameFilter(view, value)
|
|
return err
|
|
return err
|
|
})
|
|
})
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -311,7 +311,7 @@ func (daemon *Daemon) foldFilter(view container.View, config *types.ContainerLis
|
|
}
|
|
}
|
|
|
|
|
|
err = psFilters.WalkValues("since", func(value string) error {
|
|
err = psFilters.WalkValues("since", func(value string) error {
|
|
- sinceContFilter, err = view.Get(value)
|
|
|
|
|
|
+ sinceContFilter, err = idOrNameFilter(view, value)
|
|
return err
|
|
return err
|
|
})
|
|
})
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -365,6 +365,30 @@ func (daemon *Daemon) foldFilter(view container.View, config *types.ContainerLis
|
|
names: view.GetAllNames(),
|
|
names: view.GetAllNames(),
|
|
}, nil
|
|
}, nil
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func idOrNameFilter(view container.View, value string) (*container.Snapshot, error) {
|
|
|
|
+ filter, err := view.Get(value)
|
|
|
|
+ switch err.(type) {
|
|
|
|
+ case container.NoSuchContainerError:
|
|
|
|
+ // Try name search instead
|
|
|
|
+ found := ""
|
|
|
|
+ for id, idNames := range view.GetAllNames() {
|
|
|
|
+ for _, eachName := range idNames {
|
|
|
|
+ if strings.TrimPrefix(value, "/") == strings.TrimPrefix(eachName, "/") {
|
|
|
|
+ if found != "" && found != id {
|
|
|
|
+ return nil, err
|
|
|
|
+ }
|
|
|
|
+ found = id
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if found != "" {
|
|
|
|
+ filter, err = view.Get(found)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return filter, err
|
|
|
|
+}
|
|
|
|
+
|
|
func portOp(key string, filter map[nat.Port]bool) func(value string) error {
|
|
func portOp(key string, filter map[nat.Port]bool) func(value string) error {
|
|
return func(value string) error {
|
|
return func(value string) error {
|
|
if strings.Contains(value, ":") {
|
|
if strings.Contains(value, ":") {
|