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