Muli Salem has uploaded a new change for review.

Change subject: engine: DetachNetworkToVdsGroup for NetworkLinking (WIP)
......................................................................

engine: DetachNetworkToVdsGroup for NetworkLinking (WIP)

This patch makes sure NPEs are avoided due to the new
option for a VmNetworkInterface to have an empty Network
name.

Change-Id: I088b759698f1032c1236f93f96afe04fbb63a256
Signed-off-by: Muli Salem <msa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachNetworkToVdsGroupCommand.java
1 file changed, 21 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/9579/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachNetworkToVdsGroupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachNetworkToVdsGroupCommand.java
index f84d956..e64fafb 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachNetworkToVdsGroupCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DetachNetworkToVdsGroupCommand.java
@@ -60,18 +60,13 @@
             return false;
         }
 
-        // chech that no template is using this network
+        // check that no template is using this network
         List<VmTemplate> templates = DbFacade.getInstance().getVmTemplateDao()
                 .getAllForVdsGroup(getParameters().getVdsGroupId());
         for (VmTemplate tmpl : templates) {
             List<VmNetworkInterface> interfaces = DbFacade.getInstance()
                     
.getVmNetworkInterfaceDao().getAllForTemplate(tmpl.getId());
-            if (LinqUtils.firstOrNull(interfaces, new 
Predicate<VmNetworkInterface>() {
-                @Override
-                public boolean eval(VmNetworkInterface t) {
-                    return 
t.getNetworkName().equals(getParameters().getNetwork().getname());
-                }
-            }) != null) {
+            if (getIfaceWithNetworkName(interfaces) != null) {
                 
addCanDoActionMessage(VdcBllMessages.NETWORK_CANNOT_REMOVE_NETWORK_IN_USE_BY_TEMPLATE);
                 return false;
             }
@@ -91,12 +86,7 @@
                 VM vm = (VM) vm_helper;
                 List<VmNetworkInterface> interfaces = DbFacade.getInstance()
                         .getVmNetworkInterfaceDao().getAllForVm(vm.getId());
-                VmNetworkInterface iface = LinqUtils.firstOrNull(interfaces, 
new Predicate<VmNetworkInterface>() {
-                    @Override
-                    public boolean eval(VmNetworkInterface i) {
-                        return 
i.getNetworkName().equals(getParameters().getNetwork().getname());
-                    }
-                });
+                VmNetworkInterface iface = getIfaceWithNetworkName(interfaces);
                 if (iface != null) {
                     
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_IN_USE_BY_VM);
                     return false;
@@ -115,6 +105,24 @@
         return true;
     }
 
+    // Check if the given list has a VmNetworkInterface with the Network name 
that is being detached.
+    private VmNetworkInterface 
getIfaceWithNetworkName(List<VmNetworkInterface> interfaces) {
+        return LinqUtils.firstOrNull(interfaces, new 
Predicate<VmNetworkInterface>() {
+            @Override
+            public boolean eval(VmNetworkInterface vmNetworkInterface) {
+                return hasDetachedNetworkName(vmNetworkInterface);
+            }
+        });
+    }
+
+    private boolean hasDetachedNetworkName(VmNetworkInterface 
vmNetworkInterface) {
+        if (vmNetworkInterface.getNetworkName() != null) {
+            return 
vmNetworkInterface.getNetworkName().equals(getParameters().getNetwork().getname());
+        } else {
+            return false;
+        }
+    }
+
     @Override
     public AuditLogType getAuditLogTypeValue() {
         return getSucceeded() ? 
AuditLogType.NETWORK_DETACH_NETWORK_TO_VDS_GROUP


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

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

Reply via email to