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
