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
