[ovs-dev] [PATCH] Update the WMI Script handling Hyper-V friendly port names
Ben Pfaff
blp at nicira.com
Wed Oct 8 17:43:45 UTC 2014
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
> http://openvswitch.org/mailman/listinfo/dev
More information about the dev
mailing list