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

Reply via email to