Moti Asayag has uploaded a new change for review. Change subject: engine: Extend NetworkDao ......................................................................
engine: Extend NetworkDao The NetworkDao is extended with two methods for fetching the network entity by the following criteria: 1. By network name and storage pool id. 2. By network name and cluster id. The motivation is easing the process of fetching the network entity when is being queried either in scope of VM (find network which is attached to a VM) or in the scope of data center which previously was executed by getting the entire networks list for a DC/Cluster and filtering out the required network. Change-Id: If559aaf1ce824a0271874cf10cff1e42dd4647ba Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/dbscripts/network_sp.sql M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java 5 files changed, 102 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/43/9543/1 diff --git a/backend/manager/dbscripts/network_sp.sql b/backend/manager/dbscripts/network_sp.sql index 38a52ad..2723bb3 100644 --- a/backend/manager/dbscripts/network_sp.sql +++ b/backend/manager/dbscripts/network_sp.sql @@ -122,6 +122,35 @@ +Create or replace FUNCTION GetNetworkByNameAndDataCenter(v_name VARCHAR(50), v_storage_pool_id UUID) +RETURNS SETOF network + AS $procedure$ +BEGIN + RETURN QUERY SELECT network.* + FROM network + WHERE network.name = v_name + AND network.storage_pool_id = v_storage_pool_id; + +END; $procedure$ +LANGUAGE plpgsql; + + + +Create or replace FUNCTION GetNetworkByNameAndCluster(v_name VARCHAR(50), v_cluster_id UUID) +RETURNS SETOF network + AS $procedure$ +BEGIN + RETURN QUERY SELECT network.* + FROM network + WHERE network.name = v_name + AND EXISTS (SELECT 1 + FROM network_cluster + WHERE network.id = network_cluster.network_id + AND network_cluster.cluster_id = v_cluster_id); + +END; $procedure$ +LANGUAGE plpgsql; + Create or replace FUNCTION GetAllNetworkByStoragePoolId(v_id UUID) diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java index 0b0fef3..cc5f7d3 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java @@ -21,6 +21,28 @@ Network getByName(String name); /** + * Retrieves the network with the specified name and storage pool id. + * + * @param name + * the network name + * @param storagePoolId + * the network's storage pool id + * @return the network + */ + Network getByNameAndDataCenter(String name, Guid storagePoolId); + + /** + * Retrieves the network with the specified name which is attached to a specific Cluster. + * + * @param name + * the network name + * @param clusterId + * the cluster the network is attached to + * @return the network + */ + Network getByNameAndCluster(String name, Guid clusterId); + + /** * Retrieves all networks for the given data center. * * @param id diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java index a08309d..1e4b3ac 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java @@ -38,6 +38,24 @@ .get("RETURN_VALUE"))); } + @Override + public Network getByNameAndDataCenter(String name, Guid storagePoolId) { + return getCallsHandler().executeRead("GetNetworkByNameAndDataCenter", + NetworkRowMapper.instance, + getCustomMapSqlParameterSource() + .addValue("name", name) + .addValue("storage_pool_id", storagePoolId)); + } + + @Override + public Network getByNameAndCluster(String name, Guid clusterId) { + return getCallsHandler().executeRead("GetNetworkByNameAndCluster", + NetworkRowMapper.instance, + getCustomMapSqlParameterSource() + .addValue("name", name) + .addValue("cluster_id", clusterId)); + } + @SuppressWarnings("unchecked") @Override public List<Network> getAll() { @@ -137,5 +155,4 @@ return entity; } } - } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java index fadec58..35c18eb 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java @@ -2,10 +2,10 @@ import java.util.List; +import org.apache.commons.lang.NotImplementedException; import org.hibernate.criterion.Restrictions; import org.ovirt.engine.core.common.businessentities.Network; import org.ovirt.engine.core.compat.Guid; -import org.ovirt.engine.core.compat.NotImplementedException; /** * <code>NetworkDAOHibernateImpl</code> provides an implementation of {@Link NetworkDAO} using Hibernate. @@ -30,4 +30,14 @@ public List<Network> getAllForCluster(Guid id, Guid userID, boolean isFiltered) { throw new NotImplementedException(); } + + @Override + public Network getByNameAndDataCenter(String name, Guid storagePoolId) { + throw new NotImplementedException(); + } + + @Override + public Network getByNameAndCluster(String name, Guid clusterId) { + throw new NotImplementedException(); + } } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java index 7e252ec..4e1fc85 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java @@ -58,6 +58,28 @@ } /** + * Ensures that retrieving a network by name and data center works as expected. + */ + @Test + public void testGetByNameAndDataCenter() { + Network result = dao.getByNameAndDataCenter("engine", datacenter); + + assertNotNull(result); + assertEquals("engine", result.getname()); + } + + /** + * Ensures that retrieving a network by name and cluster works as expected. + */ + @Test + public void testGetByNameAndCluster() { + Network result = dao.getByNameAndCluster("engine", cluster); + + assertNotNull(result); + assertEquals("engine", result.getname()); + } + + /** * Ensures that all networks are returned. */ @Test -- To view, visit http://gerrit.ovirt.org/9543 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If559aaf1ce824a0271874cf10cff1e42dd4647ba 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