Lior Vernia has uploaded a new change for review. Change subject: engine: Added query to retrieve DCs by external network ......................................................................
engine: Added query to retrieve DCs by external network Need a means to know which DCs have already imported the external network. Change-Id: I335e31534d494bfe81174dbf16e1663cd89495aa Signed-off-by: Lior Vernia <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetDataCentersByExternalNetworkIdQuery.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAODbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java M backend/manager/modules/dal/src/test/resources/fixtures.xml M packaging/dbscripts/storages_sp.sql 8 files changed, 81 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/19979/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetDataCentersByExternalNetworkIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetDataCentersByExternalNetworkIdQuery.java new file mode 100644 index 0000000..6ccb40c --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetDataCentersByExternalNetworkIdQuery.java @@ -0,0 +1,18 @@ +package org.ovirt.engine.core.bll.storage; + +import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.queries.NameQueryParameters; + +public class GetDataCentersByExternalNetworkIdQuery<P extends NameQueryParameters> extends QueriesCommandBase<P> { + + public GetDataCentersByExternalNetworkIdQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getDbFacade().getStoragePoolDao() + .getDataCentersByExternalNetworkId(getParameters().getName())); + } + +} diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAO.java index dd39c47..e083078 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAO.java @@ -120,4 +120,13 @@ */ List<StoragePool> getDataCentersByClusterService(boolean supportsVirtService, boolean supportsGlusterService); + /** + * Retrieves all data centers to which an external network has been imported. + * + * @param externalId + * the external network's external ID. + * @return the list of data centers. + */ + List<StoragePool> getDataCentersByExternalNetworkId(String externalId); + } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAODbFacadeImpl.java index 1fbd5c4..d0fb818 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StoragePoolDAODbFacadeImpl.java @@ -230,4 +230,10 @@ return getCallsHandler().executeReadList("GetStoragePoolsByClusterService", mapper, parameterSource); } + @Override + public List<StoragePool> getDataCentersByExternalNetworkId(String externalId) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource().addValue("external_id", externalId); + return getCallsHandler().executeReadList("GetDataCentersByExternalNetworkId", mapper, parameterSource); + } + } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java index 7fde9b0..376663b 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java @@ -438,6 +438,9 @@ public static final Guid PROVIDER_ID = new Guid("1115c1c6-cb15-4832-b2a4-023770607111"); public static final ProviderType PROVIDER_TYPE = ProviderType.OPENSTACK_NETWORK; + + public static final String EXTERNAL_NETWORK_ID = "52d5c1c6-cb15-4832-b2a4-023770607200"; + /** * Cluster Policy */ diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java index 8cfc220..98cdb9e 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java @@ -226,6 +226,20 @@ } } + /** + * Ensures that all data centers where a specific external network has been imported are returned. + */ + @Test + public void testGetDataCentersByExternalNetworkId() { + List<StoragePool> result = dao.getDataCentersByExternalNetworkId(FixturesTool.EXTERNAL_NETWORK_ID); + List<StoragePool> emptyResult = dao.getDataCentersByExternalNetworkId("foo"); + + assertNotNull(result); + assertNotNull(emptyResult); + assertTrue(result.size() > 1); + assertTrue(emptyResult.isEmpty()); + } + @Test public void testSave() { dao.save(newPool); diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java index be1140b..c5a0477 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/NetworkDaoTest.java @@ -23,7 +23,7 @@ private Network new_net; private static final String EXISTING_NETWORK_NAME1 = "engine"; private static final String EXISTING_NETWORK_NAME2 = "engine3"; - private static final int NUM_OF_NETWORKS = 5; + private static final int NUM_OF_NETWORKS = 6; @Override public void setUp() throws Exception { diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index a24b2d9..9b07a1d 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -890,6 +890,22 @@ <value>52d5c1c6-cb15-4832-b2a4-023770607200</value> </row> <row> + <value>58d5c1c6-cb15-4832-b2a4-023770607201</value> + <value>external</value> + <value>Some external network</value> + <null /> + <null /> + <null /> + <null /> + <null /> + <value>0</value> + <value>6d849ebf-755f-4552-ad09-9a090cda105e</value> + <value>0</value> + <value>true</value> + <value>1115c1c6-cb15-4832-b2a4-023770607111</value> + <value>52d5c1c6-cb15-4832-b2a4-023770607200</value> + </row> + <row> <value>58d5c1c6-cb15-4832-b2a4-023770607191</value> <value>engine4</value> <value>Management Network</value> diff --git a/packaging/dbscripts/storages_sp.sql b/packaging/dbscripts/storages_sp.sql index b40ed16..1fcbdff 100644 --- a/packaging/dbscripts/storages_sp.sql +++ b/packaging/dbscripts/storages_sp.sql @@ -723,3 +723,17 @@ ); END; $procedure$ LANGUAGE plpgsql; + + +CREATE OR REPLACE FUNCTION GetDataCentersByExternalNetworkId(v_external_id text) +RETURNS SETOF storage_pool STABLE +AS $procedure$ +BEGIN + RETURN QUERY + SELECT storage_pool.* + FROM storage_pool + INNER JOIN network + ON storage_pool.id = network.storage_pool_id + WHERE network.provider_network_external_id = v_external_id; +END; $procedure$ +LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/19979 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I335e31534d494bfe81174dbf16e1663cd89495aa Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Lior Vernia <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
