func procGetNetworks(c libnetwork.NetworkController, vars map[string]string, body []byte) (interface{}, *responseStatus) { var list []*networkResource // Look for query filters and validate name, queryByName := vars[urlNwName] shortID, queryByPid := vars[urlNwPID] if queryByName && queryByPid { return nil, &badQueryResponse } if queryByName { if nw, errRsp := findNetwork(c, name, byName); errRsp.isOK() { list = append(list, buildNetworkResource(nw)) } } else if queryByPid { // Return all the prefix-matching networks l := func(nw libnetwork.Network) bool { if strings.HasPrefix(nw.ID(), shortID) { list = append(list, buildNetworkResource(nw)) } return false } c.WalkNetworks(l) } else { for _, nw := range c.Networks() { list = append(list, buildNetworkResource(nw)) } } return list, &successResponse }
func procGetNetworks(c libnetwork.NetworkController, vars map[string]string, body []byte) (interface{}, *responseStatus) { var list []*networkResource for _, nw := range c.Networks() { nwr := buildNetworkResource(nw) list = append(list, nwr) } return list, &successResponse }
func findService(c libnetwork.NetworkController, svs string, svBy int) (libnetwork.Endpoint, *responseStatus) { for _, nw := range c.Networks() { var ( ep libnetwork.Endpoint err error ) switch svBy { case byID: ep, err = nw.EndpointByID(svs) case byName: ep, err = nw.EndpointByName(svs) default: panic(fmt.Sprintf("unexpected selector for service search: %d", svBy)) } if err == nil { return ep, &successResponse } else if _, ok := err.(types.NotFoundError); !ok { return nil, convertNetworkError(err) } } return nil, &responseStatus{Status: "Service not found", StatusCode: http.StatusNotFound} }
/****************** Service interface *******************/ func procGetServices(c libnetwork.NetworkController, vars map[string]string, body []byte) (interface{}, *responseStatus) { // Look for query filters and validate nwName, filterByNwName := vars[urlNwName] svName, queryBySvName := vars[urlEpName] shortID, queryBySvPID := vars[urlEpPID] if filterByNwName && queryBySvName || filterByNwName && queryBySvPID || queryBySvName && queryBySvPID { return nil, &badQueryResponse } var list []*endpointResource switch { case filterByNwName: // return all service present on the specified network nw, errRsp := findNetwork(c, nwName, byName) if !errRsp.isOK() { return list, &successResponse } for _, ep := range nw.Endpoints() { epr := buildEndpointResource(ep) list = append(list, epr) } case queryBySvName: // Look in each network for the service with the specified name l := func(ep libnetwork.Endpoint) bool { if ep.Name() == svName { list = append(list, buildEndpointResource(ep)) return true } return false } for _, nw := range c.Networks() { nw.WalkEndpoints(l) } case queryBySvPID: // Return all the prefix-matching services l := func(ep libnetwork.Endpoint) bool { if strings.HasPrefix(ep.ID(), shortID) { list = append(list, buildEndpointResource(ep)) } return false } for _, nw := range c.Networks() { nw.WalkEndpoints(l) } default: for _, nw := range c.Networks() { for _, ep := range nw.Endpoints() { epr := buildEndpointResource(ep) list = append(list, epr) } } } return list, &successResponse }