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
