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

Reply via email to