Arik Hadas has uploaded a new change for review.

Change subject: core: set boot order index 0 for unmanaged nic
......................................................................

core: set boot order index 0 for unmanaged nic

This patch fix NPE which was thrown when computing boot order for a VM
that has unmanaged network interface. The boot order index for unmanaged
network interfaces will now be 0.

Change-Id: If299f5c10dbfd15cf5ebe01f6d7911a7f92eb56f
Bug-Url: https://bugzilla.redhat.com/1155667
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java
M 
backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtilsTest.java
2 files changed, 21 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/34732/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java
index 3326efc..a46492a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtils.java
@@ -178,17 +178,17 @@
      * @return
      */
     private static int setNetworkBootOrder(VM vm, List<VmDevice> devices, int 
bootOrder) {
-        for (VmDevice pluggedInterface : sortInterfacesByName(vm, 
getPluggedInterfaces(devices))) {
+        for (VmDevice pluggedInterface : sortInterfacesByName(vm, 
getPluggedManagedInterfaces(devices))) {
             pluggedInterface.setBootOrder(++bootOrder);
         }
 
         return bootOrder;
     }
 
-    private static List<VmDevice> getPluggedInterfaces(List<VmDevice> devices) 
{
+    private static List<VmDevice> getPluggedManagedInterfaces(List<VmDevice> 
devices) {
         List<VmDevice> result = new ArrayList<VmDevice>();
         for (VmDevice device : devices) {
-            if (isBridge(device) && device.getIsPlugged()) {
+            if (isBridge(device) && device.getIsPlugged() && 
device.getIsManaged()) {
                 result.add(device);
             }
         }
diff --git 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtilsTest.java
 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtilsTest.java
index 8fa394b..99839f5 100644
--- 
a/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtilsTest.java
+++ 
b/backend/manager/modules/common/src/test/java/org/ovirt/engine/core/common/utils/VmDeviceCommonUtilsTest.java
@@ -48,6 +48,7 @@
         List<VmNetworkInterface> interfaces = new 
LinkedList<VmNetworkInterface>();
 
         VmDevice nic1 = createNetworkInterface(true, NIC_1_NAME, interfaces);
+        VmDevice unmanagedNic = createUnmanagedNetworkInterface(true);
         VmDevice nic2 = createNetworkInterface(true, NIC_2_NAME, interfaces);
         VmDevice nonBootableNic = createNetworkInterface(false, "", 
interfaces);
 
@@ -65,7 +66,7 @@
         // ordered according to their names and not according to their 
position in the list
         VmDeviceCommonUtils.updateVmDevicesBootOrder(
                 vm,
-                Arrays.asList(bootableDisk, nic2, cd, nic1, nonBootableDisk),
+                Arrays.asList(bootableDisk, nic2, cd, nic1, nonBootableDisk, 
unmanagedNic),
                 false);
 
         int index = 1;
@@ -73,6 +74,7 @@
         assertEquals("Wrong boot order for nic1", index++, 
nic1.getBootOrder());
         assertEquals("Wrong boot order for nic2", index++, 
nic2.getBootOrder());
         assertEquals("Wrong boot order for non bootable nic", 0, 
nonBootableNic.getBootOrder());
+        assertEquals("Wrong boot order for unmanaged nic", 0, 
unmanagedNic.getBootOrder());
         assertEquals("Wrong boot order for bootable disk", index++, 
bootableDisk.getBootOrder());
         assertEquals("Wrong boot order for non bootable disk", 0, 
nonBootableDisk.getBootOrder());
     }
@@ -80,17 +82,27 @@
     private VmDevice createNetworkInterface(boolean plugged, String name,
             List<VmNetworkInterface> interfaces) {
         Guid id = Guid.newGuid();
-        VmDevice device = new VmDevice();
-        device.setType(VmDeviceGeneralType.INTERFACE);
-        device.setDevice(VmDeviceType.BRIDGE.getName());
-        device.setIsPlugged(plugged);
-        device.setId(new VmDeviceId(id, null));
 
         VmNetworkInterface vmNic = new VmNetworkInterface();
         vmNic.setId(id);
         vmNic.setName(name);
         interfaces.add(vmNic);
 
+        return createNetworkInterfaceDevice(plugged, id);
+    }
+
+    private VmDevice createUnmanagedNetworkInterface(boolean plugged) {
+        VmDevice device = createNetworkInterfaceDevice(plugged, 
Guid.newGuid());
+        device.setIsManaged(false);
+        return device;
+    }
+
+    private VmDevice createNetworkInterfaceDevice(boolean plugged, Guid id) {
+        VmDevice device = new VmDevice();
+        device.setType(VmDeviceGeneralType.INTERFACE);
+        device.setDevice(VmDeviceType.BRIDGE.getName());
+        device.setIsPlugged(plugged);
+        device.setId(new VmDeviceId(id, null));
         return device;
     }
 


-- 
To view, visit http://gerrit.ovirt.org/34732
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If299f5c10dbfd15cf5ebe01f6d7911a7f92eb56f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <aha...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to