Files
fx-serverless/container_runtimes/docker/http/network.go

59 lines
1.2 KiB
Go

package api
import (
"encoding/json"
dockerTypes "github.com/docker/docker/api/types"
filters "github.com/docker/docker/api/types/filters"
"github.com/google/go-querystring/query"
)
// GetNetwork get a network
func (api *API) GetNetwork(name string) ([]dockerTypes.NetworkResource, error) {
path := "/networks"
var networks []dockerTypes.NetworkResource
arg := filters.NewArgs(filters.KeyValuePair{
Key: "name",
Value: name,
})
// opt := dockerTypes.NetworkListOptions{Filters: arg}
q, err := json.Marshal(arg)
if err != nil {
return networks, err
}
type Filters struct {
Items string `url:"filters"`
}
filters := Filters{Items: string(q)}
qs, err := query.Values(filters)
if err != nil {
return networks, err
}
if err := api.get(path, qs.Encode(), &networks); err != nil {
return networks, err
}
return networks, nil
}
// CreateNetwork create a network
func (api *API) CreateNetwork(name string) error {
path := "/networks/create"
ncReq := dockerTypes.NetworkCreateRequest{
Name: name,
}
body, err := json.Marshal(ncReq)
if err != nil {
return err
}
var resp dockerTypes.NetworkCreateResponse
if err := api.post(path, body, 201, resp); err != nil {
return err
}
return nil
}