Tal Nisan has uploaded a new change for review. Change subject: core: Added a query to fetch storage types in a storage pool ......................................................................
core: Added a query to fetch storage types in a storage pool Added a query that fetches all the storage types of the data storage domains contained in a certain pool Change-Id: I97447e0fc3e087958101156947bded12c1fb9418 Related-To: https://bugzilla.redhat.com/1085395 Signed-off-by: Tal Nisan <tni...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/GetStorageTypesInPoolByPoolIdQuery.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.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/StoragePoolDAOTest.java M packaging/dbscripts/storages_sp.sql 6 files changed, 66 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/81/26981/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/GetStorageTypesInPoolByPoolIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/GetStorageTypesInPoolByPoolIdQuery.java new file mode 100644 index 0000000..cbe3a87 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/GetStorageTypesInPoolByPoolIdQuery.java @@ -0,0 +1,16 @@ +package org.ovirt.engine.core; + +import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.queries.IdQueryParameters; + +public class GetStorageTypesInPoolByPoolIdQuery <P extends IdQueryParameters> extends QueriesCommandBase<P> { + + public GetStorageTypesInPoolByPoolIdQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + getQueryReturnValue().setReturnValue(getDbFacade().getStoragePoolDao().getStorageTypesInPool(getParameters().getId())); + } +} diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java index b5774b4..a5656ce 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java @@ -243,6 +243,7 @@ GetLunsByVgId, GetPermittedStorageDomainsByStoragePoolId(VdcQueryAuthType.User), GetIscsiBondsByStoragePoolId, + GetStorageTypesInPoolByPoolId, // Event Notification GetEventSubscribersBySubscriberIdGrouped, 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 9afeb49..213e59b 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 @@ -5,6 +5,7 @@ import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.compat.Guid; /** @@ -130,4 +131,12 @@ */ List<Guid> getDcIdByExternalNetworkId(String externalId); + /** + * Retrieves the storage domain types of the data domains that are existing in the pool. + * + * @param storagePoolId + * the storage pool ID. + * @return the list storage types that are existing in the pool. + */ + List<StorageType> getStorageTypesInPool(Guid storagePoolId); } 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 67bb44c..2d49c19 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 @@ -9,6 +9,7 @@ import org.ovirt.engine.core.common.businessentities.StorageFormatType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; import org.springframework.jdbc.core.RowMapper; @@ -237,4 +238,18 @@ getCustomMapSqlParameterSource().addValue("external_id", externalId)); } + @Override + public List<StorageType> getStorageTypesInPool(Guid storagePoolId) { + MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("storage_pool_id", storagePoolId); + + return getCallsHandler().executeReadList("GetStorageTypesInPoolByPoolId", storageTypeRowMapper, parameterSource); + } + + private static RowMapper<StorageType> storageTypeRowMapper = new RowMapper<StorageType>() { + @Override + public StorageType mapRow(ResultSet rs, int rowNum) throws SQLException { + return StorageType.forValue(rs.getInt(1)); + } + }; } 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 6d4f43c..e54c2c3 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 @@ -13,6 +13,7 @@ import org.ovirt.engine.core.common.businessentities.StorageFormatType; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.Version; @@ -316,4 +317,12 @@ assertNotNull(result); assertFalse(result.isEmpty()); } + + @Test + public void testGetStorageTypesInPool() { + Guid poolId = FixturesTool.STORAGE_POOL_NFS_2; + List<StorageType> storageTypes = dao.getStorageTypesInPool(poolId); + assertEquals("Expected one storage type in the pool", 1, storageTypes.size()); + assertTrue("Expected storage type in the pool to be of type NFS", storageTypes.contains(StorageType.NFS)); + } } diff --git a/packaging/dbscripts/storages_sp.sql b/packaging/dbscripts/storages_sp.sql index 0861da3..297e824 100644 --- a/packaging/dbscripts/storages_sp.sql +++ b/packaging/dbscripts/storages_sp.sql @@ -822,3 +822,19 @@ WHERE provider_network_external_id = v_external_id; END; $procedure$ LANGUAGE plpgsql; + + + + +-- This SP returns a distinct list of the storage types of the data domains in the pool (ignoring ISO/Export etc.) +Create or replace FUNCTION GetStorageTypesInPoolByPoolId(v_storage_pool_id UUID) +RETURNS SETOF INTEGER STABLE + AS $procedure$ +BEGIN + RETURN QUERY + SELECT DISTINCT storage_type + FROM storage_domains + WHERE storage_pool_id = v_storage_pool_id + AND storage_domain_type in (0,1); -- 0 = MASTER, 1 = DATA +END; $procedure$ +LANGUAGE plpgsql; \ No newline at end of file -- To view, visit http://gerrit.ovirt.org/26981 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I97447e0fc3e087958101156947bded12c1fb9418 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tal Nisan <tni...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches