ofri masad has uploaded a new change for review.

Change subject: core: Fix uninformative quota messages (#838589)
......................................................................

core: Fix uninformative quota messages (#838589)

https://bugzilla.redhat.com/838589

When a quota is exceeded or reaches the warning threshold a log message
is shown. The messages were amended to be more informative.

Different messages are shown for Storage and Runtime qoutas and for
passing the warning threshold, the qouta limit and the grace zone.

Change-Id: Ie7c83616b773d7471447944e6dd9adcd49d2d5ac
Signed-off-by: Ofri Masad <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
M 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
2 files changed, 170 insertions(+), 129 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/20/7220/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
index 55881e6..1dc572f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/quota/QuotaManager.java
@@ -1,20 +1,11 @@
 package org.ovirt.engine.core.bll.quota;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.ovirt.engine.core.common.AuditLogType;
-import org.ovirt.engine.core.common.businessentities.Quota;
-import org.ovirt.engine.core.common.businessentities.QuotaEnforcementTypeEnum;
-import org.ovirt.engine.core.common.businessentities.QuotaStorage;
-import org.ovirt.engine.core.common.businessentities.QuotaVdsGroup;
-import org.ovirt.engine.core.common.businessentities.VM;
-import org.ovirt.engine.core.common.businessentities.storage_pool;
+import org.ovirt.engine.core.common.businessentities.*;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -42,24 +33,42 @@
                 .getQuotaDAO();
     }
 
-    private AuditLogableBase getLoggableQuotaStorageParams(String quotaName, 
Double storageUsagePercentage) {
+    private AuditLogableBase getLoggableQuotaStorageParams(String quotaName,
+            double storageUsagePercentage,
+            double storageRequestedPercentage) {
         AuditLogableBase logable = new AuditLogableBase();
+        logable.getUserName();
         logable.AddCustomValue("QuotaName", quotaName);
-        logable.AddCustomValue("storageUsage", 
storageUsagePercentage.toString());
+        logable.AddCustomValue("CurrentStorage", 
String.valueOf((int)storageUsagePercentage));
+        logable.AddCustomValue("Requested",  
String.valueOf((int)storageRequestedPercentage));
+
         return logable;
     }
 
     private AuditLogableBase getLoggableQuotaVdsGroupParams(String quotaName,
-            Double value,
-            boolean isMemory) {
+            double cpuCurrentPercentage,
+            double cpuRequestPercentage,
+            double memCurrentPercentage,
+            double memRequestPercentage,
+            boolean cpuOverLimit,
+            boolean memOverLimit) {
+
         AuditLogableBase logable = new AuditLogableBase();
         logable.AddCustomValue("QuotaName", quotaName);
-        String str = isMemory ? "memPercentage" : "VCPUPercentage";
-        logable.AddCustomValue(str, value.toString());
+
+        StringBuilder currentUtilization = new StringBuilder();
+        currentUtilization.append(cpuOverLimit ? "vcpu:" + 
String.valueOf((int)cpuCurrentPercentage) + "% " : "");
+        currentUtilization.append(memOverLimit ? "mem:" + 
String.valueOf((int)memCurrentPercentage) + "%" : "");
+
+        StringBuilder request = new StringBuilder();
+        request.append(cpuOverLimit ? "vcpu:" + 
String.valueOf((int)cpuRequestPercentage) + "% " : "");
+        request.append(memOverLimit ? "mem:" + 
String.valueOf((int)memRequestPercentage) + "%" : "");
+
+        logable.AddCustomValue("Utilization", currentUtilization.toString());
+        logable.AddCustomValue("Requested", request.toString());
+
         return logable;
     }
-
-
 
     public boolean validateAndSetStorageQuota(storage_pool storagePool,
             List<StorageQuotaValidationParameter> parameters,
@@ -170,28 +179,28 @@
 
                 for (Guid quotaId : desiredStorageSizeQuotaMap.keySet()) {
                     Quota quota = quotaMap.get(quotaId);
-                    if (quota.getGlobalQuotaStorage() != null) { //global 
storage quota
-                        if (quota.getGlobalQuotaStorage().getStorageSizeGB() > 
UNLIMITED) {
+                    if (quota.getGlobalQuotaStorage() != null) { // global 
storage quota
+                        if (quota.getGlobalQuotaStorage().getStorageSizeGB() 
!= UNLIMITED) {
                             double sum = 0.0;
                             for (Double size : 
desiredStorageSizeQuotaMap.get(quotaId).values()) {
                                 sum += size;
                             }
-                            if (isIncrease) {
-                                sum += 
quota.getGlobalQuotaStorage().getStorageSizeGBUsage();
-                            } else {
-                                sum = 
quota.getGlobalQuotaStorage().getStorageSizeGBUsage() - sum;
-                            }
-                            double storageUsagePercentage = sum
+
+                            double storageUsagePercentage = 
quota.getGlobalQuotaStorage().getStorageSizeGBUsage()
                                     / 
quota.getGlobalQuotaStorage().getStorageSizeGB() * 100;
+                            double storageRequestPercentage = sum
+                                    / 
quota.getGlobalQuotaStorage().getStorageSizeGB() * 100;
+
                             if 
(!checkQuotaStorageLimits(storagePool.getQuotaEnforcementType(),
                                     quota,
                                     
quota.getGlobalQuotaStorage().getStorageSizeGB(),
-                                    storageUsagePercentage,
+                                    storageUsagePercentage, 
storageRequestPercentage,
                                     canDoActionMessages,
                                     logPair)) {
                                 return false;
                             }
-                            newUsedGlobalStorageSize.put(quotaId, sum);
+                            newUsedGlobalStorageSize.put(quotaId, sum
+                                    + 
quota.getGlobalQuotaStorage().getStorageSizeGBUsage());
                         }
                     } else {
                         newUsedSpecificStorageSize.put(quotaId, new 
HashMap<Guid, Double>());
@@ -200,29 +209,24 @@
                             for (QuotaStorage quotaStorage : 
quota.getQuotaStorages()) {
                                 if 
(quotaStorage.getStorageId().equals(storageId)) {
                                     hasStorageId = true;
-                                    if (quotaStorage.getStorageSizeGB() > 
UNLIMITED) {
-                                        double sum = 0;
-                                        if (isIncrease) {
-                                            sum =
-                                                    
desiredStorageSizeQuotaMap.get(quotaId).get(storageId)
-                                                            + 
quotaStorage.getStorageSizeGBUsage();
-                                        } else {
-                                            sum =
-                                                    
quotaStorage.getStorageSizeGBUsage()
-                                                            - 
desiredStorageSizeQuotaMap.get(quotaId)
-                                                                    
.get(storageId);
-                                        }
-                                        double storageUsagePercentage = sum
-                                                / 
quotaStorage.getStorageSizeGB() * 100;
+                                    if (quotaStorage.getStorageSizeGB() != 
UNLIMITED) {
+                                        double storageUsagePercentage = 
quotaStorage.getStorageSizeGBUsage()
+                                                / 
quota.getGlobalQuotaStorage().getStorageSizeGB() * 100;
+                                        double storageRequestPercentage =
+                                                
desiredStorageSizeQuotaMap.get(quotaId)
+                                                        .get(storageId)
+                                                        / 
quota.getGlobalQuotaStorage().getStorageSizeGB() * 100;
+
                                         if 
(!checkQuotaStorageLimits(storagePool.getQuotaEnforcementType(),
                                                 quota,
                                                 
quotaStorage.getStorageSizeGB(),
-                                                storageUsagePercentage,
+                                                storageUsagePercentage, 
storageRequestPercentage,
                                                 canDoActionMessages,
                                                 logPair)) {
                                             return false;
                                         }
-                                        
newUsedSpecificStorageSize.get(quotaId).put(storageId, sum);
+                                        
newUsedSpecificStorageSize.get(quotaId).put(storageId,
+                                                storageUsagePercentage + 
storageRequestPercentage);
                                         break;
                                     }
                                 }
@@ -275,22 +279,28 @@
             Quota quota,
             double limit,
             double storageUsagePercentage,
+            double storageRequestPercentage,
             ArrayList<String> canDoActionMessages,
             Pair<AuditLogType, AuditLogableBase> log) {
-        if (limit == UNLIMITED || storageUsagePercentage <= 
quota.getThresholdStoragePercentage()) {
+        double storageTotalPercentage = storageUsagePercentage + 
storageRequestPercentage;
+
+        if (limit == UNLIMITED || storageTotalPercentage <= 
quota.getThresholdStoragePercentage()) {
             return true;
-        } else if (storageUsagePercentage <= 100) {
+        } else if (storageTotalPercentage <= 100) {
             log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_STORAGE_THRESHOLD);
             log.setSecond(getLoggableQuotaStorageParams(quota.getQuotaName(),
-                            storageUsagePercentage));
-        } else if (storageUsagePercentage <= 
quota.getGraceStoragePercentage()) {
+                    storageUsagePercentage + storageRequestPercentage,
+                    storageRequestPercentage));
+        } else if (storageTotalPercentage <= quota.getGraceStoragePercentage() 
+ 100) {
             log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_STORAGE_LIMIT);
             log.setSecond(getLoggableQuotaStorageParams(quota.getQuotaName(),
-                            storageUsagePercentage));
+                    storageUsagePercentage + storageRequestPercentage,
+                    storageRequestPercentage));
         } else {
             log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_STORAGE_GRACE_LIMIT);
             log.setSecond(getLoggableQuotaStorageParams(quota.getQuotaName(),
-                            storageUsagePercentage));
+                    storageUsagePercentage,
+                    storageRequestPercentage));
             if 
(QuotaEnforcementTypeEnum.HARD_ENFORCEMENT.equals(quotaEnforcementTypeEnum)) {
                 
canDoActionMessages.add(VdcBllMessages.ACTION_TYPE_FAILED_QUOTA_STORAGE_LIMIT_EXCEEDED.toString());
                 return false;
@@ -299,37 +309,82 @@
         return true;
     }
 
-    private boolean checkQuotaVdsGroupLimits(QuotaEnforcementTypeEnum 
quotaEnforcementTypeEnum,
+    private boolean checkQuotaClusterLimits(QuotaEnforcementTypeEnum 
quotaEnforcementTypeEnum,
             Quota quota,
-            double limit,
-            double percentage,
-            boolean isMemory,
+            QuotaVdsGroup quotaVdsGroup,
+            long memToAdd,
+            int vcpuToAdd,
             ArrayList<String> canDoActionMessages,
             Pair<AuditLogType, AuditLogableBase> log) {
-        if (limit == UNLIMITED || percentage <= 
quota.getThresholdVdsGroupPercentage()) {
+        if (quotaVdsGroup.getVirtualCpu() == 0 || quotaVdsGroup.getMemSizeMB() 
== 0) {
+            return false;
+        }
+
+        double vcpuToAddPercentage = (double) vcpuToAdd / (double) 
quotaVdsGroup.getVirtualCpu() * 100;
+        double vcpuCurrentPercentage =
+                (double) quotaVdsGroup.getVirtualCpuUsage() / (double) 
quotaVdsGroup.getVirtualCpu() * 100;
+        double newVcpuPercent = vcpuToAddPercentage + vcpuCurrentPercentage;
+        double memToAddPercentage = (double) memToAdd / (double) 
quotaVdsGroup.getMemSizeMB() * 100;
+        double memCurrentPercentage =
+                (double) quotaVdsGroup.getMemSizeMBUsage() / (double) 
quotaVdsGroup.getMemSizeMB() * 100;
+        double newMemoryPercent = memToAddPercentage + memCurrentPercentage;
+        long newMemory = memToAdd + quotaVdsGroup.getMemSizeMBUsage();
+        int newVcpu = vcpuToAdd + quotaVdsGroup.getVirtualCpuUsage();
+
+        long memLimit = quotaVdsGroup.getMemSizeMB();
+        int cpuLimit = quotaVdsGroup.getVirtualCpu();
+
+        if (memLimit == UNLIMITED && cpuLimit == UNLIMITED) { // if both cpu 
and mem are unlimited
+            // cache
+            cacheNewValues(quotaVdsGroup, newMemory, newVcpu);
             return true;
-        } else if (percentage <= 100) {
+        } else if (newVcpuPercent <= quota.getThresholdVdsGroupPercentage() // 
if cpu and mem usages are under the limit
+                && newMemoryPercent <= quota.getThresholdVdsGroupPercentage()) 
{
+            // cache
+            cacheNewValues(quotaVdsGroup, newMemory, newVcpu);
+            return true;
+        } else if (newVcpuPercent <= 100
+                && newMemoryPercent <= 100) { // passed the threshold (not the 
quota limit)
             log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_VDS_GROUP_THRESHOLD);
             log.setSecond(getLoggableQuotaVdsGroupParams(quota.getQuotaName(),
-                    percentage,
-                    isMemory));
-        } else if (percentage <= quota.getGraceVdsGroupPercentage()) {
+                    vcpuCurrentPercentage + vcpuToAddPercentage,
+                    vcpuToAddPercentage,
+                    memCurrentPercentage + memToAddPercentage,
+                    memToAddPercentage,
+                    newVcpuPercent > quota.getThresholdVdsGroupPercentage(),
+                    newMemoryPercent > 
quota.getThresholdVdsGroupPercentage()));
+        } else if (newVcpuPercent <= quota.getGraceVdsGroupPercentage() + 100
+                && newMemoryPercent <= quota.getGraceVdsGroupPercentage() + 
100) { // passed the quota limit (not the grace)
             log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_VDS_GROUP_LIMIT);
             log.setSecond(getLoggableQuotaVdsGroupParams(quota.getQuotaName(),
-                    percentage,
-                            isMemory));
+                    vcpuCurrentPercentage + vcpuToAddPercentage,
+                    vcpuToAddPercentage,
+                    memCurrentPercentage + memToAddPercentage,
+                    memToAddPercentage,
+                    newVcpuPercent > 100,
+                    newMemoryPercent > 100));
         } else {
-            
log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_VDS_GROUP_GRACE_LIMIT);
+            
log.setFirst(AuditLogType.USER_EXCEEDED_QUOTA_VDS_GROUP_GRACE_LIMIT); // passed 
the grace
             log.setSecond(getLoggableQuotaVdsGroupParams(quota.getQuotaName(),
-                    percentage,
-                            isMemory));
+                    vcpuCurrentPercentage,
+                    vcpuToAddPercentage,
+                    memCurrentPercentage,
+                    memToAddPercentage,
+                    newVcpuPercent > quota.getGraceVdsGroupPercentage() + 100,
+                    newMemoryPercent > quota.getGraceVdsGroupPercentage() + 
100));
             if 
