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

Nithin Raju nithin at vmware.com
Wed Oct 8 17:46:26 UTC 2014


Ben,
Signed off says:
>> Signed-off-by: Lucian Petrut <lpetrut at cloudbasesolutions.com>


I don't know what:
>> From: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>

implies then.

-- Nithin

On Oct 8, 2014, at 10:43 AM, Ben Pfaff <blp at nicira.com>
 wrote:

> 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.PowerShell")
>> 
>> 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
>> https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=ubrOpIWavCMqX4l4j1LEVpTfDj%2FD5Qyn8KCoJIBGvzo%3D%0A&m=z5n4vXDmHp8x967YXoFfSLn7Zn8boi0ZF4scp90KFZ8%3D%0A&s=fea6a070301fd3c4902cdf2e775dfd2296406dffa713c670d1d62974207c3a88
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=ubrOpIWavCMqX4l4j1LEVpTfDj%2FD5Qyn8KCoJIBGvzo%3D%0A&m=z5n4vXDmHp8x967YXoFfSLn7Zn8boi0ZF4scp90KFZ8%3D%0A&s=fea6a070301fd3c4902cdf2e775dfd2296406dffa713c670d1d62974207c3a88

Thanks,
-- Nithin




More information about the dev mailing list