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