Gilad Chaplik has uploaded a new change for review. Change subject: core: extend DiskProfile.getAllForStorageDomain to a user query ......................................................................
core: extend DiskProfile.getAllForStorageDomain to a user query Will be used for UP as well. Currenly we rely on SD permissions (no change from current flow). Change-Id: I3bb75728cd76bba7e39de2314275f5bc87942c6b Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetDiskProfilesByStorageDomainIdQuery.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/profiles/DiskProfileDao.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoDbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoTest.java M packaging/dbscripts/disk_profiles_sp.sql 6 files changed, 30 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/12/29812/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetDiskProfilesByStorageDomainIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetDiskProfilesByStorageDomainIdQuery.java index 32ef1bd..0550de7 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetDiskProfilesByStorageDomainIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/profiles/GetDiskProfilesByStorageDomainIdQuery.java @@ -12,7 +12,7 @@ @Override protected void executeQueryCommand() { getQueryReturnValue().setReturnValue(getDbFacade().getDiskProfileDao() - .getAllForStorageDomain(getParameters().getId())); + .getAllForStorageDomain(getParameters().getId(), getUserID(), getParameters().isFiltered())); } } 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 3614235..479c858 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 @@ -364,7 +364,7 @@ //Disk Profiles GetDiskProfileById, GetAllDiskProfiles, - GetDiskProfilesByStorageDomainId, + GetDiskProfilesByStorageDomainId(VdcQueryAuthType.User), GetDiskProfilesByStorageQosId, // Default type instead of having to null check diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDao.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDao.java index 05816e7..f845064 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDao.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDao.java @@ -16,4 +16,17 @@ * @return the list of disk profiles */ List<DiskProfile> getAllForStorageDomain(Guid storageDomainId); + + /** + * Retrieves all disk profiles associated with the given storage domain id, according user's permissions. + * + * @param storageDomainId + * the storage domain's ID + * @param userId + * the user's ID + * @param isFiltered + * @return the list of disk profiles + */ + List<DiskProfile> getAllForStorageDomain(Guid storageDomainId, Guid userId, boolean isFiltered); + } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoDbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoDbFacadeImpl.java index 22711fd..780c420 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoDbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoDbFacadeImpl.java @@ -18,9 +18,16 @@ @Override public List<DiskProfile> getAllForStorageDomain(Guid storageDomainId) { + return getAllForStorageDomain(storageDomainId, null, false); + } + + @Override + public List<DiskProfile> getAllForStorageDomain(Guid storageDomainId, Guid userId, boolean isFiltered) { return getCallsHandler().executeReadList("GetDiskProfilesByStorageDomainId", createEntityRowMapper(), - getCustomMapSqlParameterSource().addValue("storage_domain_id", storageDomainId)); + getCustomMapSqlParameterSource().addValue("storage_domain_id", storageDomainId) + .addValue("user_id", userId) + .addValue("is_filtered", isFiltered)); } @Override diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoTest.java index d468657..1ec00f0 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/profiles/DiskProfileDaoTest.java @@ -57,7 +57,7 @@ */ @Test public void testGetAllForStorageEmpty() { - List<DiskProfile> result = dao.getAllForStorageDomain(Guid.newGuid()); + List<DiskProfile> result = dao.getAllForStorageDomain(Guid.newGuid(), null, false); assertNotNull(result); assertTrue(result.isEmpty()); @@ -68,7 +68,7 @@ */ @Test public void testGetAllForStorageDomainFull() { - List<DiskProfile> result = dao.getAllForStorageDomain(FixturesTool.STORAGE_DOAMIN_SCALE_SD5); + List<DiskProfile> result = dao.getAllForStorageDomain(FixturesTool.STORAGE_DOAMIN_SCALE_SD5, null, false); assertNotNull(result); assertEquals(2, result.size()); diff --git a/packaging/dbscripts/disk_profiles_sp.sql b/packaging/dbscripts/disk_profiles_sp.sql index e5d0eaf..ff6b286 100644 --- a/packaging/dbscripts/disk_profiles_sp.sql +++ b/packaging/dbscripts/disk_profiles_sp.sql @@ -78,14 +78,17 @@ LANGUAGE plpgsql; -Create or replace FUNCTION GetDiskProfilesByStorageDomainId(v_storage_domain_id UUID) +Create or replace FUNCTION GetDiskProfilesByStorageDomainId(v_storage_domain_id UUID, v_user_id UUID, v_is_filtered boolean) RETURNS SETOF disk_profiles STABLE AS $procedure$ BEGIN RETURN QUERY SELECT * FROM disk_profiles - WHERE storage_domain_id = v_storage_domain_id; + WHERE storage_domain_id = v_storage_domain_id + AND (NOT v_is_filtered OR EXISTS (SELECT 1 + FROM user_storage_domain_permissions_view + WHERE user_id = v_user_id AND entity_id = storage_domain_id)); END; $procedure$ LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/29812 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I3bb75728cd76bba7e39de2314275f5bc87942c6b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches