Moti Asayag has uploaded a new change for review. Change subject: engine: Extract AddNetworksByLabelParametersBuilder ......................................................................
engine: Extract AddNetworksByLabelParametersBuilder The class will be used for attaching networks to host when networks is assigned to a cluster. Change-Id: I6510892f217c0472d6d79ab5884bb9c082a58bf1 Bug-Url: https://bugzilla.redhat.com/1054195 Signed-off-by: Moti Asayag <masa...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/AddNetworksByLabelParametersBuilder.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java 2 files changed, 79 insertions(+), 67 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/98/23498/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/AddNetworksByLabelParametersBuilder.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/AddNetworksByLabelParametersBuilder.java new file mode 100644 index 0000000..e672c5b --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/AddNetworksByLabelParametersBuilder.java @@ -0,0 +1,78 @@ +package org.ovirt.engine.core.bll.network; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +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; + +public class AddNetworksByLabelParametersBuilder extends NetworkParametersBuilder { + + /** + * Adds a list of labeled networks to a given interface + */ + public SetupNetworksParameters buildParameters(VdsNetworkInterface nic, + String label, + List<Network> labeledNetworks) { + SetupNetworksParameters parameters = createSetupNetworksParameters(nic.getVdsId()); + Set<Network> networkToAdd = getNetworksToConfigure(parameters.getInterfaces(), labeledNetworks); + VdsNetworkInterface nicToConfigure = getNicToConfigure(parameters.getInterfaces(), nic.getId()); + if (nicToConfigure == null) { + throw new VdcBLLException(VdcBllErrors.LABELED_NETWORK_INTERFACE_NOT_FOUND); + } + + // add label to nic to be passed to setup-networks + labelConfiguredNic(label, nicToConfigure); + + // configure networks on the nic + parameters.getInterfaces().addAll(configureNetworks(nicToConfigure, networkToAdd)); + return parameters; + } + + public void labelConfiguredNic(String label, VdsNetworkInterface nicToConfigure) { + if (nicToConfigure.getLabels() == null) { + nicToConfigure.setLabels(new HashSet<String>()); + } + + nicToConfigure.getLabels().add(label); + } + + public Set<Network> getNetworksToConfigure(List<VdsNetworkInterface> nics, List<Network> labeledNetworks) { + Map<String, VdsNetworkInterface> nicsByNetworkName = Entities.hostInterfacesByNetworkName(nics); + Set<Network> networkToAdd = new HashSet<>(); + + for (Network network : labeledNetworks) { + if (!nicsByNetworkName.containsKey(network.getName())) { + networkToAdd.add(network); + } + } + + return networkToAdd; + } + + /** + * Configure the networks on a specific nic and/or returns a list of vlans as new added interfaces configured + * with vlan networks + * + * @param nic + * the underlying interface to configure + * @param networks + * the networks to configure on the nic + * @return a list of vlan devices or an empty list + */ + public List<VdsNetworkInterface> configureNetworks(VdsNetworkInterface nic, Set<Network> networks) { + List<VdsNetworkInterface> vlans = new ArrayList<>(); + for (Network network : networks) { + configureNetwork(nic, vlans, network); + } + + return vlans; + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java index 35fb57c..7439865 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/LabelNicCommand.java @@ -2,26 +2,21 @@ import java.util.ArrayList; 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.AddNetworksByLabelParametersBuilder; 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.common.utils.ValidationUtils; import org.ovirt.engine.core.compat.Guid; @@ -148,66 +143,5 @@ return Collections.singletonList(new PermissionSubject(hostId, VdcObjectType.VDS, getActionType().getActionGroup())); - } - - private class AddNetworksByLabelParametersBuilder extends NetworkParametersBuilder { - - public SetupNetworksParameters buildParameters(VdsNetworkInterface nic, - String label, - List<Network> labeledNetworks) { - SetupNetworksParameters parameters = createSetupNetworksParameters(nic.getVdsId()); - Set<Network> networkToAdd = getNetworksToConfigure(parameters.getInterfaces(), labeledNetworks); - VdsNetworkInterface nicToConfigure = getNicToConfigure(parameters.getInterfaces(), nic.getId()); - if (nicToConfigure == null) { - throw new VdcBLLException(VdcBllErrors.LABELED_NETWORK_INTERFACE_NOT_FOUND); - } - - // add label to nic to be passed to setup-networks - labelConfiguredNic(label, nicToConfigure); - - // configure networks on the nic - parameters.getInterfaces().addAll(configureNetworks(nicToConfigure, networkToAdd)); - return parameters; - } - - public void labelConfiguredNic(String label, VdsNetworkInterface nicToConfigure) { - if (nicToConfigure.getLabels() == null) { - nicToConfigure.setLabels(new HashSet<String>()); - } - - nicToConfigure.getLabels().add(label); - } - - public Set<Network> getNetworksToConfigure(List<VdsNetworkInterface> nics, List<Network> labeledNetworks) { - Map<String, VdsNetworkInterface> nicsByNetworkName = Entities.hostInterfacesByNetworkName(nics); - Set<Network> networkToAdd = new HashSet<>(); - - for (Network network : labeledNetworks) { - if (!nicsByNetworkName.containsKey(network.getName())) { - networkToAdd.add(network); - } - } - - return networkToAdd; - } - - /** - * Configure the networks on a specific nic and/or returns a list of vlans as new added interfaces configured - * with vlan networks - * - * @param nic - * the underlying interface to configure - * @param networks - * the networks to configure on the nic - * @return a list of vlan devices or an empty list - */ - public List<VdsNetworkInterface> configureNetworks(VdsNetworkInterface nic, Set<Network> networks) { - List<VdsNetworkInterface> vlans = new ArrayList<>(); - for (Network network : networks) { - configureNetwork(nic, vlans, network); - } - - return vlans; - } } } -- To view, visit http://gerrit.ovirt.org/23498 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6510892f217c0472d6d79ab5884bb9c082a58bf1 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