Idan Shaby has uploaded a new change for review.

Change subject: core: Empty Change CD List when ISO is Inactive
......................................................................

core: Empty Change CD List when ISO is Inactive

The VM's Change CD list should be empty when the ISO domain in the DC is
inactive.

Change-Id: I784be2510e2f51be277f7ee06a5bd5573ab23d66
Bug-Url: https://bugzilla.redhat.com/1085398
Signed-off-by: Idan Shaby <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQuery.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQueryTest.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
M packaging/dbscripts/storages_sp.sql
9 files changed, 227 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/34866/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQuery.java
index 8997568..f465732 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQuery.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.bll;
 
 
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import 
org.ovirt.engine.core.common.queries.GetImagesListByStoragePoolIdParameters;
 import org.ovirt.engine.core.compat.Guid;
@@ -21,7 +22,8 @@
     @Override
     protected Guid getStorageDomainIdForQuery() {
         if (doesUserHavePermissionsOnStoragePool()) {
-            return 
getDbFacade().getStorageDomainDao().getIsoStorageDomainIdForPool(getStoragePoolId());
+            return 
getDbFacade().getStorageDomainDao().getIsoStorageDomainIdForPool(
+                    getStoragePoolId(), StorageDomainStatus.Active);
         }
         return null;
     }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQueryTest.java
index 512c2e3..fd58863 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQueryTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetImagesListByStoragePoolIdQueryTest.java
@@ -17,6 +17,7 @@
 import org.junit.runners.Parameterized.Parameters;
 import org.ovirt.engine.core.common.businessentities.ImageFileType;
 import org.ovirt.engine.core.common.businessentities.RepoImage;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import 
org.ovirt.engine.core.common.queries.GetImagesListByStoragePoolIdParameters;
 import org.ovirt.engine.core.compat.Guid;
@@ -75,7 +76,8 @@
         mockStoragePoolDAO(new StoragePool());
 
         StorageDomainDAO storageDomainDAOMock = mock(StorageDomainDAO.class);
-        
when(storageDomainDAOMock.getIsoStorageDomainIdForPool(getQueryParameters().getStoragePoolId())).thenReturn(storageDomainId);
+        
when(storageDomainDAOMock.getIsoStorageDomainIdForPool(getQueryParameters().getStoragePoolId(),
+                StorageDomainStatus.Active)).thenReturn(storageDomainId);
         
when(getQuery().getDbFacade().getStorageDomainDao()).thenReturn(storageDomainDAOMock);
 
         assertEquals("wrong storage domain id", storageDomainId, 
getQuery().getStorageDomainIdForQuery());
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAO.java
index 60d97bf..ef9aa46 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAO.java
@@ -4,6 +4,7 @@
 
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.compat.Guid;
 
@@ -34,13 +35,23 @@
     StorageDomain getStorageDomain(Guid poolId, StorageDomainType type);
 
     /**
+     * Retrieves the storage domain for the specified pool, type and status.
+     *
+     * @param storagePoolId The storage pool.
+     * @param type The storage domain type.
+     * @param status The storage domain status.
+     * @return the storage domain for the specified pool, type and status.
+     */
+    StorageDomain getStorageDomain(Guid storagePoolId, StorageDomainType type, 
StorageDomainStatus status);
+
+    /**
      * Retrieves the master storage domain for the specified pool.
      *
-     * @param pool
+     * @param poolId
      *            the storage pool
      * @return the master storage domain
      */
