package org.ovirt.engine.core.bll.provider.network; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import javax.inject.Inject; import org.ovirt.engine.core.bll.QueriesCommandBase; import org.ovirt.engine.core.bll.provider.ProviderProxyFactory; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dao.StoragePoolDao; import org.ovirt.engine.core.dao.provider.ProviderDao; public class GetAllExternalNetworksOnProviderQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { @Inject private ProviderDao providerDao; @Inject private StoragePoolDao storagePoolDao; public GetAllExternalNetworksOnProviderQuery(P parameters) { super(parameters); } @Override protected void executeQueryCommand() { Provider<?> provider = providerDao.get(getParameters().getId()); if (provider == null) { return; } NetworkProviderProxy client = getProviderProxyFactory().create(provider); List<Network> externalNetworks = client.getAll(); Map<Network, Set<Guid>> externalNetworkToDcId = new HashMap<>(); for (Network network : externalNetworks) { List<Guid> dcIds = storagePoolDao.getDcIdByExternalNetworkId(network.getProvidedBy().getExternalId()); externalNetworkToDcId.put(network, new HashSet<>(dcIds)); } getQueryReturnValue().setReturnValue(externalNetworkToDcId); } protected ProviderProxyFactory getProviderProxyFactory() { return ProviderProxyFactory.getInstance(); } }