package org.ovirt.engine.core.bll.network;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
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.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 AddNetworkParametersBuilder extends HostSetupNetworksParametersBuilder {
@Inject
public AddNetworkParametersBuilder(InterfaceDao interfaceDao,
VdsStaticDao vdsStaticDao,
NetworkClusterDao networkClusterDao,
NetworkAttachmentDao networkAttachmentDao) {
super(interfaceDao, vdsStaticDao, networkClusterDao, networkAttachmentDao);
}
public ArrayList<VdcActionParametersBase> buildParameters(Network network, List<VdsNetworkInterface> nics) {
ArrayList<VdcActionParametersBase> parameters = new ArrayList<>();
for (VdsNetworkInterface nic : nics) {
PersistentHostSetupNetworksParameters setupNetworkParams =
createHostSetupNetworksParameters(nic.getVdsId());
setupNetworkParams.setNetworkNames(network.getName());
VdsNetworkInterface nicToConfigure = getNicToConfigure(getNics(nic.getVdsId()), nic.getId());
if (nicToConfigure == null) {
throw new EngineException(EngineError.LABELED_NETWORK_INTERFACE_NOT_FOUND);
}
NetworkAttachment networkAttachment =
new NetworkAttachment(nicToConfigure,
network,
NetworkUtils.createIpConfigurationFromVdsNetworkInterface(getVlanDevice(nicToConfigure,
network.getVlanId())));
setupNetworkParams.getNetworkAttachments().add(networkAttachment);
addBootProtocolForRoleNetworkAttachment(nicToConfigure, network, networkAttachment);
parameters.add(setupNetworkParams);
}
return parameters;
}
}