Yevgeny Zaspitsky has uploaded a new change for review.

Change subject: engine: Enable detaching network from host when a VM has an 
unplugged VNIC profile of that network
......................................................................

engine: Enable detaching network from host when a VM has an unplugged
VNIC profile of that network

Enable detaching network from host when a VM has an unplugged VNIC
profile of that network.

Change-Id: I10db794df55b25925423166d33549b92856e9dd0
Bug-Url: https://bugzilla.redhat.com/1115101
Signed-off-by: Yevgeny Zaspitsky <yzasp...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java
3 files changed, 32 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/29878/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java
index 99082dc..35f79a5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/VmInterfaceManager.java
@@ -140,7 +140,7 @@
     }
 
     /**
-     * Finds active VMs which uses a network from a given networks list
+     * Finds active VMs which actively uses a network from a given networks 
list
      *
      * @param vdsId
      *            The host id on which VMs are running
@@ -149,12 +149,18 @@
      * @return A list of VM names which uses the networks
      */
     public List<String> findActiveVmsUsingNetworks(Guid vdsId, List<String> 
networks) {
+        if (networks.isEmpty()) {
+            return Collections.emptyList();
+        }
+
         List<VM> runningVms = getVmDAO().getAllRunningForVds(vdsId);
         List<String> vmNames = new ArrayList<String>();
         for (VM vm : runningVms) {
             List<VmNetworkInterface> vmInterfaces = 
getVmNetworkInterfaceDao().getAllForVm(vm.getId());
             for (VmNetworkInterface vmNic : vmInterfaces) {
-                if (vmNic.getNetworkName() != null && 
networks.contains(vmNic.getNetworkName())) {
+                if (vmNic.isPlugged() &&
+                    vmNic.getNetworkName() != null &&
+                    networks.contains(vmNic.getNetworkName())) {
                     vmNames.add(vm.getName());
                     break;
                 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
index cdd73ce..2a606ff 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
@@ -725,15 +725,11 @@
             }
         }
 
-        if (!removedNetworks.isEmpty()) {
-            List<String> vmNames =
-                    
getVmInterfaceManager().findActiveVmsUsingNetworks(params.getVdsId(), 
removedNetworks);
+        List<String> vmNames =
+                
getVmInterfaceManager().findActiveVmsUsingNetworks(params.getVdsId(), 
removedNetworks);
 
-            if (!vmNames.isEmpty()) {
-                for (String vmName : vmNames) {
-                    
addViolation(VdcBllMessages.NETWORK_CANNOT_DETACH_NETWORK_USED_BY_VMS, vmName);
-                }
-            }
+        for (String vmName : vmNames) {
+            
addViolation(VdcBllMessages.NETWORK_CANNOT_DETACH_NETWORK_USED_BY_VMS, vmName);
         }
     }
 
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java
index 1084597..d693713 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/network/VmInterfaceManagerTest.java
@@ -1,5 +1,6 @@
 package org.ovirt.engine.core.bll.network;
 
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyList;
@@ -128,7 +129,7 @@
 
     @Test
     public void findActiveVmsUsingNetworks() {
-        mockDaos();
+        mockDaos(true);
 
         List<String> vmNames =
                 vmInterfaceManager.findActiveVmsUsingNetworks(Guid.newGuid(), 
Collections.singletonList(NETWORK_NAME));
@@ -136,8 +137,17 @@
     }
 
     @Test
+    public void findActiveVmsUsingNetworksOnUnpluggedVnic() {
+        mockDaos(false);
+
+        List<String> vmNames =
+                vmInterfaceManager.findActiveVmsUsingNetworks(Guid.newGuid(), 
Collections.singletonList(NETWORK_NAME));
+        assertFalse(vmNames.contains(VM_NAME));
+    }
+
+    @Test
     public void findNoneOfActiveVmsUsingNetworks() {
-        mockDaos();
+        mockDaos(true);
 
         List<String> vmNames =
                 vmInterfaceManager.findActiveVmsUsingNetworks(Guid.newGuid(),
@@ -158,8 +168,8 @@
         }
     }
 
-    private void mockDaos() {
-        VM vm = createVM(VM_NAME, NETWORK_NAME);
+    private void mockDaos(boolean pluggedInterface) {
+        VM vm = createVM(VM_NAME, NETWORK_NAME, pluggedInterface);
         
when(vmDAO.getAllRunningForVds(any(Guid.class))).thenReturn(Arrays.asList(vm));
         
when(vmNetworkInterfaceDAO.getAllForVm(vm.getId())).thenReturn(vm.getInterfaces());
     }
@@ -200,10 +210,11 @@
         return iface;
     }
 
-    protected VmNetworkInterface createNewViewableInterface() {
+    protected VmNetworkInterface createNewViewableInterface(boolean plugged) {
         VmNetworkInterface iface = new VmNetworkInterface();
         iface.setId(Guid.newGuid());
         iface.setMacAddress(RandomUtils.instance().nextString(10));
+        iface.setPlugged(plugged);
         return iface;
     }
 
@@ -214,13 +225,15 @@
      *            The VM name to be set
      * @param networkName
      *            The network name to be set for the VM interface
+     * @param pluggedInterface
+     *            whether the VM interface plugged or not
      * @return the VM instance with the appropriate data.
      */
-    private VM createVM(String vmName, String networkName) {
+    private VM createVM(String vmName, String networkName, boolean 
pluggedInterface) {
         VM vm = new VM();
         vm.setId(Guid.newGuid());
         vm.setName(vmName);
-        VmNetworkInterface vmIface = createNewViewableInterface();
+        VmNetworkInterface vmIface = 
createNewViewableInterface(pluggedInterface);
         vmIface.setVmId(vm.getId());
         vmIface.setNetworkName(networkName);
         vm.getInterfaces().add(vmIface);


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

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

Reply via email to