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

Reply via email to