Lior Vernia has uploaded a new change for review.

Change subject: engine: Implement HostNetworkQosValidator
......................................................................

engine: Implement HostNetworkQosValidator

Implemented dedicated validation, e.g. that the QoS configuration must
contain at the very least average link share rate.

Change-Id: Ibf156e27381111efb3d9abac3e6e37ccdd8f7643
Signed-off-by: Lior Vernia <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/QosCommandBase.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/CpuQosValidator.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidatorTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.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/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties
13 files changed, 185 insertions(+), 19 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/23/34123/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
index f5ca097..0c6f834 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
@@ -257,11 +257,13 @@
                 }
 
                 NetworkQosValidator qosValidator = new 
NetworkQosValidator(iface.getQos());
-                if (qosValidator.allValuesPresent() != ValidationResult.VALID) 
{
-                    
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES, 
iface.getNetworkName());
+                if (qosValidator.requiredValuesPresent() != 
ValidationResult.VALID) {
+                    
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_MISSING_VALUES,
+                            iface.getNetworkName());
                 }
                 if (qosValidator.peakConsistentWithAverage() != 
ValidationResult.VALID) {
-                    
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE,
 iface.getNetworkName());
+                    
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES,
+                            iface.getNetworkName());
                 }
             }
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/QosCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/QosCommandBase.java
index ec768f6..fe9ef3b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/QosCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/qos/QosCommandBase.java
@@ -32,7 +32,7 @@
     protected boolean canDoAction() {
         M validator = getQosValidator(getQos());
         return (validateParameters()
-                && validate(validator.allValuesPresent()));
+                && validate(validator.requiredValuesPresent()));
     }
 
     public T getQos() {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/CpuQosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/CpuQosValidator.java
index c0c788c..94c5a69 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/CpuQosValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/CpuQosValidator.java
@@ -18,7 +18,7 @@
     }
 
     @Override
