Tal Nisan has uploaded a new change for review.

Change subject: core: Disallow domains of mixed subtype (file/block) in <3.4 
storage pool
......................................................................

core: Disallow domains of mixed subtype (file/block) in <3.4 storage pool

Disallow adding domains of a different subtype (file/block)  that the
domains alread contained in the pool with a compatibility version lower
than 3.4 which contains domain

Change-Id: I8226c29e6c34ab6434d0a5ec07aa7fa1d4d00306
Bug-Url: https://bugzilla.redhat.com/1083560
Signed-off-by: Tal Nisan <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBaseTest.java
2 files changed, 37 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/26561/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
index a954cb5..2de5de6 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java
@@ -12,6 +12,7 @@
 import org.ovirt.engine.core.bll.ValidationResult;
 import org.ovirt.engine.core.bll.interfaces.BackendInternal;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
+import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.StoragePoolParametersBase;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
@@ -215,7 +216,7 @@
         if (!isStorageDomainCompatibleWithDC(storageDomain)) {
             return false;
         }
-        if (!isMixedTypesAllowedInDC() && isMixedTypeDC(storageDomain)) {
+        if 
(!isMixedTypesAllowedInDC(getStoragePool().getcompatibility_version()) && 
isMixedTypeDC(storageDomain)) {
             return false;
         }
 
@@ -226,8 +227,8 @@
     // TODO: Should be removed when 3.0 compatibility will not be supported, 
for now we are blocking the possibility
     // to mix NFS domains with block domains on 3.0 pools since block domains 
on 3.0 pools can be in V2 format while NFS
     // domains on 3.0 can only be in V1 format
-    protected boolean isMixedTypesAllowedInDC() {
-        return 
getStoragePool().getcompatibility_version().compareTo(Version.v3_0) > 0;
+    protected boolean isMixedTypesAllowedInDC(Version version) {
+        return FeatureSupported.mixedDomainTypesOnDataCenter(version);
     }
 
     public boolean isMixedTypeDC(StorageDomain storageDomain) {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBaseTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBaseTest.java
index 52e5271..b44ea13 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBaseTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBaseTest.java
@@ -17,6 +17,7 @@
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.ovirt.engine.core.bll.CanDoActionTestUtils;
+import org.ovirt.engine.core.common.FeatureSupported;
 import org.ovirt.engine.core.common.action.StoragePoolManagementParameter;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainSharedStatus;
@@ -61,12 +62,19 @@
     public static MockConfigRule mcr = new MockConfigRule(
             // Indicates a supported storage format of V2 & V3 in version 3.4
             mockConfig(ConfigValues.SupportedStorageFormats, 
Version.v3_0.toString(), "0,1"),
+            mockConfig(ConfigValues.SupportedStorageFormats, 
Version.v3_1.toString(), "3"),
             mockConfig(ConfigValues.SupportedStorageFormats, 
Version.v3_2.toString(), "3"),
+            mockConfig(ConfigValues.SupportedStorageFormats, 
Version.v3_3.toString(), "3"),
             mockConfig(ConfigValues.SupportedStorageFormats, 
Version.v3_4.toString(), "3"),
             mockConfig(ConfigValues.GlusterFsStorageEnabled, 
Version.v3_0.toString(), false),
             mockConfig(ConfigValues.GlusterFsStorageEnabled, 
Version.v3_4.toString(), true),
             mockConfig(ConfigValues.PosixStorageEnabled, 
Version.v3_0.toString(), false),
-            mockConfig(ConfigValues.PosixStorageEnabled, 
Version.v3_4.toString(), true)
+            mockConfig(ConfigValues.PosixStorageEnabled, 
Version.v3_4.toString(), true),
+            mockConfig(ConfigValues.MixedDomainTypesInDataCenter, 
Version.v3_0.toString(), false),
+            mockConfig(ConfigValues.MixedDomainTypesInDataCenter, 
Version.v3_1.toString(), false),
+            mockConfig(ConfigValues.MixedDomainTypesInDataCenter, 
Version.v3_2.toString(), false),
+            mockConfig(ConfigValues.MixedDomainTypesInDataCenter, 
Version.v3_3.toString(), false),
+            mockConfig(ConfigValues.MixedDomainTypesInDataCenter, 
Version.v3_4.toString(), true)
     );
 
     @Before
@@ -132,28 +140,43 @@
         assertTrue("Attaching a valid domain to attach was failed", 
cmd.checkDomainCanBeAttached(storageDomain));
     }
 
+
     /**
-     * Mixed types are not allowed on V3.0, test that attempting to attach a 
domain of different type than what already
-     * exists in the data center will fail
+     * Mixed types are not allowed on version lower than V3.4, test that 
attempting to attach a domain of different type
+     * than what already exists in the data center will fail for versions 3.0 
to 3.3 inclusive
      */
     @Test
-    public void testMixedTypesUnsupported() {
-        storagePool.setcompatibility_version(Version.v3_0);
+    public void testMixedTypesOnAllVersions() {
+        for (Version version : Version.ALL) {
+            if (version.compareTo(Version.v3_0) >= 0) { // No reason to test 
unsupported versions
+                testAddingMixedTypes(version, 
FeatureSupported.mixedDomainTypesOnDataCenter(version));
+            }
+        }
+    }
+
+    private void testAddingMixedTypes(Version version, boolean 
addingMixedTypesShouldSucceed) {
+        storagePool.setcompatibility_version(version);
 
         StorageDomain existingStorageDomain = createValidStorageDomain();
         existingStorageDomain.setStorageType(StorageType.NFS);
         addDomainToPool(existingStorageDomain);
 
         StorageDomain domainToAttach = createValidStorageDomain();
-        domainToAttach.setStorageFormat(StorageFormatType.V1);
+        
domainToAttach.setStorageFormat(cmd.getSupportedStorageFormatSet(version).iterator().next());
         existingStorageDomain.setStorageType(StorageType.NFS);
-        assertTrue("Attaching an NFS domain to a pool with NFS domain with no 
mixed type allowed failed", cmd.checkDomainCanBeAttached(domainToAttach));
+        initCommand();
+        assertTrue("Attaching an NFS domain to a pool with NFS domain with no 
mixed type allowed failed, version: " + version, 
cmd.checkDomainCanBeAttached(domainToAttach));
 
         domainToAttach.setStorageType(StorageType.ISCSI);
         initCommand();
-        assertFalse("Attaching an ISCSI domain to a pool with NFS domain with 
no mixed type allowed succeeded", cmd.checkDomainCanBeAttached(domainToAttach));
-        CanDoActionTestUtils.assertCanDoActionMessages("Attaching an ISCSI 
domain to a pool with NFS domain with no mixed type failed with the wrong 
message", cmd,
-                
VdcBllMessages.ACTION_TYPE_FAILED_MIXED_STORAGE_TYPES_NOT_ALLOWED);
+        if (addingMixedTypesShouldSucceed) {
+            assertTrue("Attaching an ISCSI domain to a pool with NFS domain 
with with mixed type allowed failed, version: " + version, 
cmd.checkDomainCanBeAttached(domainToAttach));
+        }
+        else {
+            assertFalse("Attaching an ISCSI domain to a pool with NFS domain 
with no mixed type allowed succeeded, version: " + version, 
cmd.checkDomainCanBeAttached(domainToAttach));
+            CanDoActionTestUtils.assertCanDoActionMessages("Attaching an ISCSI 
domain to a pool with NFS domain with no mixed type failed with the wrong 
message", cmd,
+                    
VdcBllMessages.ACTION_TYPE_FAILED_MIXED_STORAGE_TYPES_NOT_ALLOWED);
+        }
 
     }
 


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

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

Reply via email to