Merge pull request #3365 from ndeloof/master

Fixes #2302 Possibility to create master with manager, but without agent
This commit is contained in:
Nathan LeClaire 2016-04-28 12:12:51 -07:00
commit ae9f392c10
3 changed files with 35 additions and 27 deletions

View File

@ -81,7 +81,7 @@ var (
},
cli.BoolFlag{
Name: "swarm",
Usage: "Configure Machine with Swarm",
Usage: "Configure Machine to join a Swarm cluster",
},
cli.StringFlag{
Name: "swarm-image",
@ -193,8 +193,9 @@ func cmdCreateInner(c CommandLine, api libmachine.API) error {
InstallURL: c.String("engine-install-url"),
},
SwarmOptions: &swarm.Options{
IsSwarm: c.Bool("swarm"),
IsSwarm: c.Bool("swarm") || c.Bool("swarm-master"),
Image: c.String("swarm-image"),
Agent: c.Bool("swarm"),
Master: c.Bool("swarm-master"),
Discovery: c.String("swarm-discovery"),
Address: c.String("swarm-addr"),

View File

@ -112,32 +112,38 @@ func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth.
}
}
workerHostConfig := dockerclient.HostConfig{
RestartPolicy: dockerclient.RestartPolicy{
Name: "always",
MaximumRetryCount: 0,
},
}
if swarmOptions.Agent {
workerHostConfig := dockerclient.HostConfig{
RestartPolicy: dockerclient.RestartPolicy{
Name: "always",
MaximumRetryCount: 0,
},
}
cmdWorker := []string{
"join",
"--advertise",
advertiseInfo,
}
for _, option := range swarmOptions.ArbitraryJoinFlags {
cmdWorker = append(cmdWorker, "--"+option)
}
cmdWorker = append(cmdWorker, swarmOptions.Discovery)
cmdWorker := []string{
"join",
"--advertise",
advertiseInfo,
}
for _, option := range swarmOptions.ArbitraryJoinFlags {
cmdWorker = append(cmdWorker, "--"+option)
}
cmdWorker = append(cmdWorker, swarmOptions.Discovery)
swarmWorkerConfig := &dockerclient.ContainerConfig{
Image: swarmOptions.Image,
Env: swarmOptions.Env,
Cmd: cmdWorker,
HostConfig: workerHostConfig,
}
if swarmOptions.IsExperimental {
swarmWorkerConfig.Cmd = append([]string{"--experimental"}, swarmWorkerConfig.Cmd...)
}
swarmWorkerConfig := &dockerclient.ContainerConfig{
Image: swarmOptions.Image,
Env: swarmOptions.Env,
Cmd: cmdWorker,
HostConfig: workerHostConfig,
}
if swarmOptions.IsExperimental {
swarmWorkerConfig.Cmd = append([]string{"--experimental"}, swarmWorkerConfig.Cmd...)
}
return mcndockerclient.CreateContainer(dockerHost, swarmWorkerConfig, "swarm-agent")
err = mcndockerclient.CreateContainer(dockerHost, swarmWorkerConfig, "swarm-agent")
if err != nil {
return err
}
}
return nil
}

View File

@ -8,6 +8,7 @@ type Options struct {
IsSwarm bool
Address string
Discovery string
Agent bool
Master bool
Host string
Image string