[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