"docker swarm init --force-new-cluster" use limit

Signed-off-by: yangchenliang <yangchenliang@huawei.com>

When worker executor `docker swarm init
--force-new-cluster`,docker would hang.So only manager can process it.

Signed-off-by: yangchenliang <yangchenliang@huawei.com>
This commit is contained in:
yangchenliang 2017-09-18 14:47:19 +08:00
parent c5c0702a4d
commit 12e947efdb
2 changed files with 7 additions and 0 deletions

View file

@ -15,6 +15,9 @@ const (
// errSwarmCertificatesExpired is returned if docker was not started for the whole validity period and they had no chance to renew automatically.
errSwarmCertificatesExpired notAvailableError = "Swarm certificates have expired. To replace them, leave the swarm and join again."
// errSwarmNotManager is returned if the node is not a swarm manager.
errSwarmNotManager notAvailableError = "This node is not a swarm manager. Worker nodes can't be used to view or modify cluster state. Please run this command on a manager node or promote the current node to a manager."
)
type notFoundError struct {

View file

@ -26,9 +26,13 @@ func (c *Cluster) Init(req types.InitRequest) (string, error) {
defer c.controlMutex.Unlock()
if c.nr != nil {
if req.ForceNewCluster {
// Take c.mu temporarily to wait for presently running
// API handlers to finish before shutting down the node.
c.mu.Lock()
if !c.nr.nodeState.IsManager() {
return "", errSwarmNotManager
}
c.mu.Unlock()
if err := c.nr.Stop(); err != nil {