[ovs-dev] [PATCH] Update the WMI Script handling Hyper-V friendly port names

Ben Pfaff blp at nicira.com
Wed Oct 8 17:53:10 UTC 2014


Thanks for that information, I updated the patch before I applied it.

On Wed, Oct 08, 2014 at 05:47:05PM +0000, Alin Serdean wrote:
> Hi Ben,
> 
> The author is: Lucian Petrut. I just reviewed his work and tested it.
> 
> Think he has some environment problems with git send-email also:
> Signed-off-by: Lucian Petrut <lpetrut at cloudbasesolutions.com>
> 
> Thanks,
> Alin.
> 
> -----Mesaj original-----
> De la: Ben Pfaff [mailto:blp at nicira.com] 
> Trimis: Wednesday, October 8, 2014 8:44 PM
> C?tre: Alin Serdean
> Cc: Lucian Petrut; dev at openvswitch.org; Lucian Petrut
> Subiect: Re: [ovs-dev] [PATCH] Update the WMI Script handling Hyper-V friendly port names
> 
> I'm confused.  The "From:" at the top of the email indicates you're the author.  You can't sensibly ack your own patch.
> 
> Who is the author?
> 
> Thanks,
> 
> Ben.
> 
> On Wed, Oct 08, 2014 at 05:20:50PM +0000, Alin Serdean wrote:
> > Acked-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
> > 
> > 
> > 
> > 
> > -----Mesaj original-----
> > De la: Lucian Petrut [mailto:petrutlucian94 at gmail.com]
> > Trimis: Wednesday, October 8, 2014 8:05 PM
> > C?tre: dev at openvswitch.org
> > Cc: Alin Serdean; Lucian Petrut
> > Subiect: [PATCH] Update the WMI Script handling Hyper-V friendly port 
> > names
> > 
> > From: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
> > 
> > This patch ensures that the friendly port name has no more than 16 characters and also if it is not in use.
> > 
> > The method which checks the WMI jobs has been updated in order to provide relevant error codes/descriptions.
> > 
> > Methods retrieving the according VM and VM network adapter mapped to an OVS port have been added as well. They are called:
> > Get-VMNetworkAdapterByOVSPort
> > Get-VMByOVSPort
> > 
> > Example of usage:
> >  2 import-module .\OVS.psm1
> >  3 $vnic = Get-VMNetworkAdapter test_2_1
> >  4 $vnic[0] | Set-VMNetworkAdapterOVSPort -OVSPortName ovs-port-1
> >  5 $vnic[1] | Set-VMNetworkAdapterOVSPort -OVSPortName ovs-port-1
> >  6 $vnic[0] | Set-VMNetworkAdapterOVSPort -OVSPortName ovs-port-2
> >  7 $vnic[1] | Set-VMNetworkAdapterOVSPort -OVSPortName ovs-port-1
> >  8 Get-VMNetworkAdapterByOVSPort ovs-port-1
> >  9 Get-VMByOVSPort ovs-port-2
> > 
> > Signed-off-by: Lucian Petrut <lpetrut at cloudbasesolutions.com>
> > Tested-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
> > ---
> >  datapath-windows/misc/OVS.psm1 | 88 
> > +++++++++++++++++++++++++++++++++++++++---
> >  1 file changed, 83 insertions(+), 5 deletions(-)
> > 
> > diff --git a/datapath-windows/misc/OVS.psm1 
> > b/datapath-windows/misc/OVS.psm1 index 52ed3ba..b83b263 100644
> > --- a/datapath-windows/misc/OVS.psm1
> > +++ b/datapath-windows/misc/OVS.psm1
> > @@ -14,6 +14,10 @@ See the License for the specific language governing permissions and  limitations under the License.
> >  #>
> >  
> > +$WMI_JOB_STATUS_STARTED = 4096
> > +$WMI_JOB_STATE_RUNNING = 4
> > +$WMI_JOB_STATE_COMPLETED = 7
> > +
> >  $hvassembly = 
> > [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.HyperV.Po
> > werShell")
> >  
> >  function Set-VMNetworkAdapterOVSPort
> > @@ -25,12 +29,23 @@ function Set-VMNetworkAdapterOVSPort
> >          
> > [Microsoft.HyperV.PowerShell.VMNetworkAdapter]$VMNetworkAdapter,
> >  
> >          [parameter(Mandatory=$true)]
> > +        [ValidateLength(1, 16)]
> >          [string]$OVSPortName
> >      )
> >      process
> >      {
> >          $ns = "root\virtualization\v2"
> >          $EscapedId = $VMNetworkAdapter.Id.Replace('\', '\\')
> > +
> > +        $sd = gwmi -namespace $ns -class Msvm_EthernetPortAllocationSettingData -Filter "ElementName = '$OVSPortName'"
> > +        if($sd)
> > +        {
> > +            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."
> > +        }
> > +
> >          $sd = gwmi -namespace $ns -class Msvm_EthernetPortAllocationSettingData -Filter "InstanceId like '$EscapedId%'"
> >  
> >          if($sd)
> > @@ -51,26 +66,89 @@ function Set-VMNetworkAdapterOVSPort
> >      }
> >  }
> >  
> > +function Get-VMNetworkAdapterByOVSPort {
> > +    [CmdletBinding()]
> > +    param
> > +    (
> > +
> > +        [parameter(Mandatory=$true)]
> > +        [ValidateLength(1, 16)]
> > +        [string]$OVSPortName
> > +    )
> > +    process
> > +    {
> > +        $ns = "root\virtualization\v2"
> > +
> > +        $sd = gwmi -namespace $ns -class Msvm_EthernetPortAllocationSettingData -Filter "ElementName = '$OVSPortName'"
> > +        if($sd)
> > +        {
> > +            return $sd
> > +        }
> > +    }
> > +}
> > +
> > +function Get-VMByOVSPort
> > +{
> > +    [CmdletBinding()]
> > +    param
> > +    (
> > +        [parameter(Mandatory=$true)]
> > +        [ValidateLength(1, 16)]
> > +        [string]$OVSPortName
> > +    )
> > +    process
> > +    {
> > +        $ns = "root\virtualization\v2"
> > +
> > +        $vms = gwmi -namespace $ns -class Msvm_VirtualSystemSettingData
> > +        ForEach($vm in $vms)
> > +        {
> > +            $ports = gwmi -Namespace $ns -Query "
> > +                Associators of {$vm} Where
> > +                ResultClass = Msvm_EthernetPortAllocationSettingData"
> > +            if ($ports.ElementName -eq $OVSPortName){
> > +                return $vm
> > +            }
> > +        }
> > +    }
> > +}
> > +
> >  function Check-WMIReturnValue($retVal)  {
> >      if ($retVal.ReturnValue -ne 0)
> >      {
> > -        if ($retVal.ReturnValue -eq 4096)
> > +        if ($retVal.ReturnValue -eq $WMI_JOB_STATUS_STARTED)
> >          {
> >              do
> >              {
> >                  $job = [wmi]$retVal.Job
> >              }
> > -            while ($job.JobState -eq 4)
> > +            while ($job.JobState -eq $WMI_JOB_STATE_RUNNING)
> >  
> > -            if ($job.JobState -ne 7)
> > +            if ($job.JobState -ne $WMI_JOB_STATE_COMPLETED)
> >              {
> > -                throw "Job Failed"
> > +                echo $job.ReturnValue
> > +                $errorString = "Job Failed. Job State: " + $job.JobState.ToString()
> > +                if ($job.__CLASS -eq "Msvm_ConcreteJob")
> > +                {
> > +                    $errorString += " Error Code: " + $job.ErrorCode.ToString()
> > +                    $errorString += " Error Details: " + $job.ErrorDescription
> > +                }
> > +                else
> > +                {
> > +                    $error = $job.GetError()
> > +                    if ($error.Error)
> > +                    {
> > +                        $errorString += " Error:" + $error.Error
> > +                    }
> > +                }
> > +                throw $errorString
> >              }
> >          }
> >          else
> >          {
> > -            throw "Job Failed"
> > +            throw "Job Failed. Return Value: {0}" -f $job.ReturnValue
> >          }
> >      }
> >  }
> > --
> > 1.9.4.msysgit.1
> > 
> > _______________________________________________
> > dev mailing list
> > dev at openvswitch.org
> > http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list