From a22a9529fb86aa906a6a4e1f014826380f4e81d0 Mon Sep 17 00:00:00 2001 From: Alin Serdean Date: Tue, 11 Nov 2014 18:45:32 +0000 Subject: datapath-windows: Add functionality to return OVSPortName given a VM This commit adds functionality to return the ElementName of all the VNIC of a given virtual machine name. The function returns all the allocated ports including the ones which the OVS port name was not set. The default OVS port name that is set is the following: "ElementName : Dynamic Ethernet Switch Port". Example of usage: Import-Module OVS.psm1 Get-VMNetworkAdapterWithOvsPort test_ubuntu_1 $a = Get-VMNetworkAdapterWithOvsPort test_2_1 $a | findstr ElementName Requested-by: Nithin Raju Reported-at: https://github.com/openvswitch/ovs-issues/issues/51 Signed-off-by: Alin Gabriel Serdean Tested-by: Nithin Raju Acked-by: Nithin Raju Signed-off-by: Ben Pfaff --- datapath-windows/misc/OVS.psm1 | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) (limited to 'datapath-windows/misc') diff --git a/datapath-windows/misc/OVS.psm1 b/datapath-windows/misc/OVS.psm1 index 617f02550..d6b6b0047 100644 --- a/datapath-windows/misc/OVS.psm1 +++ b/datapath-windows/misc/OVS.psm1 @@ -40,7 +40,8 @@ function Set-VMNetworkAdapterOVSPort $sd = gwmi -namespace $ns -class Msvm_EthernetPortAllocationSettingData -Filter "ElementName = '$OVSPortName'" if($sd) { - if($sd.InstanceId.Contains($VMNetworkAdapter.Id)){ + if($sd.InstanceId.Contains($VMNetworkAdapter.Id)) + { throw "The OVS port name '$OVSPortName' is already assigned to this port." } throw "Cannot assign the OVS port name '$OVSPortName' as it is already assigned to an other port." @@ -107,13 +108,40 @@ function Get-VMByOVSPort $ports = gwmi -Namespace $ns -Query " Associators of {$vm} Where ResultClass = Msvm_EthernetPortAllocationSettingData" - if ($ports.ElementName -eq $OVSPortName){ + if ($ports.ElementName -eq $OVSPortName) + { return $vm } } } } +#This function returns the Msvm_VirtualSystemSettingData given a VMName +function Get-VMNetworkAdapterWithOVSPort +{ + [CmdletBinding()] + param + ( + [parameter(Mandatory=$true)] + [ValidateLength(1, 1024)] + [string]$vmName + ) + process + { + $ns = "root\virtualization\v2" + $vm = {} + $ports = {} + + $vm = gwmi -namespace $ns -class Msvm_VirtualSystemSettingData -Filter "ElementName = '$VMName'" + + $ports = gwmi -Namespace $ns -Query " + Associators of {$vm} Where + ResultClass = Msvm_EthernetPortAllocationSettingData" + + return $ports + } +} + function Check-WMIReturnValue($retVal) { if ($retVal.ReturnValue -ne 0) -- cgit v1.2.1