Prevent user from deleting pre-defined networks

Signed-off-by: Madhu Venugopal <madhu@docker.com>
(cherry picked from commit ead62b59522bba132b9a14712e4350439e7fa2a5)

Conflicts:
	integration-cli/docker_api_network_test.go
This commit is contained in:
Madhu Venugopal
2015-10-30 20:27:44 -04:00
committed by Tibor Vass
parent c57d1e026d
commit 22cf3df4c0
4 changed files with 39 additions and 1 deletions
@@ -13,6 +13,7 @@ import (
"github.com/docker/docker/daemon"
"github.com/docker/docker/daemon/network"
"github.com/docker/docker/pkg/parsers/filters"
"github.com/docker/docker/runconfig"
"github.com/docker/libnetwork"
)
@@ -85,6 +86,11 @@ func (n *networkRouter) postNetworkCreate(ctx context.Context, w http.ResponseWr
return err
}
if runconfig.IsPreDefinedNetwork(create.Name) {
return httputils.WriteJSON(w, http.StatusForbidden,
fmt.Sprintf("%s is a pre-defined network and cannot be created", create.Name))
}
nw, err := n.daemon.GetNetwork(create.Name, daemon.NetworkByName)
if _, ok := err.(libnetwork.ErrNoSuchNetwork); err != nil && !ok {
return err
@@ -169,6 +175,11 @@ func (n *networkRouter) deleteNetwork(ctx context.Context, w http.ResponseWriter
return err
}
if runconfig.IsPreDefinedNetwork(nw.Name()) {
return httputils.WriteJSON(w, http.StatusForbidden,
fmt.Sprintf("%s is a pre-defined network and cannot be removed", nw.Name()))
}
return nw.Delete()
}