Moti Asayag has uploaded a new change for review.

Change subject: engine: Add SP for retrieving vms by vnic profile [WIP]
......................................................................

engine: Add SP for retrieving vms by vnic profile [WIP]

The patch adds stored procedure to fetch VMs which their interfaces
are associated to a given vm network interface profile.

Change-Id: Ib474565480e763030a99b429d3054ed2debfcff2
Signed-off-by: Moti Asayag <[email protected]>
---
M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
M packaging/dbscripts/vms_sp.sql
4 files changed, 53 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/16669/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
index 8112556..53d9529 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
@@ -255,4 +255,13 @@
      *            The Host id
      */
     List<VM> getAllMigratingToHost(Guid vdsId);
+
+    /**
+     * Retrieves all VMS that have a Network Interface that the given Profile 
is attached to.
+     *
+     * @param vNicProfileId
+     *            the vm network interface profile id
+     * @return the list of VMs
+     */
+    List<VM> getAllForVnicProfile(Guid vNicProfileId);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
index 28d873a..60326cf 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
@@ -264,6 +264,13 @@
     }
 
     @Override
+    public List<VM> getAllForVnicProfile(Guid vNicProfileId) {
+        return getCallsHandler().executeReadList("GetVmsByVnicProfileId",
+                VMRowMapper.instance,
+                getCustomMapSqlParameterSource().addValue("vnic_profile_id", 
vNicProfileId));
+    }
+
+    @Override
     public List<VM> getAllForVdsGroup(Guid vds_group_id) {
         return getCallsHandler().executeReadList("GetVmsByVdsGroupId",
                 VMRowMapper.instance,
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
index 8caf43f..ff584ea 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
@@ -398,6 +398,27 @@
         assertTrue(result.isEmpty());
     }
 
+    /**
+     * Ensures that only the correct vm is fetched.
+     */
+    @Test
+    public void testGetAllForVnicProfile() {
+        List<VM> result = 
dao.getAllForVnicProfile(FixturesTool.VM_NETWORK_INTERFACE_PROFILE);
+        assertNotNull(result);
+        assertEquals(1, result.size());
+        assertEquals(existingVm, result.get(0));
+    }
+
+    /**
+     * Ensures that no vms are fetched since the network is not assigned to 
any cluster
+     */
+    @Test
+    public void testGetAllForVnicProfileEmpty() {
+        List<VM> result = 
dao.getAllForNetwork(FixturesTool.NETWORK_NO_CLUSTERS_ATTACHED);
+        assertNotNull(result);
+        assertTrue(result.isEmpty());
+    }
+
     private static void assertCorrectGetAllResult(List<VM> result) {
         assertNotNull(result);
         assertFalse(result.isEmpty());
diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql
index 64e3abe..8457adc 100644
--- a/packaging/dbscripts/vms_sp.sql
+++ b/packaging/dbscripts/vms_sp.sql
@@ -1116,6 +1116,22 @@
 LANGUAGE plpgsql;
 
 
+Create or replace FUNCTION GetVmsByVnicProfileId(v_vnic_profile_id UUID) 
RETURNS SETOF vms
+   AS $procedure$
+BEGIN
+   RETURN QUERY SELECT *
+   FROM vms
+   WHERE EXISTS (
+      SELECT 1
+      FROM vm_interface
+      INNER JOIN vnic_profiles
+      ON vnic_profiles.id = vm_interface.vnic_profile_id
+      WHERE vm_interface.vnic_profile_id = v_vnic_profile_id
+      AND vm_interface.vm_guid = vms.vm_guid);
+END; $procedure$
+LANGUAGE plpgsql;
+
+
 Create or replace FUNCTION GetVmsByVdsGroupId(v_vds_group_id UUID) RETURNS 
SETOF vms
    AS $procedure$
 BEGIN


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib474565480e763030a99b429d3054ed2debfcff2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to