12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package lib
- import (
- "encoding/json"
- "net/http"
- "net/url"
- "github.com/docker/docker/api/types"
- "github.com/docker/docker/api/types/filters"
- )
- // NetworkCreate creates a new network in the docker host.
- func (cli *Client) NetworkCreate(options types.NetworkCreate) (types.NetworkCreateResponse, error) {
- var response types.NetworkCreateResponse
- serverResp, err := cli.post("/networks/create", nil, options, nil)
- if err != nil {
- return response, err
- }
- json.NewDecoder(serverResp.body).Decode(&response)
- ensureReaderClosed(serverResp)
- return response, err
- }
- // NetworkRemove removes an existent network from the docker host.
- func (cli *Client) NetworkRemove(networkID string) error {
- resp, err := cli.delete("/networks/"+networkID, nil, nil)
- ensureReaderClosed(resp)
- return err
- }
- // NetworkConnect connects a container to an existent network in the docker host.
- func (cli *Client) NetworkConnect(networkID, containerID string) error {
- nc := types.NetworkConnect{Container: containerID}
- resp, err := cli.post("/networks/"+networkID+"/connect", nil, nc, nil)
- ensureReaderClosed(resp)
- return err
- }
- // NetworkDisconnect disconnects a container from an existent network in the docker host.
- func (cli *Client) NetworkDisconnect(networkID, containerID string) error {
- nc := types.NetworkConnect{Container: containerID}
- resp, err := cli.post("/networks/"+networkID+"/disconnect", nil, nc, nil)
- ensureReaderClosed(resp)
- return err
- }
- // NetworkList returns the list of networks configured in the docker host.
- func (cli *Client) NetworkList(options types.NetworkListOptions) ([]types.NetworkResource, error) {
- query := url.Values{}
- if options.Filters.Len() > 0 {
- filterJSON, err := filters.ToParam(options.Filters)
- if err != nil {
- return nil, err
- }
- query.Set("filters", filterJSON)
- }
- var networkResources []types.NetworkResource
- resp, err := cli.get("/networks", query, nil)
- if err != nil {
- return networkResources, err
- }
- defer ensureReaderClosed(resp)
- err = json.NewDecoder(resp.body).Decode(&networkResources)
- return networkResources, err
- }
- // NetworkInspect returns the information for a specific network configured in the docker host.
- func (cli *Client) NetworkInspect(networkID string) (types.NetworkResource, error) {
- var networkResource types.NetworkResource
- resp, err := cli.get("/networks/"+networkID, nil, nil)
- if err != nil {
- if resp.statusCode == http.StatusNotFound {
- return networkResource, networkNotFoundError{networkID}
- }
- return networkResource, err
- }
- defer ensureReaderClosed(resp)
- err = json.NewDecoder(resp.body).Decode(&networkResource)
- return networkResource, err
- }
|