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

Reply via email to