You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ro...@apache.org on 2020/09/24 05:29:58 UTC

[cloudstack] branch master updated: vmware: while plugging in nics get existing sorted nic devices (#4336)

This is an automated email from the ASF dual-hosted git repository.

rohit pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/master by this push:
     new 4f8b88b  vmware: while plugging in nics get existing sorted nic devices (#4336)
4f8b88b is described below

commit 4f8b88baea2a175760510d00ed8c1fe2bc652444
Author: Rohit Yadav <ro...@shapeblue.com>
AuthorDate: Thu Sep 24 10:59:39 2020 +0530

    vmware: while plugging in nics get existing sorted nic devices (#4336)
    
    In large environments, with VR having multiple nics when plugging in
    nic, it must get existing nics by sorted device ID otherwise it may
    cause incorrect nic plugging/order.
    
    Fixes #4246
    
    Signed-off-by: Rohit Yadav <ro...@shapeblue.com>
---
 .../java/com/cloud/hypervisor/vmware/resource/VmwareResource.java     | 4 ++--
 .../main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java    | 4 ++++
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index c79c023..86e06b6 100644
--- a/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/main/java/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -1180,7 +1180,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             }
 
             // find a usable device number in VMware environment
-            VirtualDevice[] nicDevices = vmMo.getNicDevices();
+            VirtualDevice[] nicDevices = vmMo.getSortedNicDevices();
             int deviceNumber = -1;
             for (VirtualDevice device : nicDevices) {
                 if (device.getUnitNumber() > deviceNumber)
@@ -1380,7 +1380,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         int nicIndex = allocPublicNicIndex(vmMo);
 
         try {
-            VirtualDevice[] nicDevices = vmMo.getNicDevices();
+            VirtualDevice[] nicDevices = vmMo.getSortedNicDevices();
 
             VirtualEthernetCard device = (VirtualEthernetCard) nicDevices[nicIndex];
 
diff --git a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
index 0e70799..f417e4e 100644
--- a/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
+++ b/vmware-base/src/main/java/com/cloud/hypervisor/vmware/mo/VirtualMachineMO.java
@@ -3060,6 +3060,10 @@ public class VirtualMachineMO extends BaseMO {
         return nics;
     }
 
+    public VirtualDevice[] getSortedNicDevices() throws Exception {
+        return getNicDevices(true).toArray(new VirtualDevice[0]);
+    }
+
     public VirtualDevice[] getNicDevices() throws Exception {
         return getNicDevices(false).toArray(new VirtualDevice[0]);
     }