-    Guid getIsoStorageDomainIdForPool(Guid pool);
+    Guid getIsoStorageDomainIdForPool(Guid poolId, StorageDomainStatus status);
 
     /**
      * Retrieves the storage domain with specified id.
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java
index 8df6777..914f4b3 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/StorageDomainDAODbFacadeImpl.java
@@ -28,16 +28,22 @@
 
     @Override
     public StorageDomain getStorageDomain(Guid poolId, StorageDomainType type) 
{
-        return 
getCallsHandler().executeRead("Getstorage_domain_by_type_and_storagePoolId",
+        return getStorageDomain(poolId, type, null);
+    }
+
+    public StorageDomain getStorageDomain(Guid poolId, StorageDomainType type, 
StorageDomainStatus status) {
+        Integer statusNum = status == null ? null : status.getValue();
+        return 
getCallsHandler().executeRead("Getstorage_domain_by_type_storagePoolId_and_status",
                 StorageDomainRowMapper.instance,
                 getCustomMapSqlParameterSource()
                         .addValue("storage_pool_id", poolId)
-                        .addValue("storage_domain_type", type.getValue()));
+                        .addValue("storage_domain_type", type.getValue())
+                        .addValue("status", statusNum));
     }
 
     @Override
-    public Guid getIsoStorageDomainIdForPool(Guid poolId) {
-        return getStorageDomainId(poolId, StorageDomainType.ISO);
+    public Guid getIsoStorageDomainIdForPool(Guid poolId, StorageDomainStatus 
status) {
+        return getStorageDomainId(poolId, StorageDomainType.ISO, status);
     }
 
     @Override
@@ -220,8 +226,19 @@
      * @return the storage domain id of the given type for the given storage 
pool id.
      */
     private Guid getStorageDomainId(Guid poolId, StorageDomainType type) {
+        return getStorageDomainId(poolId, type, null);
+    }
+
+    /**
+     * Gets the storage domain id of the given type for the given storage pool 
id, type and status.
+     *
+     * @param poolId The storage pool id,
+     * @param type The storage domain type.
+     * @return the storage domain id of the given type for the given storage 
pool id.
+     */
+    private Guid getStorageDomainId(Guid poolId, StorageDomainType type, 
StorageDomainStatus status) {
         Guid returnValue = Guid.Empty;
-        StorageDomain domain = getStorageDomain(poolId, type);
+        StorageDomain domain = getStorageDomain(poolId, type, status);
         if (domain != null) {
             returnValue = domain.getId();
         }
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
index b07e3a8..2c6b50a 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java
@@ -13,6 +13,11 @@
     public static final Guid STORAGE_POOL_NFS = new 
Guid("72b9e200-f48b-4687-83f2-62828f249a47");
 
     /**
+     * Predefined NFS storage pool with a single inactive ISO domain.
+     */
+    public static final Guid STORAGE_POOL_NFS_INACTIVE_ISO = new 
Guid("6d849ebf-755f-4552-ad09-9a090cda105c");
+
+    /**
      * Predefined mixed types storage pool.
      */
     public static final Guid STORAGE_POOL_MIXED_TYPES = new 
Guid("386bffd1-e7ed-4b08-bce9-d7df10f8c9a0");
@@ -68,6 +73,11 @@
     protected static final Guid STORAGE_DOAMIN_NFS_ISO = new 
Guid("17e7489d-d490-4681-a322-073ca19bd33d");
 
     /**
+     * Predefined inactive NFS iso storage domain.
+     */
+    protected static final Guid STORAGE_DOMAIN_NFS_INACTIVE_ISO = new 
Guid("72e3a666-89e1-4005-a7ca-f7548004a9aa");
+
+    /**
      * Predefined shared iso storage domain for both the storgae pools
      */
     protected static final Guid SHARED_ISO_STORAGE_DOAMIN_FOR_SP2_AND_SP3 =
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java
index be04987..acfbc2f 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StorageDomainDAOTest.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.common.businessentities.BaseDisk;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
@@ -63,6 +64,60 @@
         assertGetResult(result);
     }
 
