package org.ovirt.engine.core.bll.network; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.inject.Inject; import org.apache.commons.lang.Validate; import org.ovirt.engine.core.bll.network.cluster.ManagementNetworkUtil; import org.ovirt.engine.core.common.action.PersistentHostSetupNetworksParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.errors.EngineError; import org.ovirt.engine.core.common.errors.EngineException; import org.ovirt.engine.core.common.utils.NetworkCommonUtils; import org.ovirt.engine.core.dao.VdsStaticDao; import org.ovirt.engine.core.dao.network.InterfaceDao; import org.ovirt.engine.core.dao.network.NetworkAttachmentDao; import org.ovirt.engine.core.dao.network.NetworkClusterDao; import org.ovirt.engine.core.utils.NetworkUtils; public class RemoveNetworkParametersBuilder extends HostSetupNetworksParametersBuilder { private final ManagementNetworkUtil managementNetworkUtil; @Inject public RemoveNetworkParametersBuilder(ManagementNetworkUtil managementNetworkUtil, InterfaceDao interfaceDao, VdsStaticDao vdsStaticDao, NetworkClusterDao networkClusterDao, NetworkAttachmentDao networkAttachmentDao) { super(interfaceDao, vdsStaticDao, networkClusterDao, networkAttachmentDao); Validate.notNull(managementNetworkUtil, "managementNetworkUtil cannot be null"); this.managementNetworkUtil = managementNetworkUtil; } public ArrayList<VdcActionParametersBase> buildParameters(Network network, List<VdsNetworkInterface> labeledNics) { ArrayList<VdcActionParametersBase> parameters = new ArrayList<>(); if (managementNetworkUtil.isManagementNetwork(network.getId())) { return parameters; } for (VdsNetworkInterface nic : labeledNics) { PersistentHostSetupNetworksParameters setupNetworkParams = createHostSetupNetworksParameters(nic.getVdsId()); setupNetworkParams.setNetworkNames(network.getName()); Map<String, VdsNetworkInterface> nicByNetworkName = NetworkUtils.hostInterfacesByNetworkName(getNics(nic.getVdsId())); VdsNetworkInterface nicToConfigure = getNicToConfigure(getNics(nic.getVdsId()), nic.getId()); if (nicToConfigure == null) { throw new EngineException(EngineError.LABELED_NETWORK_INTERFACE_NOT_FOUND); } NetworkAttachment networkAttachment = getNetworkIdToAttachmentMap(nic.getVdsId()).get(network.getId()); if (networkAttachment != null) { if (networkAttachment.getNicId().equals(nicToConfigure.getId())) { setupNetworkParams.getRemovedNetworkAttachments().add(networkAttachment.getId()); } } else { VdsNetworkInterface nicWithNetwork = nicByNetworkName.get(network.getName()); if (nicWithNetwork != null && NetworkCommonUtils.stripVlan(nicWithNetwork).equals(nic.getName())) { setupNetworkParams.getRemovedUnmanagedNetworks().add(network.getName()); } } parameters.add(setupNetworkParams); } return parameters; } }