Alona Kaplan has uploaded a new change for review. Change subject: core: add NetworkLinking to AddVmInterfaceCommand ......................................................................
core: add NetworkLinking to AddVmInterfaceCommand - canDoAction- If "UnlinkingSupported" is false for the cluster compatibility version. - block 'null' network. - block unlinking. If "UnlinkingSupported" is true - allow 'null' network. Change-Id: I4f804e0d3117eed22814a8397d0fee12dd9e1347 Signed-off-by: Alona Kaplan <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmInterfaceCommand.java 1 file changed, 53 insertions(+), 15 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/9798/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmInterfaceCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmInterfaceCommand.java index 2dd0ac4..717e06f 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmInterfaceCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmInterfaceCommand.java @@ -122,6 +122,7 @@ @Override protected boolean canDoAction() { + VmStatic vm = getVm().getStaticData(); if (vm == null) { addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_EXIST); @@ -161,23 +162,60 @@ return false; } - // check that the exists in current cluster - List<Network> networks = DbFacade.getInstance().getNetworkDao().getAllForCluster(vm.getvds_group_id()); - - Network interfaceNetwork = LinqUtils.firstOrNull(networks, new Predicate<Network>() { - @Override - public boolean eval(Network network) { - return network.getname().equals(getParameters().getInterface().getNetworkName()); + // check that the number of interfaces does not exceed limit. Necessary + // only for version 2.2. + boolean limitNumOfNics = Config.<Boolean> GetValue(ConfigValues.LimitNumberOfNetworkInterfaces, getVm() + .getvds_group_compatibility_version().toString()); + if (limitNumOfNics) { + boolean numOfNicsLegal = validateNumberOfNics(interfaces, getParameters().getInterface()); + if (!numOfNicsLegal) { + addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_EXITED_MAX_INTERFACES); + return false; } - }); + } - if (interfaceNetwork == null) { - addCanDoActionMessage(VdcBllMessages.NETWORK_NOT_EXISTS_IN_CURRENT_CLUSTER); - return false; - } else if (!interfaceNetwork.isVmNetwork()) { - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_NOT_A_VM_NETWORK); - addCanDoActionMessage(String.format("$networks %1$s", interfaceNetwork.getname())); - return false; + boolean unlinkingSupported = + Config.<Boolean> GetValue(ConfigValues.NetworkLinkingSupported, + getVm().getvds_group_compatibility_version(). + getValue()); + + if (!unlinkingSupported) { + if (!getParameters().getInterface().isLinked()) { + addCanDoActionMessage(VdcBllMessages.UNLINKING_IS_NOT_SUPPORTED); + addCanDoActionMessage(String.format("$clusterVersion %1$s", + getVm().getvds_group_compatibility_version(). + getValue())); + return false; + } + + if (getParameters().getInterface().getNetworkName() == null) { + addCanDoActionMessage(VdcBllMessages.NULL_NETWORK_IS_NOT_SUPPORTED); + addCanDoActionMessage(String.format("$clusterVersion %1$s", + getVm().getvds_group_compatibility_version(). + getValue())); + return false; + } + } + + if (getParameters().getInterface().getNetworkName() != null) { + // check that the exists in current cluster + List<Network> networks = DbFacade.getInstance().getNetworkDao().getAllForCluster(vm.getvds_group_id()); + + Network interfaceNetwork = LinqUtils.firstOrNull(networks, new Predicate<Network>() { + @Override + public boolean eval(Network network) { + return network.getname().equals(getParameters().getInterface().getNetworkName()); + } + }); + + if (interfaceNetwork == null) { + addCanDoActionMessage(VdcBllMessages.NETWORK_NOT_EXISTS_IN_CURRENT_CLUSTER); + return false; + } else if (!interfaceNetwork.isVmNetwork()) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_NOT_A_VM_NETWORK); + addCanDoActionMessage(String.format("$networks %1$s", interfaceNetwork.getname())); + return false; + } } if (!StringUtils.isEmpty(getMacAddress())) { -- To view, visit http://gerrit.ovirt.org/9798 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4f804e0d3117eed22814a8397d0fee12dd9e1347 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