(QuotaEnforcementTypeEnum.HARD_ENFORCEMENT.equals(quotaEnforcementTypeEnum)) {
                 
canDoActionMessages.add(VdcBllMessages.ACTION_TYPE_FAILED_QUOTA_VDS_GROUP_LIMIT_EXCEEDED.toString());
                 return false;
             }
         }
-
+        // cache
+        cacheNewValues(quotaVdsGroup, newMemory, newVcpu);
         return true;
+    }
+
+    private void cacheNewValues(QuotaVdsGroup quotaVdsGroup, long newMemory, 
int newVcpu) {
+        quotaVdsGroup.setVirtualCpuUsage(newVcpu);
+        quotaVdsGroup.setMemSizeMBUsage(newMemory);
     }
 
     public boolean validateQuotaForStoragePool(storage_pool storagePool,
@@ -368,7 +423,7 @@
                 } else {
                     quota = quotaMap.get(quotaId);
                 }
-                if (quota.getGlobalQuotaVdsGroup() != null) { //global cluster 
quota
+                if (quota.getGlobalQuotaVdsGroup() != null) { // global 
cluster quota
                     return true;
                 } else {
                     boolean hasVdsGroup = false;
@@ -417,7 +472,7 @@
                     return false;
                 }
                 QuotaVdsGroup quotaVdsGroup = null;
-                if (quota.getGlobalQuotaVdsGroup() != null) { //global cluster 
quota
+                if (quota.getGlobalQuotaVdsGroup() != null) { // global 
cluster quota
                     quotaVdsGroup = quota.getGlobalQuotaVdsGroup();
                 } else {
                     for (QuotaVdsGroup vdsGroup : quota.getQuotaVdsGroups()) {
@@ -432,30 +487,16 @@
                     return false;
                 }
 
-                int newVcpu = vcpu + quotaVdsGroup.getVirtualCpuUsage();
-                double newVcpuPercent = (double) newVcpu / (double) 
quotaVdsGroup.getVirtualCpu() * 100;
-                boolean success = 
checkQuotaVdsGroupLimits(storagePool.getQuotaEnforcementType(),
+                boolean success = 
checkQuotaClusterLimits(storagePool.getQuotaEnforcementType(),
                         quota,
-                        quotaVdsGroup.getVirtualCpu(),
-                        newVcpuPercent,
-                        false,
-                        canDoActionMessages,
-                        logPair);
-                long newMemory = mem + quotaVdsGroup.getMemSizeMBUsage();
-                double newMemoryPercent = (double) newMemory / (double) 
quotaVdsGroup.getMemSizeMB() * 100;
-                success &= 
checkQuotaVdsGroupLimits(storagePool.getQuotaEnforcementType(),
-                        quota,
-                        quotaVdsGroup.getMemSizeMB(),
-                        newMemoryPercent,
-                        true,
+                        quotaVdsGroup,
+                        mem,
+                        vcpu,
                         canDoActionMessages,
                         logPair);
                 if (!success) {
                     return false;
                 }
-                // cache
-                quotaVdsGroup.setVirtualCpuUsage(newVcpu);
-                quotaVdsGroup.setMemSizeMBUsage(newMemory);
             }
             return true;
         } finally {
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
index 4d47f82..4091a9e 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -98,19 +98,19 @@
 USER_ATTACH_DISK_TO_VM=Disk ${DiskAlias} was successfully attached to VM 
${VmName} by ${UserName}.
 USER_FAILED_ATTACH_DISK_TO_VM=Failed to attach Disk ${DiskAlias} to VM 
${VmName} (User: ${UserName}).
 USER_DETACH_DISK_FROM_VM=Disk ${DiskAlias} was successfully detached from VM 
${VmName} by ${UserName}.
-USER_FAILED_DETACH_DISK_FROM_VM=Failed to detach Disk ${DiskAlias} from VM 
${VmName} (User: ${UserName}).
+USER_FAILED_DETACH_DISK_FROM_VM=Failed to detach Disk ${DiskAlias} from VM 
${VmName} (User: ${UserName}).
 USER_ADD_QUOTA=Quota ${QuotaName} has been added by ${UserName}.
 USER_FAILED_ADD_QUOTA=Failed to add Quota ${QuotaName}. The operation was 
initiated by ${UserName}.
 USER_UPDATE_QUOTA=Quota ${QuotaName} has been updated by ${UserName}.
 USER_FAILED_UPDATE_QUOTA=Failed to update Quota ${QuotaName}. The operation 
was initiated by ${UserName}..
 USER_DELETE_QUOTA=Quota ${QuotaName} has been deleted by ${UserName}.
 USER_FAILED_DELETE_QUOTA=Failed to delete Quota ${QuotaName}. The operation 
was initiated by ${UserName}..
-USER_EXCEEDED_QUOTA_VDS_GROUP_GRACE_LIMIT=Quota ${QuotaName} has exceeded 
Cluster grace limitation.
-USER_EXCEEDED_QUOTA_VDS_GROUP_LIMIT=Quota ${QuotaName} has exceeded Cluster 
limitation.
-USER_EXCEEDED_QUOTA_VDS_GROUP_THRESHOLD=Quota ${QuotaName} has exceeded 
Cluster Threshold limitation.
-USER_EXCEEDED_QUOTA_STORAGE_GRACE_LIMIT=Quota ${QuotaName} has exceeded 
Storage grace limitation.
-USER_EXCEEDED_QUOTA_STORAGE_LIMIT=Quota ${QuotaName} has exceeded Storage 
limitation.
-USER_EXCEEDED_QUOTA_STORAGE_THRESHOLD=Quota ${QuotaName} has exceeded Storage 
Threshold limitation.
+USER_EXCEEDED_QUOTA_VDS_GROUP_GRACE_LIMIT=Cluster Quota ${QuotaName} reached 
grace limitation and blocked operation. Current utilization: ${Utilization}, 
Requested: ${Requested} - Please select a different quota or contact your 
administrator to extend the the quota.
+USER_EXCEEDED_QUOTA_VDS_GROUP_LIMIT=Cluster Quota ${QuotaName} was exceeded 
and entered the grace zone. Current utilization: ${Utilization} (It is advised 
to select a different quota or contact your administrator to extend the the 
quota).
+USER_EXCEEDED_QUOTA_VDS_GROUP_THRESHOLD=Cluster Quota ${QuotaName} is about to 
be exceeded . Current utilization: ${Utilization}
+USER_EXCEEDED_QUOTA_STORAGE_GRACE_LIMIT=Storage Quota ${QuotaName} reached 
grace limitation and blocked operation. Current utilization: storage 
${CurrentStorage}%, Requested: ${Requested}% - Please select a different quota 
or contact your administrator to extend the the quota.
+USER_EXCEEDED_QUOTA_STORAGE_LIMIT=Storage Quota ${QuotaName} was exceeded and 
entered the grace zone. Current utilization: storage ${CurrentStorage}% (It is 
advised to select a different quota or contact your administrator to extend the 
the quota).
+USER_EXCEEDED_QUOTA_STORAGE_THRESHOLD=Storage Quota ${QuotaName} is about to 
be exceeded. Current utilization: storage ${CurrentStorage}%
 USER_MOVED_VM=VM ${VmName} moving to Domain ${StorageDomainName} was initiated 
by ${UserName}.
 USER_MOVED_VM_FINISHED_SUCCESS=Moving VM ${VmName} to Domain 
${StorageDomainName} has been completed.
 USER_MOVED_VM_FINISHED_FAILURE=Failed to complete moving of VM ${VmName} to 
Domain ${StorageDomainName}.
@@ -188,7 +188,7 @@
 VDS_RECOVER=Host ${VdsName} is rebooting.
 VDS_RECOVER_FAILED=Host ${VdsName} failed to recover.
 VDS_RECOVER_FAILED_VMS_UNKNOWN=Host ${VdsName} cannot be reached, VMs state on 
this host are marked as Unknown.
-VM_DOWN=VM ${VmName} is down. ${ExitMessage}
+VM_DOWN=VM ${VmName} is down. ${ExitMessage}
 USER_SUSPEND_VM_OK=VM ${VmName} on Host ${VdsName} was suspended.
 VM_FAILURE=VM ${VmName} cannot be found on Host ${VdsName}.
 VM_MIGRATION_ABORT=Migration of VM ${VmName} from Host ${VdsName} failed. 
Error: ${MigrationError}
@@ -199,8 +199,8 @@
 VM_MIGRATION_FAILED_FROM_TO=Migration Failed${DueToMigrationError}. (VM: 
${VmName}, Source Host: ${VdsName}, Destination Host:${VdsToName} ).
 VM_MIGRATION_START=Starting migration of VM ${VmName} from Host ${VdsName} to 
Host ${VdsDestination} (User: ${UserName}.).
 VM_MIGRATION_TRYING_RERUN=Migration failed${DueToMigrationError} (VM: 
${VmName}, Source Host: ${VdsName}). Trying to migrate to another Host.
-VM_CANCEL_MIGRATION=Migration cancelled for VM: ${VmName}
-VM_CANCEL_MIGRATION_FAILED=Failed to cancel migration for VM: ${VmName}
+VM_CANCEL_MIGRATION=Migration cancelled for VM: ${VmName}
+VM_CANCEL_MIGRATION_FAILED=Failed to cancel migration for VM: ${VmName}
 VDS_SLOW_STORAGE_RESPONSE_TIME=Slow storage response time on Host ${VdsName}.
 IRS_HOSTED_ON_VDS=Storage Pool Manager runs on Host ${VdsName} (Address: 
${ServerIp}).
 USER_ATTACH_VM_POOL_TO_AD_GROUP=Group ${AdGroupName} was attached to VM Pool 
${VmPoolName} by ${UserName}.
@@ -313,7 +313,7 @@
 VDS_INSTALL_IN_PROGRESS_WARNING=Host ${VdsName} installation in progress . 
${Message}.
 USER_UPDATE_VM_POOL_WITH_VMS=VM Pool ${VmPoolName} was updated by ${UserName}, 
${VmsCount} VMs were added.
 USER_UPDATE_VM_POOL_WITH_VMS_FAILED=Failed to update VM Pool 
${VmPoolName}(User: ${UserName}). 
-USER_VM_POOL_MAX_SUBSEQUENT_FAILURES_REACHED=Not all VMs where successfully 
created in VM Pool ${VmPoolName}.
+USER_VM_POOL_MAX_SUBSEQUENT_FAILURES_REACHED=Not all VMs where successfully 
created in VM Pool ${VmPoolName}.
 MAC_POOL_EMPTY=No MAC addresses left in the MAC Address Pool.
 MAC_ADDRESS_IS_IN_USE=Import Vm ${VmName}: Mac Address ${MACAddr} is in use
 USER_PASSWORD_CHANGED=Password changed successfully for ${UserName}
@@ -324,10 +324,10 @@
 VDS_RUN_IN_NO_KVM_MODE=Host ${VdsName} running without virtualization hardware 
acceleration
 VDS_VERSION_NOT_SUPPORTED_FOR_CLUSTER=Host ${VdsName} is compatible with 
versions (${VdsSupportedVersions}) and cannot join Cluster ${VdsGroupName} 
which is set to version ${CompatibilityVersion}.
 RUN_VM_FAILED=Cannot run VM ${VmName} on Host ${VdsName}. Error: ${ErrMsg}
-USER_ADD_PERMISSION=User/Group ${SubjectName} was granted permission for Role 
${RoleName} on ${VdcObjectType} ${VdcObjectName}, by ${UserName}.
-USER_ADD_PERMISSION_FAILED=User ${UserName} failed to grant permission for 
Role ${RoleName} on ${VdcObjectType} ${VdcObjectName} to User/Group 
${SubjectName}.
-USER_REMOVE_PERMISSION=User/Group ${SubjectName} Role ${RoleName} permission 
was removed from ${VdcObjectType} ${VdcObjectName} by ${UserName}
-USER_REMOVE_PERMISSION_FAILED=User ${UserName} failed to remove permission for 
Role ${RoleName} from ${VdcObjectType} ${VdcObjectName} to User/Group 
${SubjectName}
+USER_ADD_PERMISSION=User/Group ${SubjectName} was granted permission for Role 
${RoleName} on ${VdcObjectType} ${VdcObjectName}, by ${UserName}.
+USER_ADD_PERMISSION_FAILED=User ${UserName} failed to grant permission for 
Role ${RoleName} on ${VdcObjectType} ${VdcObjectName} to User/Group 
${SubjectName}.
+USER_REMOVE_PERMISSION=User/Group ${SubjectName} Role ${RoleName} permission 
was removed from ${VdcObjectType} ${VdcObjectName} by ${UserName}
+USER_REMOVE_PERMISSION_FAILED=User ${UserName} failed to remove permission for 
Role ${RoleName} from ${VdcObjectType} ${VdcObjectName} to User/Group 
${SubjectName}
 USER_ADD_ROLE=Role ${RoleName} granted to ${UserName}
 USER_ADD_ROLE_FAILED=Failed to grant role ${RoleName} (User ${UserName})
 USER_REMOVE_ROLE=Role ${RoleName} removed from ${UserName}
@@ -388,8 +388,8 @@
 USER_ADD_STORAGE_POOL_FAILED=Failed to add Data Center ${StoragePoolName}. 
(User: ${UserName})
 USER_ATTACH_STORAGE_DOMAIN_TO_POOL=Storage Domain ${StorageDomainName} was 
attached to Data Center ${StoragePoolName} by ${UserName}
 USER_ATTACH_STORAGE_DOMAIN_TO_POOL_FAILED=Failed to attach Storage Domain 
${StorageDomainName} to Data Center ${StoragePoolName}. (User: ${UserName})
-USER_ATTACH_STORAGE_DOMAINS_TO_POOL=Storage Domains were attached to Data 
Center ${StoragePoolName} by ${UserName}
-USER_ATTACH_STORAGE_DOMAINS_TO_POOL_FAILED=Failed to attach Storage Domains to 
Data Center ${StoragePoolName}. (User: ${UserName})
+USER_ATTACH_STORAGE_DOMAINS_TO_POOL=Storage Domains were attached to Data 
Center ${StoragePoolName} by ${UserName}
+USER_ATTACH_STORAGE_DOMAINS_TO_POOL_FAILED=Failed to attach Storage Domains to 
Data Center ${StoragePoolName}. (User: ${UserName})
 USER_DEACTIVATED_STORAGE_DOMAIN=Storage Domain ${StorageDomainName} (Data 
Center ${StoragePoolName}) was deactivated by ${UserName}
 USER_DEACTIVATE_STORAGE_DOMAIN_FAILED=Failed to deactivate Storage Domain 
${StorageDomainName} (Data Center ${StoragePoolName}). (User: ${UserName})
 USER_DETACH_STORAGE_DOMAIN_FROM_POOL=Storage Domain ${StorageDomainName} was 
detached from Data Center ${StoragePoolName} by ${UserName}
@@ -407,7 +407,7 @@
 VDS_SET_NONOPERATIONAL_NETWORK=Host ${VdsName} does not comply with the 
cluster ${VdsGroupName} networks, the following networks are missing on host: 
'${Networks}'
 VDS_NETWORKS_OUT_OF_SYNC=Host ${VdsName}'s following network(s) are not 
synchronized with their Logical Network configuration: ${Networks}.
 VDS_SET_NONOPERATIONAL_IFACE_DOWN=Host ${VdsName} moved to Non-Operational 
state because interfaces '${Interfaces}' are down which needed by networks 
'${Networks}' in the current cluster
-BRIDGED_NETWORK_OVER_MULTIPLE_INTERFACES=Bridged network ${NetworkName} is 
attached to multiple interfaces: ${interfaces} on Host ${VdsName}.
+BRIDGED_NETWORK_OVER_MULTIPLE_INTERFACES=Bridged network ${NetworkName} is 
attached to multiple interfaces: ${interfaces} on Host ${VdsName}.
 NETWORK_ADD_NETWORK=Network ${NetworkName} was added to data center: 
${StoragePoolName} 
 NETWORK_ADD_NETWORK_FAILED=Failed to add Network ${NetworkName} to data 
center: ${StoragePoolName} 
 NETWORK_ADD_TEMPLATE_INTERFACE=Interface ${InterfaceName} (${InterfaceType}) 
was added to Template ${VmTemplateName}. (User: ${UserName}) 
@@ -488,8 +488,8 @@
 USER_ADD_ROLE_WITH_ACTION_GROUP_FAILED=Failed to add role ${RoleName}
 VDS_ALERT_FENCING_IS_NOT_CONFIGURED=Failed to verify Power Management 
configuration for Host ${VdsName}.
 VDS_ALERT_FENCING_TEST_FAILED=Power Management test failed for Host 
${VdsName}.${Reason}
-VDS_ALERT_FENCING_OPERATION_FAILED=Failed to power fence host ${VdsName}. 
Please check the host status and it's power management settings, and then 
manually reboot it and click "Confirm Host Has Been Rebooted"
-VDS_ALERT_FENCING_OPERATION_SKIPPED=Host ${VdsName} became non-responsive. It 
has no power management configured. Please check the host status, manually 
reboot it, and click "Confirm Host Has Been Rebooted"
+VDS_ALERT_FENCING_OPERATION_FAILED=Failed to power fence host ${VdsName}. 
Please check the host status and it's power management settings, and then 
manually reboot it and click "Confirm Host Has Been Rebooted"
+VDS_ALERT_FENCING_OPERATION_SKIPPED=Host ${VdsName} became non-responsive. It 
has no power management configured. Please check the host status, manually 
reboot it, and click "Confirm Host Has Been Rebooted"
 VDS_ALERT_FENCING_NO_PROXY_HOST=There is no other host in the data center that 
can be used to test the power management settings.
 VDS_ALERT_FENCING_STATUS_VERIFICATION_FAILED=Failed to verify Host ${Host} 
${Status} status, Please ${Status} Host ${Host} manually.
 TASK_STOPPING_ASYNC_TASK=Stopping async task ${CommandName} that started at 
${Date}
@@ -505,39 +505,39 @@
 VDS_LOW_MEM=Available memory of host ${HostName} [${AvailableMemory} MB] is 
under defined threshold [${Threshold} MB].  
 IMPORTEXPORT_FAILED_TO_IMPORT_VM=Failed to read VM '${ImportedVmName}' OVF, it 
may be corrupted
 IMPORTEXPORT_FAILED_TO_IMPORT_TEMPLATE=Failed to read Template '${Template}' 
OVF, it may be corrupted
-CANNOT_HIBERNATE_RUNNING_VMS_AFTER_CLUSTER_CPU_UPGRADE=Hibernation of VMs 
after CPU upgrade of Cluster ${VdsGroup} is not supported. Please stop and 
restart those VMs in case you wish to hibernate them
+CANNOT_HIBERNATE_RUNNING_VMS_AFTER_CLUSTER_CPU_UPGRADE=Hibernation of VMs 
after CPU upgrade of Cluster ${VdsGroup} is not supported. Please stop and 
restart those VMs in case you wish to hibernate them
 STORAGE_ALERT_VG_METADATA_CRITICALLY_FULL=The system has reached the 80% 
watermark on the VG metadata area size on ${StorageDomainName}.\nThis is due to 
a high number of Vdisks or large Vdisks size allocated on this specific VG.
-STORAGE_ALERT_SMALL_VG_METADATA=The allocated VG metadata area size is smaller 
than 50MB on ${StorageDomainName},\nwhich might limit its capacity (the number 
of Vdisks and/or their size).\nPlease refer to the GSS knowledge base to 
understand the issue and how to resolve it.
-RELOAD_CONFIGURATIONS_SUCCESS=System Configurations reloaded successfully.
+STORAGE_ALERT_SMALL_VG_METADATA=The allocated VG metadata area size is smaller 
than 50MB on ${StorageDomainName},\nwhich might limit its capacity (the number 
of Vdisks and/or their size).\nPlease refer to the GSS knowledge base to 
understand the issue and how to resolve it.
+RELOAD_CONFIGURATIONS_SUCCESS=System Configurations reloaded successfully.
 RELOAD_CONFIGURATIONS_FAILURE=System Configurations failed to reload.
-USER_ACCOUNT_DISABLED_OR_LOCKED=User ${UserName} cannot login, as it got 
disabled or locked. Please contact the system administrator.
+USER_ACCOUNT_DISABLED_OR_LOCKED=User ${UserName} cannot login, as it got 
disabled or locked. Please contact the system administrator.
 USER_ACCOUNT_PASSWORD_EXPIRED=User ${UserName} cannot login, as the user 
account password has expired. Please contact the system administrator.
 IMPORTEXPORT_IMPORT_VM_INTERFACES_ON_NON_VM_NETWORKS=Trying to import VM 
${VmName} with the interface/s ${Interfaces} attached to non VM or non-existent 
cluster network/s ${Networks}.
-VDS_SET_NON_OPERATIONAL_VM_NETWORK_IS_BRIDGELESS=Host ${VdsName} does not 
comply with the cluster ${VdsGroupName} networks, the following VM networks are 
bridgeless: '${Networks}'
-# Gluster Messages
-GLUSTER_VOLUME_CREATE=Gluster Volume ${glusterVolumeName} created.
-GLUSTER_VOLUME_CREATE_FAILED=Creation of Gluster Volume ${glusterVolumeName} 
failed.
-GLUSTER_VOLUME_OPTION_SET=Volume Option set on  ${glusterVolumeName}.
-GLUSTER_VOLUME_OPTION_SET_FAILED=Volume Option could not be set on 
${glusterVolumeName}.
-GLUSTER_VOLUME_START=Gluster Volume ${glusterVolumeName} started.
-GLUSTER_VOLUME_START_FAILED=Could not start Gluster Volume 
${glusterVolumeName}.
+VDS_SET_NON_OPERATIONAL_VM_NETWORK_IS_BRIDGELESS=Host ${VdsName} does not 
comply with the cluster ${VdsGroupName} networks, the following VM networks are 
bridgeless: '${Networks}'
+# Gluster Messages
+GLUSTER_VOLUME_CREATE=Gluster Volume ${glusterVolumeName} created.
+GLUSTER_VOLUME_CREATE_FAILED=Creation of Gluster Volume ${glusterVolumeName} 
failed.
+GLUSTER_VOLUME_OPTION_SET=Volume Option set on  ${glusterVolumeName}.
+GLUSTER_VOLUME_OPTION_SET_FAILED=Volume Option could not be set on 
${glusterVolumeName}.
+GLUSTER_VOLUME_START=Gluster Volume ${glusterVolumeName} started.
+GLUSTER_VOLUME_START_FAILED=Could not start Gluster Volume 
${glusterVolumeName}.
 GLUSTER_VOLUME_STOP=Gluster Volume ${glusterVolumeName} stopped.
 GLUSTER_VOLUME_STOP_FAILED=Could not stop Gluster Volume ${glusterVolumeName}.
 GLUSTER_VOLUME_OPTIONS_RESET=Gluster Volume ${glusterVolumeName} Options reset.
 GLUSTER_VOLUME_OPTIONS_RESET_FAILED=Could not reset Gluster Volume 
${glusterVolumeName} Options.
-GLUSTER_VOLUME_DELETE=Gluster Volume ${glusterVolumeName} deleted.
-GLUSTER_VOLUME_DELETE_FAILED=Could not delete Gluster Volume 
${glusterVolumeName}.
-GLUSTER_VOLUME_REMOVE_BRICKS=Gluster Volume ${glusterVolumeName} Bricks 
removed.
-GLUSTER_VOLUME_REMOVE_BRICKS_FAILED=Could not remove Gluster Volume 
${glusterVolumeName} Bricks.
-GLUSTER_VOLUME_ADD_BRICK=Volume brick(s) added to the volume 
${glusterVolumeName}.
-GLUSTER_VOLUME_ADD_BRICK_FAILED=Gluster Volume ${glusterVolumeName} add brick 
failed.
-GLUSTER_VOLUME_REBALANCE_START=Gluster Volume ${glusterVolumeName} rebalance 
started.
+GLUSTER_VOLUME_DELETE=Gluster Volume ${glusterVolumeName} deleted.
+GLUSTER_VOLUME_DELETE_FAILED=Could not delete Gluster Volume 
${glusterVolumeName}.
+GLUSTER_VOLUME_REMOVE_BRICKS=Gluster Volume ${glusterVolumeName} Bricks 
removed.
+GLUSTER_VOLUME_REMOVE_BRICKS_FAILED=Could not remove Gluster Volume 
${glusterVolumeName} Bricks.
+GLUSTER_VOLUME_ADD_BRICK=Volume brick(s) added to the volume 
${glusterVolumeName}.
+GLUSTER_VOLUME_ADD_BRICK_FAILED=Gluster Volume ${glusterVolumeName} add brick 
failed.
+GLUSTER_VOLUME_REBALANCE_START=Gluster Volume ${glusterVolumeName} rebalance 
started.
 GLUSTER_VOLUME_REBALANCE_START_FAILED=Could not start Gluster Volume 
${glusterVolumeName} rebalance.
 GLUSTER_VOLUME_REPLACE_BRICK_FAILED=Replace Gluster Volume Brick failed
 GLUSTER_VOLUME_REPLACE_BRICK_START=Gluster Volume ${glusterVolumeName} Replace 
Brick started.
-GLUSTER_VOLUME_REPLACE_BRICK_START_FAILED=Could not start Gluster Volume 
${glusterVolumeName} Replace Brick.
+GLUSTER_VOLUME_REPLACE_BRICK_START_FAILED=Could not start Gluster Volume 
${glusterVolumeName} Replace Brick.
 GLUSTER_VOLUME_ADD_BRICK_FAILED=Gluster Volume ${glusterVolumeName} add brick 
failed.
 GLUSTER_HOST_ADD_FAILED=Failed to add gluster server ${VdsName} into Cluster 
${VdsGroupName}.
-GLUSTER_HOST_REMOVE_FAILED=Failed to remove gluster server ${VdsName} from 
Cluster ${VdsGroupName}.
-HA_VM_FAILED=Highly Available VM ${VmName} failed. It will be restarted 
automatically.
-HA_VM_RESTART_FAILED=Restart of the Highly Available VM ${VmName} failed.
+GLUSTER_HOST_REMOVE_FAILED=Failed to remove gluster server ${VdsName} from 
Cluster ${VdsGroupName}.
+HA_VM_FAILED=Highly Available VM ${VmName} failed. It will be restarted 
automatically.
+HA_VM_RESTART_FAILED=Restart of the Highly Available VM ${VmName} failed.


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

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

Reply via email to