Oved Ourfali has uploaded a new change for review.

Change subject: GetDiskByDiskId query support for user-level API
......................................................................

GetDiskByDiskId query support for user-level API

This patch adds support for the GetDiskByDiskId query for the user-level
API.

Change-Id: I83c873f3f427c10d8d9b56279c7b0a46299db287
Bug-Url: https://bugzilla.redhat.com/910092
Signed-off-by: Oved Ourfali <[email protected]>
---
M backend/manager/dbscripts/all_disks_sp.sql
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskByDiskIdQuery.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/DiskDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
5 files changed, 37 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/90/12290/1

diff --git a/backend/manager/dbscripts/all_disks_sp.sql 
b/backend/manager/dbscripts/all_disks_sp.sql
index 17caa8e..cedfceb 100644
--- a/backend/manager/dbscripts/all_disks_sp.sql
+++ b/backend/manager/dbscripts/all_disks_sp.sql
@@ -16,13 +16,10 @@
     SELECT *
     FROM   all_disks
     WHERE (NOT v_is_filtered OR EXISTS (SELECT 1
-                                          FROM user_disk_permissions_view
-                                          WHERE user_id = v_user_id AND 
entity_id = disk_id));
+                                        FROM user_disk_permissions_view
+                                        WHERE user_id = v_user_id AND 
entity_id = disk_id));
 END; $procedure$
 LANGUAGE plpgsql;
-
-
-
 
 
 Create or replace FUNCTION GetDiskByDiskId(v_disk_id UUID)
@@ -36,6 +33,20 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION GetDiskByDiskIdFiltered(v_disk_id UUID, v_user_id 
UUID, v_is_filtered boolean)
+RETURNS SETOF all_disks
+AS $procedure$
+BEGIN
+    RETURN QUERY
+    SELECT *
+    FROM   all_disks
+    WHERE  image_group_id = v_disk_id
+    AND    (NOT v_is_filtered OR EXISTS (SELECT 1
+                                         FROM user_disk_permissions_view
+                                         WHERE user_id = v_user_id AND 
entity_id = v_disk_id));
+END; $procedure$
+LANGUAGE plpgsql;
+
 
 Create or replace FUNCTION GetDisksVmGuid(v_vm_guid UUID, v_user_id UUID, 
v_is_filtered BOOLEAN)
 RETURNS SETOF all_disks
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskByDiskIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskByDiskIdQuery.java
index 83c7be6..350b213 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskByDiskIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetDiskByDiskIdQuery.java
@@ -10,6 +10,6 @@
 
     @Override
     protected void executeQueryCommand() {
-        
getQueryReturnValue().setReturnValue(getDbFacade().getDiskDao().get(getParameters().getDiskId()));
+        
getQueryReturnValue().setReturnValue(getDbFacade().getDiskDao().get(getParameters().getDiskId(),
 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 f258e34..146aa73 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
@@ -97,7 +97,7 @@
     GetAllDisksByStorageDomainId,
     GetAllDisks(VdcQueryAuthType.User),
     GetImageByImageId,
-    GetDiskByDiskId,
+    GetDiskByDiskId(VdcQueryAuthType.User),
 
     // Users queries
     GetUserVmsByUserIdAndGroups(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDao.java
index d5967bb..645fb9e 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDao.java
@@ -53,4 +53,17 @@
      * @return
      */
     List<Disk> getAllAttachableDisksByPoolId(Guid poolId, Guid vmId ,Guid 
userId, boolean isFiltered);
+
+    /**
+     * Returns the Disk with the specified id, with optional filtering.
+     *
+     * @param id
+     *            the Disk id
+     * @param userID
+     *            the ID of the user requesting the information
+     * @param isFiltered
+     *            Whether the results should be filtered according to the 
user's permissions
+     * @return the Disk
+     */
+    Disk get(Guid id, Guid userID, boolean isFiltered);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
index 7285aec..3d5d66f 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
@@ -117,4 +117,10 @@
             return new LunDisk();
         }
     }
+
+    @Override
+    public Disk get(Guid id, Guid userID, boolean isFiltered) {
+        return getCallsHandler().executeRead("GetDiskByDiskIdFiltered", 
DiskRowMapper.instance, getCustomMapSqlParameterSource()
+                .addValue("disk_id", id).addValue("user_id", 
userID).addValue("is_filtered", isFiltered));
+    }
 }


--
To view, visit http://gerrit.ovirt.org/12290
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I83c873f3f427c10d8d9b56279c7b0a46299db287
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Oved Ourfali <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to