package org.ovirt.engine.core.bll.network.cluster; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import javax.inject.Singleton; import org.ovirt.engine.core.common.businessentities.BusinessEntityMap; import org.ovirt.engine.core.common.businessentities.UnmanagedNetwork; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.VdsDao; import org.ovirt.engine.core.dao.network.InterfaceDao; import org.ovirt.engine.core.dao.network.NetworkDao; @Singleton public class UnmanagedNetworksHelper { private VdsDao vdsDao; private InterfaceDao interfaceDao; private NetworkDao networkDao; @Inject public UnmanagedNetworksHelper(VdsDao vdsDao, InterfaceDao interfaceDao, NetworkDao networkDao) { this.vdsDao = vdsDao; this.interfaceDao = interfaceDao; this.networkDao = networkDao; } public List<UnmanagedNetwork> getUnmanagedNetworks(Guid hostId) { List<UnmanagedNetwork> unmanagedNetworks = new ArrayList<>(); VDS host = vdsDao.get(hostId); if (host != null) { List<VdsNetworkInterface> hostNetworkInterfaces = interfaceDao.getAllInterfacesForVds(hostId); BusinessEntityMap<Network> clusterNetworkMap = new BusinessEntityMap<>(getClusterNetworks(host)); for (VdsNetworkInterface vdsNetworkInterface : hostNetworkInterfaces) { String networkName = vdsNetworkInterface.getNetworkName(); if (networkName != null && !clusterNetworkMap.containsKey(networkName)) { unmanagedNetworks.add(createUnmanagedNetworkEntity(vdsNetworkInterface, networkName)); } } } return unmanagedNetworks; } private List<Network> getClusterNetworks(VDS host) { return networkDao.getAllForCluster(host.getClusterId()); } private UnmanagedNetwork createUnmanagedNetworkEntity(VdsNetworkInterface vdsNetworkInterface, String networkName) { return new UnmanagedNetwork() .setNetworkName(networkName) .setNicId(vdsNetworkInterface.getId()) .setNicName(vdsNetworkInterface.getName()); } public UnmanagedNetwork getUnmanagedNetwork(Guid hostId, String networkName) { for (UnmanagedNetwork unmanagedNetwork : getUnmanagedNetworks(hostId)) { if (unmanagedNetwork.getNetworkName().equals(networkName)) { return unmanagedNetwork; } } return null; } }