-    public ValidationResult allValuesPresent() {
+    public ValidationResult requiredValuesPresent() {
         if (getQos().getCpuLimit() == null) {
             return new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_QOS_MISSING_VALUES);
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidator.java
new file mode 100644
index 0000000..07b1df6
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidator.java
@@ -0,0 +1,43 @@
+package org.ovirt.engine.core.bll.validator;
+
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.qos.QosDao;
+
+public class HostNetworkQosValidator extends QosValidator<HostNetworkQos> {
+
+    public HostNetworkQosValidator(HostNetworkQos qos) {
+        super(qos);
+    }
+
+    @Override
+    public ValidationResult requiredValuesPresent() {
+        return (getQos() != null && getQos().getOutAverageLinkshare() == null)
+                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES)
+                : ValidationResult.VALID;
+    }
+
+    /**
+     * Verify that if upper limit and real time rates are provided, real time 
isn't lower than upper limit.
+     */
+    public ValidationResult valuesConsistent() {
+        HostNetworkQos qos = getQos();
+        if (qos == null) {
+            return ValidationResult.VALID;
+        }
+
+        Integer outUpperlimit = qos.getOutAverageUpperlimit();
+        Integer outRealtime = qos.getOutAverageRealtime();
+        return (outUpperlimit != null && outRealtime != null && outUpperlimit 
< outRealtime)
+                ? new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_INCONSISTENT_VALUES)
+                : ValidationResult.VALID;
+    }
+
+    @Override
+    protected QosDao<HostNetworkQos> getQosDao() {
+        return DbFacade.getInstance().getHostNetworkQosDao();
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
index 834850e..7ac64ad 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/NetworkQosValidator.java
@@ -16,7 +16,7 @@
      * Verify that if any inbound/outbound capping was specified, that all 
three parameters are present.
      */
     @Override
-    public ValidationResult allValuesPresent() {
+    public ValidationResult requiredValuesPresent() {
         return (getQos() != null)
                 && (missingValue(getQos().getInboundAverage(), 
getQos().getInboundPeak(), getQos().getInboundBurst())
                 || missingValue(getQos().getOutboundAverage(), 
getQos().getOutboundPeak(), getQos().getOutboundBurst()))
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
index b5d89b1..eb16756 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/QosValidator.java
@@ -83,7 +83,7 @@
     }
 
     /**
-     * Verify that if any capping was specified, that all parameters are 
present.
+     * Verify that if any capping was specified, that all required parameters 
are present.
      */
-    public abstract ValidationResult allValuesPresent();
+    public abstract ValidationResult requiredValuesPresent();
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java
index e85b162..59a9e12 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/validator/StorageQosValidator.java
@@ -25,7 +25,7 @@
      * write value.
      */
     @Override
-    public ValidationResult allValuesPresent() {
+    public ValidationResult requiredValuesPresent() {
         if (missingCategoryValues(getQos().getMaxThroughput(),
                 getQos().getMaxReadThroughput(),
                 getQos().getMaxWriteThroughput())
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidatorTest.java
new file mode 100644
index 0000000..4c8a53c
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/HostNetworkQosValidatorTest.java
@@ -0,0 +1,109 @@
+package org.ovirt.engine.core.bll.validator;
+
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+import static 
org.ovirt.engine.core.bll.validator.ValidationResultMatchers.failsWith;
+import static 
org.ovirt.engine.core.bll.validator.ValidationResultMatchers.isValid;
+
+import org.hamcrest.Matcher;
+import org.junit.Before;
+import org.junit.Test;
+import org.ovirt.engine.core.bll.ValidationResult;
+import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
+import org.ovirt.engine.core.common.errors.VdcBllMessages;
+import org.ovirt.engine.core.utils.RandomUtils;
+
+public class HostNetworkQosValidatorTest {
+
+    private static int LOW_BANDWIDTH = 500;
+    private static int HIGH_BANDWIDTH = 2000;
+
+    private HostNetworkQos qos;
+    private HostNetworkQosValidator validator;
+    private HostNetworkQosValidator nullValidator;
+
+    @Before
+    public void setup() {
+        qos = mock(HostNetworkQos.class);
+        validator = new HostNetworkQosValidator(qos);
+        nullValidator = new HostNetworkQosValidator(null);
+    }
+
+    private void mockQos(Integer linkshare, Integer upperlimit, Integer 
realtime) {
+        when(qos.getOutAverageLinkshare()).thenReturn(linkshare);
+        when(qos.getOutAverageUpperlimit()).thenReturn(upperlimit);
+        when(qos.getOutAverageRealtime()).thenReturn(realtime);
+    }
+
+    private int generateValue() {
+        return RandomUtils.instance().nextInt(0, 1000000);
+    }
+
+    private void requiredValuesTest(Matcher<ValidationResult> matcher) {
+        assertThat(validator.requiredValuesPresent(), matcher);
+    }
+
+    @Test
+    public void onlyLinksharePresent() {
+        mockQos(generateValue(), null, null);
+        requiredValuesTest(isValid());
+    }
+
+    @Test
+    public void allValuesPresent() {
+        mockQos(generateValue(), generateValue(), generateValue());
+        requiredValuesTest(isValid());
+    }
+
+    @Test
+    public void noValuesPresent() {
+        mockQos(null, null, null);
+        
requiredValuesTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES));
+    }
+
+    @Test
+    public void allButLinksharePresent() {
+        mockQos(null, generateValue(), generateValue());
+        
requiredValuesTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES));
+    }
+
+    @Test
+    public void nullQosValuesPresent() {
+        assertThat(nullValidator.requiredValuesPresent(), isValid());
+    }
+
+    private void consistentValuesTest(Matcher<ValidationResult> matcher) {
+        assertThat(validator.valuesConsistent(), matcher);
+    }
+
+    @Test
+    public void valuesConsistent() {
+        mockQos(generateValue(), HIGH_BANDWIDTH, LOW_BANDWIDTH);
+        consistentValuesTest(isValid());
+    }
+
+    @Test
+    public void valuesConsistentEqual() {
+        mockQos(generateValue(), HIGH_BANDWIDTH, HIGH_BANDWIDTH);
+        consistentValuesTest(isValid());
+    }
+
+    @Test
+    public void valuesConsistentOnlyLinkshare() {
+        mockQos(generateValue(), null, null);
+        consistentValuesTest(isValid());
+    }
+
+    @Test
+    public void upperlimitLowerThanRealTime() {
+        mockQos(generateValue(), LOW_BANDWIDTH, HIGH_BANDWIDTH);
+        
consistentValuesTest(failsWith(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_INCONSISTENT_VALUES));
+    }
+
+    @Test
+    public void nullQosValuesConsistent() {
+        assertThat(nullValidator.valuesConsistent(), isValid());
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
index d2d71b8..1947762 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/validator/NetworkQosValidatorTest.java
@@ -122,12 +122,12 @@
     }
 
     private void valuesPresentTest(Matcher<ValidationResult> matcher) {
-        assertThat(validator.allValuesPresent(), matcher);
+        assertThat(validator.requiredValuesPresent(), matcher);
     }
 
     @Test
     public void valuesPresentNullInput() {
-        assertThat(nullValidator.allValuesPresent(), isValid());
+        assertThat(nullValidator.requiredValuesPresent(), isValid());
     }
 
     @Test
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 695051c..57a40c7 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
@@ -999,7 +999,9 @@
     ACTION_TYPE_FAILED_NETWORK_QOS_INVALID_DC_ID(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES(ErrorType.BAD_PARAMETERS),
-    
ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE(ErrorType.BAD_PARAMETERS),
+    
ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_MISSING_VALUES(ErrorType.BAD_PARAMETERS),
+    
ACTION_TYPE_FAILED_HOST_NETWORK_QOS_INCONSISTENT_VALUES(ErrorType.BAD_PARAMETERS),
+    
ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES(ErrorType.BAD_PARAMETERS),
 
     // Alignment scan
     ERROR_CANNOT_RUN_ALIGNMENT_SCAN_VM_IS_RUNNING(ErrorType.CONFLICT),
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 fb5ab1b..27548c2 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AppErrors.properties
@@ -1144,8 +1144,10 @@
 ACTION_TYPE_FAILED_NETWORK_QOS_NOT_FOUND=Cannot ${action} ${type}. QoS entity 
not found.
 ACTION_TYPE_FAILED_NETWORK_QOS_INVALID_DC_ID=Cannot ${action} ${type}. Data 
Center does not contain the specific QoS entity.
 ACTION_TYPE_FAILED_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE=Cannot ${action} 
${type}. Peak cannot be set lower than Average.
-ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES=Cannot ${action} ${type}. 
All three QoS parameters are required to configure QoS in a certain direction, 
but the following network(s) are missing some of them: 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES_LIST}.
-ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE=Cannot ${action} 
${type}. QoS cannot be configured such that Peak is set lower than Average, but 
it was configured so on the following network(s): 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE_LIST}.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES=Cannot ${action} ${type}. 
Weighted share must be specified to complete QoS configuration.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_MISSING_VALUES=Cannot 
${action} ${type}. Weighted share must be specified to complete QoS 
configuration, but the following network(s) are missing it: 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES_LIST}.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_INCONSISTENT_VALUES=Cannot ${action} 
${type}. If both are provided, rate limit must not be lower than committed rate.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES=Cannot 
${action} ${type}. If both are provided, rate limit must not be lower than 
committed rate. However, this is not the case with the following network(s): 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES_LIST}.
 QOS_NAME_NOT_NULL=QoS name cannot be empty.
 QOS_NAME_INVALID=Invalid QoS name (name must be formed of "a-z0-9A-Z" or "-_ ")
 QOS_NAME_TOO_LONG=QoS name length must be under 50 characters.
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 f9a5a87..dacef7a 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
@@ -3080,11 +3080,17 @@
     @DefaultStringValue("Cannot ${action} ${type}. Peak cannot be set lower 
than Average.")
     String ACTION_TYPE_FAILED_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE();
 
-    @DefaultStringValue("Cannot ${action} ${type}. All three QoS parameters 
are required to configure QoS in a certain direction, but the following 
network(s) are missing some of them: 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES_LIST}.")
+    @DefaultStringValue("Cannot ${action} ${type}. Weighted share must be 
specified to complete QoS configuration.")
     String ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES();
 
-    @DefaultStringValue("Cannot ${action} ${type}. QoS cannot be configured 
such that Peak is set lower than Average, but it was configured so on the 
following network(s): 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE_LIST}.")
-    String ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE();
+    @DefaultStringValue("Cannot ${action} ${type}. Weighted share must be 
specified to complete QoS configuration, but the following network(s) are 
missing it: ${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES_LIST}.")
+    String ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_MISSING_VALUES();
+
+    @DefaultStringValue("Cannot ${action} ${type}. If both are provided, rate 
limit must not be lower than committed rate.")
+    String ACTION_TYPE_FAILED_HOST_NETWORK_QOS_INCONSISTENT_VALUES();
+
+    @DefaultStringValue("Cannot ${action} ${type}. If both are provided, rate 
limit must not be lower than committed rate. However, this is not the case with 
the following network(s): 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES_LIST}.")
+    String 
ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES();
 
     @DefaultStringValue("Cannot ${action} ${type}. Values are out of range.")
     String ACTION_TYPE_FAILED_QOS_OUT_OF_RANGE_VALUES();
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 be087ee..2b9b45e 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
@@ -1113,8 +1113,10 @@
 ACTION_TYPE_FAILED_NETWORK_QOS_NOT_FOUND=Cannot ${action} ${type}. QoS entity 
not found.
 ACTION_TYPE_FAILED_NETWORK_QOS_INVALID_DC_ID=Cannot ${action} ${type}. Data 
Center does not contain the specific QoS entity.
 ACTION_TYPE_FAILED_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE=Cannot ${action} 
${type}. Peak cannot be set lower than Average.
-ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES=Cannot ${action} ${type}. 
All three QoS parameters are required to configure QoS in a certain direction, 
but the following network(s) are missing some of them: 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES_LIST}.
-ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE=Cannot ${action} 
${type}. QoS cannot be configured such that Peak is set lower than Average, but 
it was configured so on the following network(s): 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_PEAK_LOWER_THAN_AVERAGE_LIST}.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES=Cannot ${action} ${type}. 
Weighted share must be specified to complete QoS configuration.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_MISSING_VALUES=Cannot 
${action} ${type}. Weighted share must be specified to complete QoS 
configuration, but the following network(s) are missing it: 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_MISSING_VALUES_LIST}.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_INCONSISTENT_VALUES=Cannot ${action} 
${type}. If both are provided, rate limit must not be lower than committed rate.
+ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES=Cannot 
${action} ${type}. If both are provided, rate limit must not be lower than 
committed rate. However, this is not the case with the following network(s): 
${ACTION_TYPE_FAILED_HOST_NETWORK_QOS_SETUP_NETWORKS_INCONSISTENT_VALUES_LIST}.
 QOS_NAME_NOT_NULL=QoS name cannot be empty.
 QOS_NAME_INVALID=Invalid QoS name (name must be formed of "a-z0-9A-Z" or "-_ ")
 QOS_NAME_TOO_LONG=QoS name length must be under 50 characters.


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

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

Reply via email to