Liron Aravot has uploaded a new change for review. Change subject: core: Upload only the DC diskless VMs/Templates to OVF stores ......................................................................
core: Upload only the DC diskless VMs/Templates to OVF stores Since change Iaeecc6c4 OVF data of diskless VMs/Templates is uploaded to all the DC domain. The problem with that change is that the loaded VMs/Templates aren't only for that data center - which is fixed in this change. Change-Id: Ic51689cdf0479548c8c4be1267d478fcb8f89de0 Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1138134 Signed-off-by: Liron Aravot <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessOvfUpdateForStorageDomainCommand.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDynamicDAOTest.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java M backend/manager/modules/dal/src/test/resources/fixtures.xml M packaging/dbscripts/vms_sp.sql 8 files changed, 86 insertions(+), 18 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/43/35943/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessOvfUpdateForStorageDomainCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessOvfUpdateForStorageDomainCommand.java index e861033..e112c60 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessOvfUpdateForStorageDomainCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ProcessOvfUpdateForStorageDomainCommand.java @@ -221,7 +221,7 @@ false, false); - vmAndTemplatesIds.addAll(getVmStaticDAO().getVmAndTemplatesIdsWithoutAttachedImageDisks(false)); + vmAndTemplatesIds.addAll(getVmStaticDAO().getVmAndTemplatesIdsWithoutAttachedImageDisks(getParameters().getStoragePoolId(), false)); byte[] bytes = buildOvfInfoFileByteArray(vmAndTemplatesIds); diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java index 8dbab0d..21377ef 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java @@ -95,9 +95,10 @@ /** * Retrieves all the ids of the vms and templates that have no attached disks matching the provided criteria. + * @param storagePoolId the storage pool id of the vms/templates * @param shareableDisks check for attached shareable disks */ - public List<Guid> getVmAndTemplatesIdsWithoutAttachedImageDisks(boolean shareableDisks); + public List<Guid> getVmAndTemplatesIdsWithoutAttachedImageDisks(Guid storagePoolId, boolean shareableDisks); /** * update vm_static.cpu_profile_id for cluster diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java index ae1ab34..ac2895f 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java @@ -58,8 +58,9 @@ } - public List<Guid> getVmAndTemplatesIdsWithoutAttachedImageDisks(boolean shareableDisks) { + public List<Guid> getVmAndTemplatesIdsWithoutAttachedImageDisks(Guid storagePoolId, boolean shareableDisks) { MapSqlParameterSource parameterSource = getCustomMapSqlParameterSource() + .addValue("storage_pool_id", storagePoolId) .addValue("shareable", shareableDisks); return getCallsHandler().executeReadList("GetVmsAndTemplatesIdsWithoutAttachedImageDisks", createGuidMapper(), parameterSource); 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 f5f08dc..5f1aa1f 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 @@ -22,7 +22,7 @@ import org.ovirt.engine.core.compat.Guid; public class VmDAOTest extends BaseDAOTestCase { - private static final int VM_COUNT = 7; + private static final int VM_COUNT = 8; private VmDAO dao; private VM existingVm; private VmStatic newVmStatic; diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDynamicDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDynamicDAOTest.java index 0fa46cc..4860c6a 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDynamicDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDynamicDAOTest.java @@ -19,8 +19,6 @@ private static final int DYNAMIC_RUNNING_COUNT = 3; private VmDynamicDAO dao; private VmDynamic existingVm; - private Guid existingStaticGuidVm = new Guid("77296e00-0cad-4e5a-9299-008a7b6f4357"); - private VmDynamic newVmDynamic; @Override public void setUp() throws Exception { @@ -28,8 +26,6 @@ dao = dbFacade.getVmDynamicDao(); existingVm = dao.get(new Guid("77296e00-0cad-4e5a-9299-008a7b6f4355")); existingVm.setStatus(VMStatus.Up); - - newVmDynamic = new VmDynamic(); } /** @@ -76,12 +72,12 @@ @Test public void testSave() { - newVmDynamic.setId(existingStaticGuidVm); - dao.save(newVmDynamic); - VmDynamic vmdynamic = dao.get(newVmDynamic.getId()); + dao.remove(existingVm.getId()); + dao.save(existingVm); + VmDynamic vmdynamic = dao.get(existingVm.getId()); assertNotNull(vmdynamic); - assertEquals(vmdynamic, newVmDynamic); + assertEquals(vmdynamic, existingVm); } /** diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java index 9f02c5b..212eff3 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java @@ -208,6 +208,15 @@ assertEquals("vm permissions changed during remove although shouldnt have.", numberOfPermissionsBeforeRemove, permissionsDao.getAllForEntity(EXISTING_VM_ID).size()); } + private void verifyVmWithNoDisksForDc(List<Guid> vmBaseWithNoDisks, Guid vmId, Guid storagePoolId) { + assertTrue(vmBaseWithNoDisks.contains(vmId)); + assertEquals(storagePoolId, dbFacade.getVmDao().get(vmId).getStoragePoolId()); + } + + private void verifyTemplateWithNoDisksForDc(List<Guid> vmBaseWithNoDisks, Guid templateId, Guid storagePoolId) { + assertTrue(vmBaseWithNoDisks.contains(templateId)); + assertEquals(storagePoolId, dbFacade.getVmTemplateDao().get(templateId).getStoragePoolId()); + } @Test public void getVmAndTemplatesIdsWithoutAttachedImageDi×›sks() { @@ -215,12 +224,15 @@ addVmDevice(FixturesTool.VM_WITH_NO_ATTACHED_DISKS, FixturesTool.IMAGE_GROUP_ID_2, null); addVmDevice(FixturesTool.VM_WITH_NO_ATTACHED_DISKS, FixturesTool.DISK_ID, FixturesTool.EXISTING_SNAPSHOT_ID); + Guid dataCenterId = FixturesTool.DATA_CENTER; List<Guid> ids = - dao.getVmAndTemplatesIdsWithoutAttachedImageDisks(false); - assertTrue(ids.contains(FixturesTool.VM_RHEL5_POOL_51)); - assertTrue(ids.contains(FixturesTool.VM_TEMPLATE_RHEL5_2)); - assertTrue(ids.contains(FixturesTool.VM_WITH_NO_ATTACHED_DISKS)); + dao.getVmAndTemplatesIdsWithoutAttachedImageDisks(FixturesTool.DATA_CENTER, false); + verifyVmWithNoDisksForDc(ids, FixturesTool.VM_RHEL5_POOL_51, dataCenterId); + verifyTemplateWithNoDisksForDc(ids, FixturesTool.VM_TEMPLATE_RHEL5_2, dataCenterId); + verifyVmWithNoDisksForDc(ids, FixturesTool.VM_WITH_NO_ATTACHED_DISKS, dataCenterId); + assertFalse(ids.contains(FixturesTool.VM_TEMPLATE_RHEL5)); + assertTrue(dao.getVmAndTemplatesIdsWithoutAttachedImageDisks(Guid.newGuid(), false).isEmpty()); } private void addVmDevice(Guid vmId, Guid diskId, Guid snapshotId) { diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml b/backend/manager/modules/dal/src/test/resources/fixtures.xml index 907666c..6309254 100644 --- a/backend/manager/modules/dal/src/test/resources/fixtures.xml +++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml @@ -3805,6 +3805,47 @@ <value>1</value> </row> <row> + <value>77296e00-0cad-4e5a-9299-008a7b6f4357</value> + <value>0</value> + <null /> + <null /> + <null /> + <null /> + <null /> + <null /> + <null /> + <null /> + <null /> + <null /> <!-- console_user_id --> + <null /> + <null /> + <null /> + <value>afce7a39-8e8c-4819-ba9c-796d316592e6</value> + <value></value> + <value>5900</value> + <value>1</value> + <value>0</value> + <value>0</value> + <value>0</value> + <value>1</value> + <value>-1</value> + <value>0</value> + <null /> + <value></value> + <null /> + <value>42058975-3d5e-484a-80c1-01c31207f578</value> + <value>0</value> + <value>0</value> + <value>0</value> + <null /> + <null/> + <null/> + <null/> + <null/> + <value>-1</value> + <value>1</value> + </row> + <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4355</value> <value>5</value> <null /> @@ -4081,6 +4122,20 @@ <value>1,2,3</value> </row> <row> + <value>77296e00-0cad-4e5a-9299-008a7b6f4357</value> + <value>17</value> + <value>0</value> + <value>267308</value> + <value>0</value> + <value>0</value> + <value>17</value> + <value>60</value> + <null /> + <value>1,2,3</value> + <value>1,2,3</value> + <value>1,2,3</value> + </row> + <row> <value>77296e00-0cad-4e5a-9299-008a7b6f4355</value> <value>17</value> <value>0</value> diff --git a/packaging/dbscripts/vms_sp.sql b/packaging/dbscripts/vms_sp.sql index 0ab8f69..5ee5834 100644 --- a/packaging/dbscripts/vms_sp.sql +++ b/packaging/dbscripts/vms_sp.sql @@ -599,7 +599,7 @@ -Create or replace FUNCTION GetVmsAndTemplatesIdsWithoutAttachedImageDisks(v_shareable BOOLEAN) +Create or replace FUNCTION GetVmsAndTemplatesIdsWithoutAttachedImageDisks(v_storage_pool_id UUID, v_shareable BOOLEAN) RETURNS SETOF UUID STABLE AS $procedure$ BEGIN @@ -610,7 +610,10 @@ INNER JOIN base_disks i ON i.disk_id = vd.device_id AND vd.snapshot_id IS NULL - WHERE i.shareable = v_shareable); + WHERE i.shareable = v_shareable) + AND vs.vds_group_id IN (SELECT vg.vds_group_id + FROM vds_groups vg, storage_pool sp + WHERE vg.storage_pool_id = v_storage_pool_id); END; $procedure$ LANGUAGE plpgsql; -- To view, visit http://gerrit.ovirt.org/35943 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic51689cdf0479548c8c4be1267d478fcb8f89de0 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Aravot <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