+    @Test
+    public void testGetStorageDomainWithStatusForExistingPool() {
+        StorageDomain result = dao.getStorageDomain(FixturesTool.DATA_CENTER,
+                existingDomain.getStorageDomainType(), 
StorageDomainStatus.Active);
+
+        assertGetResult(result);
+    }
+
+    @Test
+    public void testGetStorageDomainWithStatusForInvalidPool() {
+        StorageDomain result = dao.getStorageDomain(Guid.newGuid(),
+                existingDomain.getStorageDomainType(), 
existingDomain.getStatus());
+
+        assertNull(result);
+    }
+
+    @Test
+    public void testGetStorageDomainWithCorrectStatus() {
+        StorageDomain result = 
dao.getStorageDomain(FixturesTool.STORAGE_POOL_NFS_INACTIVE_ISO,
+                StorageDomainType.ISO, StorageDomainStatus.Inactive);
+
+        assertNotNull(result);
+        assertEquals(FixturesTool.STORAGE_DOMAIN_NFS_INACTIVE_ISO, 
result.getId());
+    }
+
+    @Test
+    public void testGetStorageDomainWithWrongStatus() {
+        StorageDomain result = 
dao.getStorageDomain(FixturesTool.STORAGE_POOL_NFS_INACTIVE_ISO,
+                StorageDomainType.ISO, StorageDomainStatus.Active);
+
+        assertNull(result);
+    }
+
+    @Test
+    public void testGetStorageDomainWithNoStatus() {
+        StorageDomain result = 
dao.getStorageDomain(FixturesTool.STORAGE_POOL_NFS_INACTIVE_ISO,
+                StorageDomainType.ISO, null);
+
+        assertNotNull(result);
+        assertEquals(FixturesTool.STORAGE_DOMAIN_NFS_INACTIVE_ISO, 
result.getId());
+    }
+
+    @Test
+    public void testGetStorageDomainsWithAndWithoutStatusAreEqual() {
+        StorageDomain resultWithoutStatus = 
dao.getStorageDomain(FixturesTool.STORAGE_POOL_NFS_INACTIVE_ISO,
+                StorageDomainType.ISO);
+        StorageDomain resultWithStatus = 
dao.getStorageDomain(FixturesTool.STORAGE_POOL_NFS_INACTIVE_ISO,
+                StorageDomainType.ISO, null);
+
+        assertNotNull(resultWithoutStatus);
+        assertNotNull(resultWithStatus);
+        assertEquals(resultWithoutStatus, resultWithStatus);
+    }
+
     /**
      * Ensures that nothing is returned when the id is invalid.
      */
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java
index c9a1371..be42a8c 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/StoragePoolDAOTest.java
@@ -151,7 +151,7 @@
     public void testGetAllByStatus() {
         List<StoragePool> result = dao.getAllByStatus(StoragePoolStatus.Up);
         assertNotNull("list of returned pools in status up shouldn't be null", 
result);
-        assertEquals("wrong number of storage pools returned for up status", 
6, result.size());
+        assertEquals("wrong number of storage pools returned for up status", 
7, result.size());
 
         result = dao.getAllByStatus(StoragePoolStatus.Maintenance);
         assertNotNull("list of returned pools in maintenance status shouldn't 
be null", result);
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 16cf011..1814077 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -46,6 +46,73 @@
         </row>
     </table>
 
+    <table name="mac_pools">
+        <column>id</column>
+        <column>name</column>
+        <column>description</column>
+        <column>allow_duplicate_mac_addresses</column>
+        <column>default_pool</column>
+        <row>
+            <value>8c3a60e9-6a66-40db-84e0-c74077991775</value>
+            <value>Default</value>
+            <value>Default MAC pool</value>
+            <value>false</value>
+            <value>true</value>
+        </row>
+        <row>
+            <value>c248552d-64d4-4a77-ab1d-4c5eea00be6b</value>
+            <value>two range pool</value>
+            <value>pool with two ranges</value>
+            <value>false</value>
+            <value>false</value>
+        </row>
+        <row>
+            <value>17baf4e3-4347-4f81-915f-7762a108b81a</value>
+            <value>not used pool</value>
+            <value>not used</value>
+            <value>false</value>
+            <value>false</value>
+        </row>
+        <row>
+            <value>17baf4e3-4347-4f81-915f-7762a108b81b</value>
+            <value>Pool with a single inactive ISO domain</value>
+            <value>not used</value>
+            <value>false</value>
+            <value>false</value>
+        </row>
+    </table>
+
+    <table name="mac_pool_ranges">
+        <column>mac_pool_id</column>
+        <column>from_mac</column>
+        <column>to_mac</column>
+        <row>
+            <value>17baf4e3-4347-4f81-915f-7762a108b81a</value>
+            <value>00:C0:81:21:71:17</value>
+            <value>00:C1:81:21:71:17</value>
+        </row>
+        <row>
+            <value>8c3a60e9-6a66-40db-84e0-c74077991775</value>
+            <value>00:C0:81:21:71:17</value>
+            <value>00:C1:81:21:71:17</value>
+        </row>
+        <row>
+            <value>c248552d-64d4-4a77-ab1d-4c5eea00be6b</value>
+            <value>00:C0:81:21:71:17</value>
+            <value>00:C1:81:21:71:17</value>
+        </row>
+        <row>
+            <value>c248552d-64d4-4a77-ab1d-4c5eea00be6b</value>
+            <value>02:C0:81:21:71:17</value>
+            <value>02:C1:81:21:71:17</value>
+        </row>
+        <row>
+            <value>17baf4e3-4347-4f81-915f-7762a108b81b</value>
+            <value>02:C0:81:21:71:17</value>
+            <value>02:C1:81:21:71:17</value>
+        </row>
+    </table>
+
     <table name="command_entities">
         <column>command_id</column>
         <column>command_type</column>
@@ -167,6 +234,21 @@
             <value></value>
             <value></value>
             <value>1</value>
+            <value></value>
+            <value>nfs</value>
+            <value>auto</value>
+            <value>42</value>
+            <value>7</value>
+        </row>
+        <row>
+            <value>0cc146e8-e5ed-482c-8814-270bc48c2982</value>
+            <value>10.35.64.25:/export/nfs2</value>
+            <null />
+            <null />
+            <null />
+            <value></value>
+            <value></value>
+            <value>2</value>
             <value></value>
             <value>nfs</value>
             <value>auto</value>
@@ -521,6 +603,19 @@
             <value>2.3</value>
             <value>2010-10-21 03:38:22</value>
             <value>2010-11-29 15:57:10</value>
+        </row>
+        <row>
+            <value>6d849ebf-755f-4552-ad09-9a090cda105c</value>
+            <value>rhel6.iscsi0</value>
+            <value>Pool with a single inactive ISO domain</value>
+            <value>false</value>
+            <value>1</value>
+            <value>1127</value>
+            <value>787c5473-9a82-4191-930b-814db3451531</value>
+            <value>2.3</value>
+            <value>2014-10-14 16:23:00</value>
+            <value>2014-10-14 16:23:00</value>
+            <value>17baf4e3-4347-4f81-915f-7762a108b81b</value>
         </row>
         <row>
             <value>6d849ebf-755f-4552-ad09-9a090cda105e</value>
@@ -3866,6 +3961,17 @@
         <column>last_time_used_as_master</column>
         <column>storage_description</column>
         <row>
+            <value>72e3a666-89e1-4005-a7ca-f7548004a9aa</value>
+            <value>0cc146e8-e5ed-482c-8814-270bc48c2982</value>
+            <value>scale_sd4</value>
+            <value>2</value>
+            <value>1</value>
+            <value>2014-10-14 16:33:00</value>
+            <value>2014-10-14 16:33:00</value>
+            <value>5</value>
+            <value>description0</value>
+        </row>
+        <row>
             <value>72e3a666-89e1-4005-a7ca-f7548004a9ab</value>
             <value>G95OWd-Wvck-vftu-pMq9-9SAC-NF3E-ulDPsQ</value>
             <value>scale_sd5</value>
@@ -3982,6 +4088,12 @@
         <column>available_disk_size</column>
         <column>used_disk_size</column>
         <column>_update_date</column>
+        <row>
+            <value>72e3a666-89e1-4005-a7ca-f7548004a9aa</value>
+            <value>196</value>
+            <value>3</value>
+            <null />
+        </row>
         <row>
             <value>72e3a666-89e1-4005-a7ca-f7548004a9ab</value>
             <value>196</value>
@@ -4123,6 +4235,11 @@
             <value>386bffd1-e7ed-4b08-bce9-d7df10f8c9a0</value>
             <value>3</value>
         </row>
+        <row>
+            <value>72e3a666-89e1-4005-a7ca-f7548004a9aa</value>
+            <value>6d849ebf-755f-4552-ad09-9a090cda105c</value>
+            <value>4</value>
+        </row>
     </table>
 
     <table name="snapshots">
diff --git a/packaging/dbscripts/storages_sp.sql 
b/packaging/dbscripts/storages_sp.sql
index 80df390..30d2307 100644
--- a/packaging/dbscripts/storages_sp.sql
+++ b/packaging/dbscripts/storages_sp.sql
@@ -586,14 +586,15 @@
 LANGUAGE plpgsql;
 
 
-Create or replace FUNCTION 
Getstorage_domain_by_type_and_storagePoolId(v_storage_domain_type INTEGER, 
v_storage_pool_id UUID)
+Create or replace FUNCTION 
Getstorage_domain_by_type_storagePoolId_and_status(v_storage_domain_type 
INTEGER, v_storage_pool_id UUID, v_status INTEGER)
 RETURNS SETOF storage_domains STABLE
    AS $procedure$
 BEGIN
    RETURN QUERY SELECT *
    FROM storage_domains
    WHERE storage_pool_id = v_storage_pool_id
-   AND storage_domain_type = v_storage_domain_type;
+   AND storage_domain_type = v_storage_domain_type
+   AND (v_status IS NULL OR status = v_status);
 END; $procedure$
 LANGUAGE plpgsql;
 


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

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

Reply via email to