Skip to content

Commit

Permalink
Merge pull request #10603 from cdoern/networksQuery
Browse files Browse the repository at this point in the history
implemented verbose and scope as possible
  • Loading branch information
cdoern authored Jun 8, 2021
2 parents 9938557 + 5117ded commit da1bade
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 13 deletions.
31 changes: 18 additions & 13 deletions pkg/api/handlers/compat/networks.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,24 @@ import (
func InspectNetwork(w http.ResponseWriter, r *http.Request) {
runtime := r.Context().Value("runtime").(*libpod.Runtime)

// FYI scope and version are currently unused but are described by the API
// Leaving this for if/when we have to enable these
// query := struct {
// scope string
// verbose bool
// }{
// // override any golang type defaults
// }
// decoder := r.Context().Value("decoder").(*schema.Decoder)
// if err := decoder.Decode(&query, r.URL.Query()); err != nil {
// utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
// return
// }
// scope is only used to see if the user passes any illegal value, verbose is not used but implemented
// for compatibility purposes only.
query := struct {
scope string `schema:"scope"`
verbose bool `schema:"verbose"`
}{
scope: "local",
}
decoder := r.Context().Value("decoder").(*schema.Decoder)
if err := decoder.Decode(&query, r.URL.Query()); err != nil {
utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
return
}

if query.scope != "local" {
utils.Error(w, "Invalid scope value. Can only be local.", http.StatusBadRequest, define.ErrInvalidArg)
return
}
config, err := runtime.GetConfig()
if err != nil {
utils.InternalServerError(w, err)
Expand Down
10 changes: 10 additions & 0 deletions pkg/api/server/register_networks.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,16 @@ func (s *APIServer) registerNetworkHandlers(r *mux.Router) error {
// type: string
// required: true
// description: the name of the network
// - in: query
// name: verbose
// type: boolean
// required: false
// description: Detailed inspect output for troubleshooting
// - in: query
// name: scope
// type: string
// required: false
// description: Filter the network by scope (swarm, global, or local)
// produces:
// - application/json
// responses:
Expand Down
27 changes: 27 additions & 0 deletions test/apiv2/python/rest_api/test_v2_0_0_network.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,33 @@ def test_create(self):
"TestNetwork",
payload["NetworkSettings"]["Networks"]["TestNetwork"]["NetworkID"],
)
def test_inspect(self):
name = f"Network_{random.getrandbits(160):x}"
create = requests.post(self.podman_url + "/v1.40/networks/create", json={"Name": name})
self.assertEqual(create.status_code, 201, create.text)
self.assertId(create.content)

net = create.json()
self.assertIsInstance(net, dict)
self.assertNotEqual(net["Id"], name)
ident = net["Id"]

ls = requests.get(self.podman_url + "/v1.40/networks")
self.assertEqual(ls.status_code, 200, ls.text)

networks = ls.json()
self.assertIsInstance(networks, list)

found = False
for net in networks:
if net["Name"] == name:
found = True
break
self.assertTrue(found, f"Network '{name}' not found")

inspect = requests.get(self.podman_url + f"/v1.40/networks/{ident}?verbose=false&scope=local")
self.assertEqual(inspect.status_code, 200, inspect.text)


def test_crud(self):
name = f"Network_{random.getrandbits(160):x}"
Expand Down

0 comments on commit da1bade

Please sign in to comment.