merged vlan_id changes for hyperv by tomassrnka
This commit is contained in:
parent
f5ee8b8b7d
commit
9e23d16d9c
|
@ -116,6 +116,7 @@ module VagrantPlugins
|
|||
end
|
||||
|
||||
b2.use Provision
|
||||
b2.use NetSetVLan
|
||||
b2.use StartInstance
|
||||
b2.use WaitForIPAddress
|
||||
b2.use WaitForCommunicator, [:running]
|
||||
|
@ -216,6 +217,7 @@ module VagrantPlugins
|
|||
autoload :StopInstance, action_root.join('stop_instance')
|
||||
autoload :SuspendVM, action_root.join("suspend_vm")
|
||||
autoload :WaitForIPAddress, action_root.join("wait_for_ip_address")
|
||||
autoload :NetSetVLan, action_root.join("net_set_vlan")
|
||||
autoload :MessageWillNotDestroy, action_root.join("message_will_not_destroy")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
module VagrantPlugins
|
||||
module HyperV
|
||||
module Action
|
||||
class NetSetVLan
|
||||
def initialize(app, env)
|
||||
@app = app
|
||||
end
|
||||
|
||||
def call(env)
|
||||
vlan_id = env[:machine].provider_config.vlan_id
|
||||
|
||||
env[:ui].info("[Settings] [Network Adapter] Setting Vlan ID to: #{vlan_id}")
|
||||
env[:machine].provider.driver.net_set_vlan(vlan_id)
|
||||
@app.call(env)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -13,12 +13,18 @@ module VagrantPlugins
|
|||
attr_accessor :cpus
|
||||
attr_accessor :vmname
|
||||
|
||||
# The default VLAN ID for network interface for the virtual machine.
|
||||
#
|
||||
# @return [Integer]
|
||||
attr_accessor :vlan_id
|
||||
|
||||
def initialize
|
||||
@ip_address_timeout = UNSET_VALUE
|
||||
@memory = UNSET_VALUE
|
||||
@maxmemory = UNSET_VALUE
|
||||
@cpus = UNSET_VALUE
|
||||
@vmname = UNSET_VALUE
|
||||
@vlan_id = UNSET_VALUE
|
||||
end
|
||||
|
||||
def finalize!
|
||||
|
@ -29,6 +35,7 @@ module VagrantPlugins
|
|||
@maxmemory = nil if @maxmemory == UNSET_VALUE
|
||||
@cpus = nil if @cpus == UNSET_VALUE
|
||||
@vmname = nil if @vmname == UNSET_VALUE
|
||||
@vlan_id = 0 if @vlan_id == UNSET_VALUE
|
||||
end
|
||||
|
||||
def validate(machine)
|
||||
|
|
|
@ -77,6 +77,10 @@ module VagrantPlugins
|
|||
execute('import_vm.ps1', options)
|
||||
end
|
||||
|
||||
def net_set_vlan(vlan_id)
|
||||
execute("set_network_vlan.ps1", { VmId: vm_id, VlanId: vlan_id })
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def execute_powershell(path, options, &block)
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
param (
|
||||
[string]$VmId = $(throw "-VmId is required."),
|
||||
[int]$VlanId = $(throw "-VlanId ")
|
||||
)
|
||||
|
||||
# Include the following modules
|
||||
$presentDir = Split-Path -parent $PSCommandPath
|
||||
$modules = @()
|
||||
$modules += $presentDir + "\utils\write_messages.ps1"
|
||||
forEach ($module in $modules) { . $module }
|
||||
|
||||
try {
|
||||
$vm = Get-VM -Id $VmId -ErrorAction "stop"
|
||||
Set-VMNetworkAdapterVlan $vm -Access -Vlanid $VlanId
|
||||
}
|
||||
catch {
|
||||
Write-Error-Message "Failed to set VM's Vlan ID $_"
|
||||
}
|
|
@ -13,6 +13,18 @@ describe VagrantPlugins::HyperV::Config do
|
|||
subject.finalize!
|
||||
expect(subject.ip_address_timeout).to eq(120)
|
||||
end
|
||||
|
||||
describe "#vlan_id" do
|
||||
it "can be set" do
|
||||
subject.vlan_id = 100
|
||||
subject.finalize!
|
||||
expect(subject.vlan_id).to eq(100)
|
||||
end
|
||||
|
||||
it "defaults to a number" do
|
||||
subject.finalize!
|
||||
expect(subject.vlan_id).to eq(0)
|
||||
end
|
||||
end
|
||||
describe "#vmname" do
|
||||
it "can be set" do
|
||||
|
|
Loading…
Reference in New Issue