github.com/walkingsparrow/docker@v1.4.2-0.20151218153551-b708a2249bfa/api/client/lib/network.go (about)

     1  package lib
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/http"
     6  
     7  	"github.com/docker/docker/api/types"
     8  )
     9  
    10  // NetworkCreate creates a new network in the docker host.
    11  func (cli *Client) NetworkCreate(options types.NetworkCreate) (types.NetworkCreateResponse, error) {
    12  	var response types.NetworkCreateResponse
    13  	serverResp, err := cli.post("/networks/create", nil, options, nil)
    14  	if err != nil {
    15  		return response, err
    16  	}
    17  
    18  	json.NewDecoder(serverResp.body).Decode(&response)
    19  	ensureReaderClosed(serverResp)
    20  	return response, err
    21  }
    22  
    23  // NetworkRemove removes an existent network from the docker host.
    24  func (cli *Client) NetworkRemove(networkID string) error {
    25  	resp, err := cli.delete("/networks/"+networkID, nil, nil)
    26  	ensureReaderClosed(resp)
    27  	return err
    28  }
    29  
    30  // NetworkConnect connects a container to an existent network in the docker host.
    31  func (cli *Client) NetworkConnect(networkID, containerID string) error {
    32  	nc := types.NetworkConnect{Container: containerID}
    33  	resp, err := cli.post("/networks/"+networkID+"/connect", nil, nc, nil)
    34  	ensureReaderClosed(resp)
    35  	return err
    36  }
    37  
    38  // NetworkDisconnect disconnects a container from an existent network in the docker host.
    39  func (cli *Client) NetworkDisconnect(networkID, containerID string) error {
    40  	nc := types.NetworkConnect{Container: containerID}
    41  	resp, err := cli.post("/networks/"+networkID+"/disconnect", nil, nc, nil)
    42  	ensureReaderClosed(resp)
    43  	return err
    44  }
    45  
    46  // NetworkList returns the list of networks configured in the docker host.
    47  func (cli *Client) NetworkList() ([]types.NetworkResource, error) {
    48  	var networkResources []types.NetworkResource
    49  	resp, err := cli.get("/networks", nil, nil)
    50  	if err != nil {
    51  		return networkResources, err
    52  	}
    53  	defer ensureReaderClosed(resp)
    54  	err = json.NewDecoder(resp.body).Decode(&networkResources)
    55  	return networkResources, err
    56  }
    57  
    58  // NetworkInspect returns the information for a specific network configured in the docker host.
    59  func (cli *Client) NetworkInspect(networkID string) (types.NetworkResource, error) {
    60  	var networkResource types.NetworkResource
    61  	resp, err := cli.get("/networks/"+networkID, nil, nil)
    62  	if err != nil {
    63  		if resp.statusCode == http.StatusNotFound {
    64  			return networkResource, networkNotFoundError{networkID}
    65  		}
    66  		return networkResource, err
    67  	}
    68  	defer ensureReaderClosed(resp)
    69  	err = json.NewDecoder(resp.body).Decode(&networkResource)
    70  	return networkResource, err
    71  }