Skip to content

Commit

Permalink
Reference Hyper-V switch by ID instead of name
Browse files Browse the repository at this point in the history
Keep track of selected Hyper-V switch using the ID instead of name
to prevent any encoding issues that may occur switching between
PowerShell and Ruby. With the IDs staying consistent, the switch
name can be fetched from the provided ID.

Fixes #9679 #8794 #9451
  • Loading branch information
chrisroberts committed Apr 27, 2018
1 parent b757324 commit e47e1df
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 8 deletions.
10 changes: 5 additions & 5 deletions plugins/providers/hyperv/action/import.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,9 @@ def call(env)
switchToFind = opts[:bridge]

if switchToFind
puts "Looking for switch with name: #{switchToFind}"
switch = switches.find { |s| s["Name"].downcase == switchToFind.downcase }["Name"]
puts "Found switch: #{switch}"
@logger.debug("Looking for switch with name: #{switchToFind}")
switch = switches.find { |s| s["Name"].downcase == switchToFind.downcase }["Id"]
@logger.debug("Found switch: #{switch}")
end
end

Expand All @@ -110,9 +110,9 @@ def call(env)
switch = switch.to_i - 1
switch = nil if switch < 0 || switch >= switches.length
end
switch = switches[switch]["Name"]
switch = switches[switch]["Id"]
else
switch = switches[0]["Name"]
switch = switches[0]["Id"]
end
end

Expand Down
2 changes: 1 addition & 1 deletion plugins/providers/hyperv/scripts/get_switches.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ $Dir = Split-Path $script:MyInvocation.MyCommand.Path
. ([System.IO.Path]::Combine($Dir, "utils\write_messages.ps1"))

$Switches = @(Hyper-V\Get-VMSwitch `
| Select-Object Name,SwitchType,NetAdapterInterfaceDescription)
| Select-Object Name,SwitchType,NetAdapterInterfaceDescription,Id)
Write-Output-Message $(ConvertTo-JSON $Switches)
6 changes: 4 additions & 2 deletions plugins/providers/hyperv/scripts/import_vm_vmcx.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
[Parameter(Mandatory=$true)]
[string]$data_path,

[string]$switchname=$null,
[string]$switchid=$null,
[string]$memory=$null,
[string]$maxmemory=$null,
[string]$cpus=$null,
Expand Down Expand Up @@ -83,8 +83,10 @@ if (!$memory) {
}
}

if (!$switchname) {
if (!$switchid) {
$switchname = (Hyper-V\Get-VMNetworkAdapter -VM $vmConfig.VM).SwitchName
} else {
$switchname = $(Hyper-V\Get-VMSwitch -Id $switchid).Name
}

# Enable nested virtualization if configured
Expand Down

0 comments on commit e47e1df

Please sign in to comment.