Moti Asayag has uploaded a new change for review. Change subject: engine: Extract RemoveNetworksByLabelParametersBuilder ......................................................................
engine: Extract RemoveNetworksByLabelParametersBuilder The class will be used to detach networks from host when networks is removed from a cluster. Change-Id: Ib95c94ddb121449b5032b9d30f755b3b1771aa3a Related-To: https://bugzilla.redhat.com/1055188 Signed-off-by: Moti Asayag <masa...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/RemoveNetworksByLabelParametersBuilder.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java 2 files changed, 70 insertions(+), 59 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/00/23500/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/RemoveNetworksByLabelParametersBuilder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/RemoveNetworksByLabelParametersBuilder.java new file mode 100644 index 0000000..e1869c9 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/RemoveNetworksByLabelParametersBuilder.java @@ -0,0 +1,66 @@ +package org.ovirt.engine.core.bll.network; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.lang.StringUtils; +import org.ovirt.engine.core.common.action.SetupNetworksParameters; +import org.ovirt.engine.core.common.businessentities.Entities; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.common.errors.VdcBLLException; +import org.ovirt.engine.core.common.errors.VdcBllErrors; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.utils.NetworkUtils; + +public class RemoveNetworksByLabelParametersBuilder extends NetworkParametersBuilder { + + public SetupNetworksParameters buildParameters(VdsNetworkInterface nic, String label, Guid clusterId) { + SetupNetworksParameters parameters = createSetupNetworksParameters(nic.getVdsId()); + List<Network> labeledNetworks = + DbFacade.getInstance().getNetworkDao().getAllByLabelForCluster(label, clusterId); + VdsNetworkInterface nicToConfigure = getNicToConfigure(parameters.getInterfaces(), nic.getId()); + if (nicToConfigure == null) { + throw new VdcBLLException(VdcBllErrors.LABELED_NETWORK_INTERFACE_NOT_FOUND); + } + + Set<VdsNetworkInterface> nicsToRemove = + getNicsToRemove(parameters.getInterfaces(), labeledNetworks, nicToConfigure); + + // remove the label from the nic to be passed to setup-networks + unlabelConfiguredNic(label, nicToConfigure); + + // remove the networks from all of the nics + parameters.getInterfaces().removeAll(nicsToRemove); + return parameters; + } + + private Set<VdsNetworkInterface> getNicsToRemove(List<VdsNetworkInterface> nics, + List<Network> labeledNetworks, + VdsNetworkInterface underlyingNic) { + Map<String, VdsNetworkInterface> nicsByNetworkName = Entities.hostInterfacesByNetworkName(nics); + Set<VdsNetworkInterface> nicsToRemove = new HashSet<>(); + + for (Network network : labeledNetworks) { + VdsNetworkInterface nic = nicsByNetworkName.get(network.getName()); + if (nic != null) { + if (StringUtils.equals(nic.getName(), underlyingNic.getName())) { + underlyingNic.setNetworkName(null); + } else if (StringUtils.equals(NetworkUtils.stripVlan(nic.getName()), underlyingNic.getName())) { + nicsToRemove.add(nic); + } + } + } + + return nicsToRemove; + } + + private void unlabelConfiguredNic(String label, VdsNetworkInterface nicToConfigure) { + if (NetworkUtils.isLabeled(nicToConfigure)) { + nicToConfigure.getLabels().remove(label); + } + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java index 9e149b4..ea94784 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/UnlabelNicCommand.java @@ -1,26 +1,17 @@ package org.ovirt.engine.core.bll.network.host; import java.util.Collections; -import java.util.HashSet; import java.util.List; -import java.util.Map; -import java.util.Set; -import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.CommandBase; -import org.ovirt.engine.core.bll.network.NetworkParametersBuilder; +import org.ovirt.engine.core.bll.network.RemoveNetworksByLabelParametersBuilder; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.LabelNicParameters; -import org.ovirt.engine.core.common.action.SetupNetworksParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; -import org.ovirt.engine.core.common.businessentities.Entities; -import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; -import org.ovirt.engine.core.common.errors.VdcBLLException; -import org.ovirt.engine.core.common.errors.VdcBllErrors; import org.ovirt.engine.core.common.errors.VdcBllMessages; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.NetworkUtils; @@ -38,7 +29,9 @@ protected void executeCommand() { VdcReturnValueBase result = getBackend().runInternalAction(VdcActionType.PersistentSetupNetworks, - new RemoveNetworksByLabelParametersBuilder().buildParameters(getNic(), getLabel())); + new RemoveNetworksByLabelParametersBuilder().buildParameters(getNic(), + getLabel(), + getVds().getVdsGroupId())); if (!result.getSucceeded()) { propagateFailure(result); @@ -93,53 +86,5 @@ return Collections.singletonList(new PermissionSubject(hostId, VdcObjectType.VDS, getActionType().getActionGroup())); - } - - private class RemoveNetworksByLabelParametersBuilder extends NetworkParametersBuilder { - - public SetupNetworksParameters buildParameters(VdsNetworkInterface nic, String label) { - SetupNetworksParameters parameters = createSetupNetworksParameters(nic.getVdsId()); - List<Network> labeledNetworks = getNetworkDAO().getAllByLabelForCluster(label, getVds().getVdsGroupId()); - VdsNetworkInterface nicToConfigure = getNicToConfigure(parameters.getInterfaces(), nic.getId()); - if (nicToConfigure == null) { - throw new VdcBLLException(VdcBllErrors.LABELED_NETWORK_INTERFACE_NOT_FOUND); - } - - Set<VdsNetworkInterface> nicsToRemove = - getNicsToRemove(parameters.getInterfaces(), labeledNetworks, nicToConfigure); - - // remove the label from the nic to be passed to setup-networks - unlabelConfiguredNic(label, nicToConfigure); - - // remove the networks from all of the nics - parameters.getInterfaces().removeAll(nicsToRemove); - return parameters; - } - - private Set<VdsNetworkInterface> getNicsToRemove(List<VdsNetworkInterface> nics, - List<Network> labeledNetworks, - VdsNetworkInterface underlyingNic) { - Map<String, VdsNetworkInterface> nicsByNetworkName = Entities.hostInterfacesByNetworkName(nics); - Set<VdsNetworkInterface> nicsToRemove = new HashSet<>(); - - for (Network network : labeledNetworks) { - VdsNetworkInterface nic = nicsByNetworkName.get(network.getName()); - if (nic != null) { - if (StringUtils.equals(nic.getName(), underlyingNic.getName())) { - underlyingNic.setNetworkName(null); - } else if (StringUtils.equals(NetworkUtils.stripVlan(nic.getName()), underlyingNic.getName())) { - nicsToRemove.add(nic); - } - } - } - - return nicsToRemove; - } - - private void unlabelConfiguredNic(String label, VdsNetworkInterface nicToConfigure) { - if (NetworkUtils.isLabeled(nicToConfigure)) { - nicToConfigure.getLabels().remove(getLabel()); - } - } } } -- To view, visit http://gerrit.ovirt.org/23500 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib95c94ddb121449b5032b9d30f755b3b1771aa3a Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Moti Asayag <masa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches