mirror of
https://github.com/containers/podman.git
synced 2025-08-06 11:32:07 +08:00
APIv2 Add network list filtering
Add the filter option to the libpod endpoint. Add support for the name filter on the docker endpoint. Add apiv2 tests for the network list endpoints. Enable podman network integration tests for remote. Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
This commit is contained in:
@ -5,6 +5,7 @@ import (
|
||||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
@ -177,9 +178,11 @@ func ListNetworks(w http.ResponseWriter, r *http.Request) {
|
||||
utils.InternalServerError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
filterNames, nameFilterExists := query.Filters["name"]
|
||||
// TODO remove when filters are implemented
|
||||
if len(query.Filters) > 0 {
|
||||
utils.InternalServerError(w, errors.New("filters for listing networks is not implemented"))
|
||||
if (!nameFilterExists && len(query.Filters) > 0) || len(query.Filters) > 1 {
|
||||
utils.InternalServerError(w, errors.New("only the name filter for listing networks is implemented"))
|
||||
return
|
||||
}
|
||||
netNames, err := network.GetNetworkNamesFromFileSystem(config)
|
||||
@ -187,6 +190,21 @@ func ListNetworks(w http.ResponseWriter, r *http.Request) {
|
||||
utils.InternalServerError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// filter by name
|
||||
if nameFilterExists {
|
||||
names := []string{}
|
||||
for _, name := range netNames {
|
||||
for _, filter := range filterNames {
|
||||
if strings.Contains(name, filter) {
|
||||
names = append(names, name)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
netNames = names
|
||||
}
|
||||
|
||||
reports := make([]*types.NetworkResource, 0, len(netNames))
|
||||
for _, name := range netNames {
|
||||
report, err := getNetworkResourceByName(name, runtime)
|
||||
|
Reference in New Issue
Block a user