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 <[email protected]> Thanks, Alin. -----Mesaj original----- De la: Ben Pfaff [mailto:[email protected]] Trimis: Wednesday, October 8, 2014 8:44 PM Către: Alin Serdean Cc: Lucian Petrut; [email protected]; 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 <[email protected]> > > > > > -----Mesaj original----- > De la: Lucian Petrut [mailto:[email protected]] > Trimis: Wednesday, October 8, 2014 8:05 PM > C?tre: [email protected] > Cc: Alin Serdean; Lucian Petrut > Subiect: [PATCH] Update the WMI Script handling Hyper-V friendly port > names > > From: Alin Gabriel Serdean <[email protected]> > > 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 <[email protected]> > Tested-by: Alin Gabriel Serdean <[email protected]> > --- > 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 > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
