mirror of https://github.com/docker/docs.git
Merge pull request #2932 from sipicsg/master
added hyperv static mac address and vlan option for machine creation
This commit is contained in:
commit
cf7885163c
|
@ -31,13 +31,17 @@ Options:
|
|||
- `--hyperv-disk-size`: Size of disk for the host in MB.
|
||||
- `--hyperv-memory`: Size of memory for the host in MB.
|
||||
- `--hyperv-cpu-count`: Number of CPUs for the host.
|
||||
- `--hyperv-static-macaddress`: Hyper-V network adapter's static MAC address.
|
||||
- `--hyperv-vlan-id`: Hyper-V network adapter's VLAN ID if any.
|
||||
|
||||
Environment variables and default values:
|
||||
|
||||
| CLI option | Environment variable | Default |
|
||||
| -------------------------- | ------------------------ | ------------------------ |
|
||||
| `--hyperv-boot2docker-url` | `HYPERV_BOOT2DOCKER_URL` | _Latest boot2docker url_ |
|
||||
| `--hyperv-virtual-switch` | `HYPERV_VIRTUAL_SWITCH` | _first found_ |
|
||||
| `--hyperv-disk-size` | `HYPERV_DISK_SIZE` | `20000` |
|
||||
| `--hyperv-memory` | `HYPERV_MEMORY` | `1024` |
|
||||
| `--hyperv-cpu-count` | `HYPERV_CPU_COUNT` | `1` |
|
||||
| CLI option | Environment variable | Default |
|
||||
| ---------------------------- | -------------------------- | ------------------------ |
|
||||
| `--hyperv-boot2docker-url` | `HYPERV_BOOT2DOCKER_URL` | _Latest boot2docker url_ |
|
||||
| `--hyperv-virtual-switch` | `HYPERV_VIRTUAL_SWITCH` | _first found_ |
|
||||
| `--hyperv-disk-size` | `HYPERV_DISK_SIZE` | `20000` |
|
||||
| `--hyperv-memory` | `HYPERV_MEMORY` | `1024` |
|
||||
| `--hyperv-cpu-count` | `HYPERV_CPU_COUNT` | `1` |
|
||||
| `--hyperv-static-macaddress` | `HYPERV_STATIC_MACADDRESS` | _undefined_ |
|
||||
| `--hyperv-cpu-count` | `HYPERV_VLAN_ID` | _undefined_ |
|
||||
|
|
|
@ -23,12 +23,15 @@ type Driver struct {
|
|||
DiskSize int
|
||||
MemSize int
|
||||
CPU int
|
||||
MacAddr string
|
||||
VLanID int
|
||||
}
|
||||
|
||||
const (
|
||||
defaultDiskSize = 20000
|
||||
defaultMemory = 1024
|
||||
defaultCPU = 1
|
||||
defaultVLanID = 0
|
||||
)
|
||||
|
||||
// NewDriver creates a new Hyper-v driver with default settings.
|
||||
|
@ -76,6 +79,17 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
|
|||
Value: defaultCPU,
|
||||
EnvVar: "HYPERV_CPU_COUNT",
|
||||
},
|
||||
mcnflag.StringFlag{
|
||||
Name: "hyperv-static-macaddress",
|
||||
Usage: "Hyper-V network adapter's static MAC address.",
|
||||
EnvVar: "HYPERV_STATIC_MACADDRESS",
|
||||
},
|
||||
mcnflag.IntFlag{
|
||||
Name: "hyperv-vlan-id",
|
||||
Usage: "Hyper-V network adapter's VLAN ID if any",
|
||||
Value: defaultVLanID,
|
||||
EnvVar: "HYPERV_VLAN_ID",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -88,6 +102,8 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
|
|||
d.DiskSize = flags.Int("hyperv-disk-size")
|
||||
d.MemSize = flags.Int("hyperv-memory")
|
||||
d.CPU = flags.Int("hyperv-cpu-count")
|
||||
d.MacAddr = flags.String("hyperv-static-macaddress")
|
||||
d.VLanID = flags.Int("hyperv-vlan-id")
|
||||
d.SSHUser = "docker"
|
||||
d.SetSwarmConfigFromFlags(flags)
|
||||
|
||||
|
@ -213,6 +229,23 @@ func (d *Driver) Create() error {
|
|||
}
|
||||
}
|
||||
|
||||
if d.MacAddr != "" {
|
||||
if err := cmd("Set-VMNetworkAdapter",
|
||||
"-VMName", d.MachineName,
|
||||
"-StaticMacAddress", fmt.Sprintf("\"%s\"", d.MacAddr)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if d.VLanID > 0 {
|
||||
if err := cmd("Set-VMNetworkAdapterVlan",
|
||||
"-VMName", d.MachineName,
|
||||
"-Access",
|
||||
"-VlanId", fmt.Sprintf("%d", d.VLanID)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if err := cmd("Set-VMDvdDrive",
|
||||
"-VMName", d.MachineName,
|
||||
"-Path", quote(d.ResolveStorePath("boot2docker.iso"))); err != nil {
|
||||
|
|
|
@ -28,6 +28,8 @@ func TestSetConfigFromDefaultFlags(t *testing.T) {
|
|||
assert.Equal(t, defaultDiskSize, driver.DiskSize)
|
||||
assert.Equal(t, defaultMemory, driver.MemSize)
|
||||
assert.Equal(t, defaultCPU, driver.CPU)
|
||||
assert.Equal(t, "", driver.MacAddr)
|
||||
assert.Equal(t, defaultVLanID, driver.VLanID)
|
||||
assert.Equal(t, "docker", driver.GetSSHUsername())
|
||||
}
|
||||
|
||||
|
@ -36,11 +38,13 @@ func TestSetConfigFromCustomFlags(t *testing.T) {
|
|||
|
||||
checkFlags := &drivers.CheckDriverOptions{
|
||||
FlagsValues: map[string]interface{}{
|
||||
"hyperv-boot2docker-url": "B2D_URL",
|
||||
"hyperv-virtual-switch": "TheSwitch",
|
||||
"hyperv-disk-size": 100000,
|
||||
"hyperv-memory": 4096,
|
||||
"hyperv-cpu-count": 4,
|
||||
"hyperv-boot2docker-url": "B2D_URL",
|
||||
"hyperv-virtual-switch": "TheSwitch",
|
||||
"hyperv-disk-size": 100000,
|
||||
"hyperv-memory": 4096,
|
||||
"hyperv-cpu-count": 4,
|
||||
"hyperv-static-macaddress": "00:0a:95:9d:68:16",
|
||||
"hyperv-vlan-id": 2,
|
||||
},
|
||||
CreateFlags: driver.GetCreateFlags(),
|
||||
}
|
||||
|
@ -58,5 +62,7 @@ func TestSetConfigFromCustomFlags(t *testing.T) {
|
|||
assert.Equal(t, 100000, driver.DiskSize)
|
||||
assert.Equal(t, 4096, driver.MemSize)
|
||||
assert.Equal(t, 4, driver.CPU)
|
||||
assert.Equal(t, "00:0a:95:9d:68:16", driver.MacAddr)
|
||||
assert.Equal(t, 2, driver.VLanID)
|
||||
assert.Equal(t, "docker", driver.GetSSHUsername())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue