Amit Aviram has uploaded a new change for review. Change subject: core: Limitation addition for downgrading DC's compatible version. ......................................................................
core: Limitation addition for downgrading DC's compatible version. Downgrading a DC's compatibility version can cause in some cases a downgrade of the attached storage domains' format which is not supported. Also, it can be downgraded to versions which does not necessarily support some of the DC's attached domains. Hence a limitation was added in this command's CDA. Change-Id: Ib97488c705a32fe73b390ef226b1ad19a3784b76 Bug-Url: https://bugzilla.redhat.com/1121556 Signed-off-by: Amit Aviram <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBase.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/StorageHandlingCommandBaseTest.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommandTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java M backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java M frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties M frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties 9 files changed, 185 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/37478/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 5c7527c..e42e1b3 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 @@ -38,6 +38,7 @@ import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllMessages; +import org.ovirt.engine.core.common.utils.VersionStorageFormatUtil; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; @@ -329,14 +330,14 @@ return returnValue; } - protected boolean isStorageDomainCompatibleWithDC(StorageDomain storageDomain) { + protected boolean isStorageDomainCompatibleWithDC(StorageDomainStatic domainStatic) { StoragePoolValidator spv = new StoragePoolValidator(getStoragePool()); - if (storageDomain.getStorageType() == StorageType.GLUSTERFS) { + if (domainStatic.getStorageType() == StorageType.GLUSTERFS) { ValidationResult result = spv.isGlusterSupportedInDC(); return validate(result); } - if (storageDomain.getStorageType() == StorageType.POSIXFS) { + if (domainStatic.getStorageType() == StorageType.POSIXFS) { ValidationResult result = spv.isPosixSupportedInDC(); return validate(result); } @@ -344,11 +345,17 @@ return true; } + protected boolean isStorageDomainCompatibleWithDC(StorageDomain storageDomain) { + return isStorageDomainCompatibleWithDC(storageDomain.getStorageStaticData()); + } + protected boolean checkDomainCanBeAttached(StorageDomain storageDomain) { if (!validateAmountOfIsoAndExportDomainsInDC(storageDomain)) { return false; } if (!isStorageDomainFormatCorrectForDC(storageDomain, getStoragePool())) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL); + getReturnValue().getCanDoActionMessages().add(String.format("$storageFormat %1$s", storageDomain.getStorageFormat().toString())); return false; } if (!checkStorageDomainSharedStatusNotLocked(storageDomain)) { @@ -379,8 +386,8 @@ return FeatureSupported.mixedDomainTypesOnDataCenter(version); } - public boolean isMixedTypeDC(StorageDomain storageDomain) { - boolean isBlockDomain = storageDomain.getStorageType().isBlockDomain(); + public boolean isMixedTypeDC(StorageDomainStatic domainStatic) { + boolean isBlockDomain = domainStatic.getStorageType().isBlockDomain(); List<StorageType> storageTypesOnPool = getStoragePoolDAO().getStorageTypesInPool(getStoragePoolId()); for (StorageType storageType : storageTypesOnPool) { @@ -390,6 +397,10 @@ } } return false; + } + + public boolean isMixedTypeDC(StorageDomain storageDomain) { + return isMixedTypeDC(storageDomain.getStorageStaticData()); } @@ -525,25 +536,28 @@ * The following method should check if the format of the storage domain allows to it to be attached to the storage * pool. At case of failure the false value will be return and appropriate error message will be added to * canDoActionMessages - * @param storageDomain + * @param domainStatic * -the domain object * @param storagePool * - the pool object * @return */ + protected boolean isStorageDomainFormatCorrectForDC(StorageDomainStatic domainStatic, StoragePool storagePool) { + if (domainStatic.getStorageDomainType().isIsoOrImportExportDomain()) { + return true; + } + + if (storagePool != null) { + if (VersionStorageFormatUtil.getPreferredForVersion(storagePool.getcompatibility_version(), + domainStatic.getStorageType()).compareTo(domainStatic.getStorageFormat()) < 0) { + return false; + } + } + return true; + } + protected boolean isStorageDomainFormatCorrectForDC(StorageDomain storageDomain, StoragePool storagePool) { - if (storageDomain.getStorageDomainType().isIsoOrImportExportDomain()) { - return true; - } - Set<StorageFormatType> supportedFormatsSet = - getSupportedStorageFormatSet(storagePool.getcompatibility_version()); - if (supportedFormatsSet.contains(storageDomain.getStorageFormat())) { - return true; - } - addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL); - getReturnValue().getCanDoActionMessages().add( - String.format("$storageFormat %1$s", storageDomain.getStorageFormat().toString())); - return false; + return isStorageDomainFormatCorrectForDC(storageDomain.getStorageStaticData(), storagePool); } protected Set<StorageFormatType> getSupportedStorageFormatSet(Version version) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java index 707b22b..4c7f069 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java @@ -36,6 +36,7 @@ import org.ovirt.engine.core.dao.StorageDomainStaticDAO; import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.utils.NetworkUtils; +import org.ovirt.engine.core.utils.ReplacementUtils; import org.ovirt.engine.core.utils.transaction.TransactionMethod; import org.ovirt.engine.core.utils.transaction.TransactionSupport; @@ -178,9 +179,11 @@ returnValue = false; addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NAME_ALREADY_EXIST); } + + List<StorageDomainStatic> poolDomains = getStorageDomainStaticDAO().getAllForStoragePool(getStoragePool().getId()); if (returnValue && _oldStoragePool.isLocal() != getStoragePool().isLocal() - && getStorageDomainStaticDAO().getAllForStoragePool(getStoragePool().getId()).size() > 0) { + && poolDomains.size() > 0) { returnValue = false; getReturnValue() .getCanDoActionMessages() @@ -197,6 +200,9 @@ } // decreasing of compatibility version is allowed under conditions else if (getStoragePool().getcompatibility_version().compareTo(_oldStoragePool.getcompatibility_version()) < 0) { + if (!poolDomains.isEmpty() && !isCompatibilityVersionChangeAllowedForDomains(poolDomains)) { + return false; + } List<Network> networks = getNetworkDAO().getAllForDataCenter(getStoragePoolId()); if (networks.size() == 1) { Network network = networks.get(0); @@ -224,6 +230,43 @@ return returnValue; } + private boolean isCompatibilityVersionChangeAllowedForDomains(List<StorageDomainStatic> poolDomains) { + List<Object> formatProblematicDomains = new ArrayList<>(); + List<Object> typeProblematicDomains = new ArrayList<>(); + boolean failOnSupportedTypeMixing = false; + + for (StorageDomainStatic domainStatic : poolDomains) { + if (!failOnSupportedTypeMixing && !isStorageDomainTypeFitsPoolIfMixed(domainStatic)) { + failOnSupportedTypeMixing = true; + } + if (!isStorageDomainCompatibleWithDC(domainStatic)) { + typeProblematicDomains.add(domainStatic.getName()); + } + if (!isStorageDomainFormatCorrectForDC(domainStatic, getStoragePool())) { + formatProblematicDomains.add(domainStatic.getName()); + } + } + + return manageCompatibilityVersionChangeCheckResult(failOnSupportedTypeMixing, formatProblematicDomains, typeProblematicDomains); + } + + private boolean isStorageDomainTypeFitsPoolIfMixed(StorageDomainStatic domainStatic) { + return !isMixedTypeDC(domainStatic); + } + + private boolean manageCompatibilityVersionChangeCheckResult(boolean failOnSupportedTypeMixing, List<Object> formatProblematicDomains, List<Object> typeProblematicDomains) { + if (!formatProblematicDomains.isEmpty()) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING); + getReturnValue().getCanDoActionMessages().addAll(ReplacementUtils.replaceWith("formatDowngradedDomains", formatProblematicDomains)); + } + if (!typeProblematicDomains.isEmpty()) { + addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION); + getReturnValue().getCanDoActionMessages().addAll(ReplacementUtils.replaceWith("unsupportedVersionDomains", typeProblematicDomains)); + } + + return typeProblematicDomains.isEmpty() && formatProblematicDomains.isEmpty() && !failOnSupportedTypeMixing; + } + protected boolean checkAllClustersLevel() { boolean returnValue = true; List<VDSGroup> clusters = getVdsGroupDAO().getAllForStoragePool(getStoragePool().getId()); 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 4f6f18f..9062de8 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 @@ -145,7 +145,6 @@ assertTrue("Attaching a valid domain to attach was failed", cmd.checkDomainCanBeAttached(storageDomain)); } - /** * 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 @@ -166,7 +165,7 @@ when(storagePoolDAO.getStorageTypesInPool(storagePool.getId())).thenReturn(Collections.singletonList(StorageType.NFS)); StorageDomain domainToAttach = createValidStorageDomain(); - domainToAttach.setStorageFormat(cmd.getSupportedStorageFormatSet(version).iterator().next()); + domainToAttach.setStorageFormat(StorageFormatType.V1); initCommand(); assertTrue("Attaching an NFS domain to a pool with NFS domain with no mixed type allowed failed, version: " + version, cmd.checkDomainCanBeAttached(domainToAttach)); @@ -180,7 +179,6 @@ 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); } - } @Test @@ -244,15 +242,6 @@ assertFalse("Attaching domain in locked status succeeded while it should have failed", cmd.checkDomainCanBeAttached(storageDomain)); CanDoActionTestUtils.assertCanDoActionMessages("Attaching domain with in locked status failed with the wrong message", cmd, VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_STATUS_ILLEGAL); - } - - @Test - public void testAttachFailFormatType() { - StorageDomain domainToAttach = createValidStorageDomain(); - domainToAttach.setStorageFormat(StorageFormatType.V2); - assertFalse("Attaching domain with unsupported version succeeded while it should have failed", cmd.checkDomainCanBeAttached(domainToAttach)); - CanDoActionTestUtils.assertCanDoActionMessages("Attaching domain with unsupported version failed with the wrong message", cmd, - VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAIN_FORMAT_ILLEGAL); } @Test diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommandTest.java index e7ed423..d9b9751 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommandTest.java @@ -24,8 +24,11 @@ import org.ovirt.engine.core.bll.utils.VersionSupport; import org.ovirt.engine.core.bll.validator.NetworkValidator; import org.ovirt.engine.core.common.action.StoragePoolManagementParameter; +import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.businessentities.StorageFormatType; import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.StorageType; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.network.Network; @@ -95,11 +98,20 @@ doReturn(vdsDao).when(cmd).getVdsDAO(); doReturn(networkDao).when(cmd).getNetworkDAO(); doReturn(validator).when(cmd).createStoragePoolValidator(); + doReturn(true).when(sdList).isEmpty(); mcr.mockConfigValue(ConfigValues.AutoRegistrationDefaultVdsGroupID, DEFAULT_VDS_GROUP_ID); mcr.mockConfigValue(ConfigValues.ManagementNetwork, "test_mgmt"); mcr.mockConfigValue(ConfigValues.NonVmNetworkSupported, false); mcr.mockConfigValue(ConfigValues.MTUOverrideSupported, false); + mcr.mockConfigValue(ConfigValues.MixedDomainTypesInDataCenter, Version.v3_0, false); + mcr.mockConfigValue(ConfigValues.MixedDomainTypesInDataCenter, Version.v3_1, false); + mcr.mockConfigValue(ConfigValues.MixedDomainTypesInDataCenter, Version.v3_2, false); + mcr.mockConfigValue(ConfigValues.MixedDomainTypesInDataCenter, Version.v3_3, false); + mcr.mockConfigValue(ConfigValues.MixedDomainTypesInDataCenter, Version.v3_4, true); + mcr.mockConfigValue(ConfigValues.MixedDomainTypesInDataCenter, Version.v3_5, true); + mcr.mockConfigValue(ConfigValues.PosixStorageEnabled, Version.v3_1, false); + mcr.mockConfigValue(ConfigValues.GlusterFsStorageEnabled, Version.v3_1, false); } @Test @@ -166,7 +178,6 @@ assertTrue(cmd.canDoAction()); } - // TODO: @Test public void lowerVersionMgmtNetworkNonSupportedFeatures() { storagePoolWithLowerVersion(); @@ -214,6 +225,87 @@ addDefaultClusterToPool(); storagePoolWithLocalFS(); canDoActionFailed(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_WITH_DEFAULT_VDS_GROUP_CANNOT_BE_LOCALFS); + } + + @Test + public void cantDowngradeIfImpliesFormatDowngrading() { + storagePoolVersion35(); + + // Set the current compatibility to be 3.5, and the new to be 3.0. downgrading to 3.0 will cause format downgrading. + cmd.getStoragePool().setcompatibility_version(Version.v3_0); + + // Add domains to the storage domains list. (cancel the mock) + StorageDomain sd = createStorageDomain(StorageFormatType.V3, StorageType.UNKNOWN); + setAttachedDomains(sd); + + canDoActionFailed(VdcBllMessages.ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING); + } + + @Test + public void cantDowngradeIfGlusterNotSupported() { + failOnDowngradingWithStorageType(StorageType.GLUSTERFS); + } + + @Test + public void cantDowngradeIfPosixNotSupported() { + failOnDowngradingWithStorageType(StorageType.POSIXFS); + } + + private void failOnDowngradingWithStorageType(StorageType storageType) { + storagePoolVersion35(); + cmd.getStoragePool().setcompatibility_version(Version.v3_1); + + // Add domains to the storage domains list. (cancel the mock) + StorageDomain sd = createStorageDomain(StorageFormatType.V3, storageType); + setAttachedDomains(sd); + + canDoActionFailed(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION); + } + + @Test + public void cantDowngradeIfMixedTypesNotSupported() { + storagePoolVersion35(); + cmd.getStoragePool().setcompatibility_version(Version.v3_3); + + // Set mixed storage domains (File, Block). + StorageDomain sdISCI = createStorageDomain(StorageFormatType.V3, StorageType.ISCSI); + StorageDomain sdNFS = createStorageDomain(StorageFormatType.V3, StorageType.NFS); + setAttachedDomains(sdISCI, sdNFS); + + List<StorageType> storageTypes = new ArrayList<>(); + storageTypes.add(sdISCI.getStorageType()); + storageTypes.add(sdNFS.getStorageType()); + + doReturn(storageTypes).when(spDao).getStorageTypesInPool(any(Guid.class)); + canDoActionFailed(VdcBllMessages.ACTION_TYPE_FAILED_MIXED_STORAGE_TYPES_NOT_ALLOWED); + } + + private StorageDomain createStorageDomain(StorageFormatType formatType, StorageType storageType) { + StorageDomain sd = new StorageDomain(); + sd.setStorageFormat(formatType); + sd.setStorageType(storageType); + + return sd; + } + + private void setAttachedDomains(StorageDomain ... sDomains) { + List<StorageDomainStatic> sdListWithDomains = new ArrayList<>(); + for (StorageDomain sd:sDomains) { + sdListWithDomains.add(sd.getStorageStaticData()); + + // Set the specific validator for this domain. + /*AttachDomainValidatorForTesting attachDomainValidator = spy(new AttachDomainValidatorForTesting(sd.getStorageStaticData(), cmd.getStoragePool())); + doReturn(attachDomainValidator).when(cmd).getAttachDomainValidator(sd.getStorageStaticData()); + doReturn(spDao).when(attachDomainValidator).getStoragePoolDao();*/ + } + + when(sdDao.getAllForStoragePool(any(Guid.class))).thenReturn(sdListWithDomains); + } + + private void storagePoolVersion35() { + StoragePool pool = createBasicPool(); + pool.setcompatibility_version(Version.v3_5); + when(spDao.get(any(Guid.class))).thenReturn(pool); } private void newPoolNameIsAlreadyTaken() { @@ -276,6 +368,7 @@ StoragePool pool = new StoragePool(); pool.setId(Guid.newGuid()); pool.setName("Default"); + pool.setcompatibility_version(Version.v3_5); return pool; } diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java index 64e13a8..94aca6c 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java @@ -279,6 +279,8 @@ ACTION_TYPE_FAILED_PRESTARTED_VMS_CANNOT_EXCEED_VMS_COUNT(ErrorType.CONFLICT), TEMPLATE_IMAGE_NOT_EXIST(ErrorType.BAD_PARAMETERS), ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION(ErrorType.CONSTRAINT_VIOLATION), + ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING(ErrorType.NOT_SUPPORTED), + ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION(ErrorType.NOT_SUPPORTED), ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION_UNDER_DC(ErrorType.CONSTRAINT_VIOLATION), ACTION_TYPE_FAILED_GIVEN_VERSION_NOT_SUPPORTED(ErrorType.INCOMPATIBLE_VERSION), ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT(ErrorType.INCOMPATIBLE_VERSION), diff --git a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties index 2a3b3af..bbffa8b 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties @@ -674,6 +674,8 @@ ACTION_TYPE_FAILED_ILLEGAL_ARCHITECTURE_TYPE_INCOMPATIBLE=Cannot ${action} ${type}. Architecture does not match the expected value. ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION=Cannot decrease data center compatibility version. ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION_UNDER_DC=Cannot decrease cluster compatibility version beneath data center compatibility version. +ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING=Cannot ${action} ${type}. This action will cause storage format downgrading which is not supported. The following storage domains cannot be downgraded: ${formatDowngradedDomains}. +ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION=Cannot ${action} ${type}. The following storage domains are not supported in the selected version: ${unsupportedVersionDomains}. ACTION_TYPE_FAILED_GIVEN_VERSION_NOT_SUPPORTED=Cannot ${action} ${type}. Selected Compatibility Version is not supported. ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT=Cannot ${action} ${type}. Selected data center compatibility version does not support live snapshot. NETWORK_ADDR_MANDATORY_IN_STATIC_IP=Network address must be specified when using static IP diff --git a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java index 5e80c26..b34e6aa 100644 --- a/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java +++ b/frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java @@ -1846,6 +1846,12 @@ @DefaultStringValue("Cannot decrease data center compatibility version.") String ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION(); + @DefaultStringValue("Cannot ${action} ${type}. This action will cause storage format downgrading which is not supported. The following storage domains cannot be downgraded: ${formatDowngradedDomains}.") + String ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING(); + + @DefaultStringValue("Cannot ${action} ${type}. The following storage domains are not supported in the selected version: ${unsupportedVersionDomains}.") + String ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION(); + @DefaultStringValue("Cannot decrease cluster compatibility version beneath data center compatibility version.") String ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION_UNDER_DC(); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index 46dcf2b..55dfd79 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -638,6 +638,8 @@ ACTION_TYPE_FAILED_ILLEGAL_ARCHITECTURE_TYPE_INCOMPATIBLE=Cannot ${action} ${type}. Architecture does not match the expected value. ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION=Cannot decrease data center compatibility version. ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION_UNDER_DC=Cannot decrease cluster compatibility version beneath data center compatibility version. +ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING=Cannot ${action} ${type}. This action will cause storage format downgrading which is not supported. The following storage domains cannot be downgraded: ${formatDowngradedDomains}. +ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION=Cannot ${action} ${type}. The following storage domains are not supported in the selected version: ${unsupportedVersionDomains}. ACTION_TYPE_FAILED_GIVEN_VERSION_NOT_SUPPORTED=Cannot ${action} ${type}. Selected Compatibility Version is not supported. ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT=Cannot ${action} ${type}. Selected data center compatibility version does not support live snapshot. NETWORK_ADDR_MANDATORY_IN_STATIC_IP=Network address must be specified when using static ip diff --git a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index 41f3644..65cf3f6 100644 --- a/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -675,6 +675,8 @@ ACTION_TYPE_FAILED_ILLEGAL_ARCHITECTURE_TYPE_INCOMPATIBLE=Cannot ${action} ${type}. Architecture does not match the expected value. ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION=Cannot decrease data center compatibility version. ACTION_TYPE_FAILED_CANNOT_DECREASE_COMPATIBILITY_VERSION_UNDER_DC=Cannot decrease cluster compatibility version beneath data center compatibility version. +ACTION_TYPE_FAILED_DECREASING_COMPATIBILITY_VERSION_CAUSES_STORAGE_FORMAT_DOWNGRADING=Cannot ${action} ${type}. This action will cause storage format downgrading which is not supported. The following storage domains cannot be downgraded: ${formatDowngradedDomains}. +ACTION_TYPE_FAILED_STORAGE_DOMAINS_ARE_NOT_SUPPORTED_IN_DOWNGRADED_VERSION=Cannot ${action} ${type}. The following storage domains are not supported in the selected version: ${unsupportedVersionDomains}. ACTION_TYPE_FAILED_GIVEN_VERSION_NOT_SUPPORTED=Cannot ${action} ${type}. Selected Compatibility Version is not supported. ACTION_TYPE_FAILED_DATA_CENTER_VERSION_DOESNT_SUPPORT_LIVE_SNAPSHOT=Cannot ${action} ${type}. Selected data center compatibility version does not support live snapshot. NETWORK_ADDR_MANDATORY_IN_STATIC_IP=Network address must be specified when using static ip -- To view, visit http://gerrit.ovirt.org/37478 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ib97488c705a32fe73b390ef226b1ad19a3784b76 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Amit Aviram <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
