59 lines
1.2 KiB
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
|
|
}
|