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

View File

@ -112,32 +112,38 @@ func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth.
} }
} }
workerHostConfig := dockerclient.HostConfig{ if swarmOptions.Agent {
RestartPolicy: dockerclient.RestartPolicy{ workerHostConfig := dockerclient.HostConfig{
Name: "always", RestartPolicy: dockerclient.RestartPolicy{
MaximumRetryCount: 0, Name: "always",
}, MaximumRetryCount: 0,
} },
}
cmdWorker := []string{ cmdWorker := []string{
"join", "join",
"--advertise", "--advertise",
advertiseInfo, advertiseInfo,
} }
for _, option := range swarmOptions.ArbitraryJoinFlags { for _, option := range swarmOptions.ArbitraryJoinFlags {
cmdWorker = append(cmdWorker, "--"+option) cmdWorker = append(cmdWorker, "--"+option)
} }
cmdWorker = append(cmdWorker, swarmOptions.Discovery) cmdWorker = append(cmdWorker, swarmOptions.Discovery)
swarmWorkerConfig := &dockerclient.ContainerConfig{ swarmWorkerConfig := &dockerclient.ContainerConfig{
Image: swarmOptions.Image, Image: swarmOptions.Image,
Env: swarmOptions.Env, Env: swarmOptions.Env,
Cmd: cmdWorker, Cmd: cmdWorker,
HostConfig: workerHostConfig, HostConfig: workerHostConfig,
} }
if swarmOptions.IsExperimental { if swarmOptions.IsExperimental {
swarmWorkerConfig.Cmd = append([]string{"--experimental"}, swarmWorkerConfig.Cmd...) 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 IsSwarm bool
Address string Address string
Discovery string Discovery string
Agent bool
Master bool Master bool
Host string Host string
Image string Image string