[ovs-dev] [PATCH] datapath-windows: Add functionality to return OVSPortName given a VM

Alin Serdean aserdean at cloudbasesolutions.com
Tue Nov 11 18:45:32 UTC 2014


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

Signed-off-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
---
 datapath-windows/misc/OVS.psm1 | 32 ++++++++++++++++++++++++++++++--
 1 file changed, 30 insertions(+), 2 deletions(-)

diff --git a/datapath-windows/misc/OVS.psm1 b/datapath-windows/misc/OVS.psm1
index 617f025..d6b6b00 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)
-- 
1.9.4.msysgit.1



More information about the dev mailing list