From 2cd222342322e50cc41e97bb01ee58ae79316aca Mon Sep 17 00:00:00 2001 From: Akihiro Suda Date: Tue, 18 Oct 2016 04:36:52 +0000 Subject: [PATCH] add `docker network prune` `docker network prune` prunes unused networks, including overlay ones. `docker system prune` also prunes unused networks. Signed-off-by: Akihiro Suda Upstream-commit: 171e533ba278de015984e88fa05effd11a5070b1 Component: cli --- components/cli/interface.go | 1 + components/cli/network_prune.go | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 components/cli/network_prune.go diff --git a/components/cli/interface.go b/components/cli/interface.go index f919612163..8abdb0f6fc 100644 --- a/components/cli/interface.go +++ b/components/cli/interface.go @@ -91,6 +91,7 @@ type NetworkAPIClient interface { NetworkInspectWithRaw(ctx context.Context, networkID string) (types.NetworkResource, []byte, error) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) NetworkRemove(ctx context.Context, networkID string) error + NetworksPrune(ctx context.Context, cfg types.NetworksPruneConfig) (types.NetworksPruneReport, error) } // NodeAPIClient defines API client methods for the nodes diff --git a/components/cli/network_prune.go b/components/cli/network_prune.go new file mode 100644 index 0000000000..01185f2e02 --- /dev/null +++ b/components/cli/network_prune.go @@ -0,0 +1,26 @@ +package client + +import ( + "encoding/json" + "fmt" + + "github.com/docker/docker/api/types" + "golang.org/x/net/context" +) + +// NetworksPrune requests the daemon to delete unused networks +func (cli *Client) NetworksPrune(ctx context.Context, cfg types.NetworksPruneConfig) (types.NetworksPruneReport, error) { + var report types.NetworksPruneReport + + serverResp, err := cli.post(ctx, "/networks/prune", nil, cfg, nil) + if err != nil { + return report, err + } + defer ensureReaderClosed(serverResp) + + if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { + return report, fmt.Errorf("Error retrieving network prune report: %v", err) + } + + return report, nil +}