Moti Asayag has uploaded a new change for review.

Change subject: engine: Expand GetNetworkByIdQuery to a user query
......................................................................

engine: Expand GetNetworkByIdQuery to a user query

The query will be used for fetch a specific entity
by the clients.

Change-Id: Ia4bef895ede7416d1dce34561e7b6af63483b69c
Signed-off-by: Moti Asayag <masa...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkByIdQuery.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/network/NetworkDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
M packaging/dbscripts/network_sp.sql
5 files changed, 36 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/00/22800/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkByIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkByIdQuery.java
index ee3ce77..c1ab04d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkByIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkByIdQuery.java
@@ -10,6 +10,8 @@
 
     @Override
     protected void executeQueryCommand() {
-        
getQueryReturnValue().setReturnValue(getDbFacade().getNetworkDao().get(getParameters().getId()));
+        
getQueryReturnValue().setReturnValue(getDbFacade().getNetworkDao().get(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 c51d6e4..a2494b2 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
@@ -70,7 +70,7 @@
     GetVdsWithoutNetwork,
     GetVmsAndNetworkInterfacesByNetworkId,
     GetVmTemplatesAndNetworkInterfacesByNetworkId,
-    GetNetworkById,
+    GetNetworkById(VdcQueryAuthType.User),
 
     // External network providers
     GetAllExternalNetworksOnProvider,
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java
index e3a674e..896a5026 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDao.java
@@ -112,4 +112,17 @@
      * @return all labels defined for the data-center's networks
      */
     Set<String> getAllNetworkLabelsForDataCenter(Guid id);
+
+    /**
+     * Retrieve a specific network.
+     *
+     * @param id
+     *            the network 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 network
+     */
+    Network get(Guid networkId, Guid userID, boolean isFiltered);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
index cfd4237..13d3eb4 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkDaoDbFacadeImpl.java
@@ -25,6 +25,20 @@
     }
 
     @Override
+    public Network get(Guid networkId) {
+        return get(networkId, null, false);
+    }
+
+    @Override
+    public Network get(Guid networkId, Guid userID, boolean isFiltered) {
+        return getCallsHandler().executeRead(getProcedureNameForGet(),
+                NetworkRowMapper.instance,
+                getCustomMapSqlParameterSource().addValue("id", networkId)
+                        .addValue("user_id", userID)
+                        .addValue("is_filtered", isFiltered));
+    }
+
+    @Override
     public Network getByName(String name) {
         return getCallsHandler().executeRead("GetnetworkByName",
                 NetworkRowMapper.instance,
diff --git a/packaging/dbscripts/network_sp.sql 
b/packaging/dbscripts/network_sp.sql
index b0d3d66..2c6abbb 100644
--- a/packaging/dbscripts/network_sp.sql
+++ b/packaging/dbscripts/network_sp.sql
@@ -110,12 +110,15 @@
 
 
 
-Create or replace FUNCTION GetnetworkByid(v_id UUID) RETURNS SETOF network 
STABLE
+Create or replace FUNCTION GetnetworkByid(v_id UUID, v_user_id uuid, 
v_is_filtered boolean) RETURNS SETOF network STABLE
    AS $procedure$
 BEGIN
 RETURN QUERY SELECT *
    FROM network
-   WHERE id = v_id;
+   WHERE id = v_id
+   AND NOT v_is_filtered OR EXISTS (SELECT 1
+                                      FROM   user_network_permissions_view
+                                      WHERE  user_id = v_user_id AND entity_id 
= network.id);
 
 END; $procedure$
 LANGUAGE plpgsql;


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia4bef895ede7416d1dce34561e7b6af63483b69c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <masa...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to