FIX #1858 Add engine port

Added flag `--generic-engine-port` to `generic` drive in order to specify other port than `2376` on
Docker engine.
Updated `generic` driver documentation.

Signed-off-by: Tiago Pires <tandrepires@gmail.com>
This commit is contained in:
Tiago Pires 2016-02-22 17:27:01 +00:00
parent ccc5fe6c7d
commit 63ea976b1d
4 changed files with 36 additions and 7 deletions

View File

@ -62,6 +62,7 @@ as a sudoer with `NOPASSWD`. See https://help.ubuntu.com/community/Sudoers.
### Options
- `--generic-engine-port`: Port to use for Docker Daemon (Note: This flag will not work with boot2docker).
- `--generic-ip-address`: **required** IP Address of host.
- `--generic-ssh-key`: Path to the SSH user private key.
- `--generic-ssh-user`: SSH username used to connect.
@ -73,6 +74,7 @@ Environment variables and default values:
| CLI option | Environment variable | Default |
| -------------------------- | -------------------- | ------------------------- |
| `--generic-engine-port` | `GENERIC_ENGINE_PORT`| `2376` |
| **`--generic-ip-address`** | `GENERIC_IP_ADDRESS` | - |
| `--generic-ssh-key` | `GENERIC_SSH_KEY` | _(defers to `ssh-agent`)_ |
| `--generic-ssh-user` | `GENERIC_SSH_USER` | `root` |

View File

@ -9,6 +9,7 @@ import (
"time"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/engine"
"github.com/docker/machine/libmachine/log"
"github.com/docker/machine/libmachine/mcnflag"
"github.com/docker/machine/libmachine/mcnutils"
@ -17,6 +18,7 @@ import (
type Driver struct {
*drivers.BaseDriver
EnginePort int
SSHKey string
}
@ -28,6 +30,12 @@ const (
// "docker hosts create"
func (d *Driver) GetCreateFlags() []mcnflag.Flag {
return []mcnflag.Flag{
mcnflag.IntFlag{
Name: "generic-engine-port",
Usage: "Docker engine port",
Value: engine.DefaultPort,
EnvVar: "GENERIC_ENGINE_PORT",
},
mcnflag.StringFlag{
Name: "generic-ip-address",
Usage: "IP Address of machine",
@ -57,6 +65,7 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
// NewDriver creates and returns a new instance of the driver
func NewDriver(hostName, storePath string) drivers.Driver {
return &Driver{
EnginePort: engine.DefaultPort,
BaseDriver: &drivers.BaseDriver{
MachineName: hostName,
StorePath: storePath,
@ -89,6 +98,7 @@ func (d *Driver) GetSSHKeyPath() string {
}
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
d.EnginePort = flags.Int("generic-engine-port")
d.IPAddress = flags.String("generic-ip-address")
d.SSHUser = flags.String("generic-ssh-user")
d.SSHKey = flags.String("generic-ssh-key")
@ -142,7 +152,7 @@ func (d *Driver) GetURL() (string, error) {
return "", err
}
return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, "2376")), nil
return fmt.Sprintf("tcp://%s", net.JoinHostPort(ip, strconv.Itoa(d.EnginePort))), nil
}
func (d *Driver) GetState() (state.State, error) {

View File

@ -12,6 +12,7 @@ func TestSetConfigFromFlags(t *testing.T) {
checkFlags := &drivers.CheckDriverOptions{
FlagsValues: map[string]interface{}{
"generic-engine-port": "3000",
"generic-ip-address": "localhost",
"generic-ssh-key": "path",
},

View File

@ -3,6 +3,7 @@ package provision
import (
"fmt"
"net/url"
"strconv"
"strings"
"github.com/docker/machine/libmachine/auth"
@ -30,15 +31,30 @@ func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth.
return err
}
parts := strings.Split(u.Host, ":")
enginePort := engine.DefaultPort
engineURL, err := p.GetDriver().GetURL()
if err != nil {
return err
}
parts := strings.Split(engineURL, ":")
if len(parts) == 3 {
dPort, err := strconv.Atoi(parts[2])
if err != nil {
return err
}
enginePort = dPort
}
parts = strings.Split(u.Host, ":")
port := parts[1]
dockerDir := p.GetDockerOptionsDir()
dockerHost := &mcndockerclient.RemoteDocker{
HostURL: fmt.Sprintf("tcp://%s:%d", ip, engine.DefaultPort),
HostURL: fmt.Sprintf("tcp://%s:%d", ip, enginePort),
AuthOption: &authOptions,
}
advertiseInfo := fmt.Sprintf("%s:%d", ip, engine.DefaultPort)
advertiseInfo := fmt.Sprintf("%s:%d", ip, enginePort)
if swarmOptions.Master {
advertiseMasterInfo := fmt.Sprintf("%s:%s", ip, "3376")