Merge pull request #24988 from mavenugo/snconnect

Prevent network connect/disconnect on swarm scoped networks
This commit is contained in:
Sebastiaan van Stijn 2016-07-25 10:46:45 +02:00 коммит произвёл GitHub
Родитель 4b94a6cb16 8f9066c468
Коммит cc493a52a4
1 изменённых файлов: 23 добавлений и 0 удалений

Просмотреть файл

@ -2,6 +2,7 @@ package network
import ( import (
"encoding/json" "encoding/json"
"fmt"
"net/http" "net/http"
"golang.org/x/net/context" "golang.org/x/net/context"
@ -119,6 +120,10 @@ func (n *networkRouter) postNetworkConnect(ctx context.Context, w http.ResponseW
return err return err
} }
if nw.Info().Dynamic() {
return newNetworkForbiddenError("Operation not supported for swarm scoped networks")
}
return n.backend.ConnectContainerToNetwork(connect.Container, nw.Name(), connect.EndpointConfig) return n.backend.ConnectContainerToNetwork(connect.Container, nw.Name(), connect.EndpointConfig)
} }
@ -141,6 +146,10 @@ func (n *networkRouter) postNetworkDisconnect(ctx context.Context, w http.Respon
return err return err
} }
if nw.Info().Dynamic() {
return newNetworkForbiddenError("Operation not supported for swarm scoped networks")
}
return n.backend.DisconnectContainerFromNetwork(disconnect.Container, nw, disconnect.Force) return n.backend.DisconnectContainerFromNetwork(disconnect.Container, nw, disconnect.Force)
} }
@ -283,3 +292,17 @@ func buildEndpointResource(e libnetwork.Endpoint) types.EndpointResource {
} }
return er return er
} }
// networkForbiddenError represents an authorization deny error
type networkForbiddenError struct {
error
}
// HTTPErrorStatusCode returns the authorization error status code (forbidden)
func (e networkForbiddenError) HTTPErrorStatusCode() int {
return http.StatusForbidden
}
func newNetworkForbiddenError(msg string) networkForbiddenError {
return networkForbiddenError{error: fmt.Errorf("%s", msg)}
}