Lior Vernia has uploaded a new change for review.

Change subject: engine: Allow empty Host Network QoS override
......................................................................

engine: Allow empty Host Network QoS override

Allow overriding Host Network QoS with all null values, and have that
translate to no QoS configuration. This is needed to move a host to an
older cluster without affecting the QoS setting for the entire
network.

Change-Id: Iaddd2738a2db0666a07c6db9db23d4fe4572816f
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/SetupNetworksHelper.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/HostNetworkQos.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HostNetworkQosMapper.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditHostNetworkQosModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewHostNetworkQosModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/SharedHostNetworkQosParametersModel.java
8 files changed, 38 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/37431/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 d1a731f..14464a7 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
@@ -272,7 +272,7 @@
                 continue;
             }
 
-            if (iface.isQosOverridden()) {
+            if (iface.isQosOverridden() && !iface.getQos().isEmpty()) {
                 if (!hostNetworkQosSupported) {
                     
addViolation(VdcBllMessages.ACTION_TYPE_FAILED_HOST_NETWORK_QOS_NOT_SUPPORTED, 
networkName);
                 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/HostNetworkQos.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/HostNetworkQos.java
index 2347d89..1057dad 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/HostNetworkQos.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/network/HostNetworkQos.java
@@ -50,6 +50,10 @@
         this.outAverageRealtime = outAverageRealtime;
     }
 
+    public boolean isEmpty() {
+        return getOutAverageLinkshare() == null && getOutAverageUpperlimit() 
== null && getOutAverageRealtime() == null;
+    }
+
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java
index ac915f5..2e58401 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java
@@ -148,7 +148,7 @@
      */
     public static boolean qosConfiguredOnInterface(VdsNetworkInterface iface, 
Network network) {
         if (iface.isQosOverridden()) {
-            return iface.getQos() != null;
+            return iface.getQos() != null && !iface.getQos().isEmpty();
         } else {
             return network != null && network.getQosId() != null;
         }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HostNetworkQosMapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HostNetworkQosMapper.java
index db79da6..34da0d6 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HostNetworkQosMapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/HostNetworkQosMapper.java
@@ -62,7 +62,7 @@
         qos.setOutAverageLinkshare(deserializeValue(outboundEntry, 
VdsProperties.HOST_QOS_LINKSHARE));
         qos.setOutAverageUpperlimit(deserializeValue(outboundEntry, 
VdsProperties.HOST_QOS_UPPERLIMIT, MBITS_TO_BITS));
         qos.setOutAverageRealtime(deserializeValue(outboundEntry, 
VdsProperties.HOST_QOS_REALTIME, MBITS_TO_BITS));
-        return qos;
+        return qos.isEmpty() ? null : qos;
     }
 
     private Integer deserializeValue(Map<String, Object> entry, String 
curveKey) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditHostNetworkQosModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditHostNetworkQosModel.java
index bbbb312f..e0b8461 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditHostNetworkQosModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditHostNetworkQosModel.java
@@ -11,7 +11,7 @@
 public class EditHostNetworkQosModel extends QosModel<HostNetworkQos, 
HostNetworkQosParametersModel> {
 
     public EditHostNetworkQosModel(HostNetworkQos qos, Model sourceModel, 
StoragePool dataCenter) {
-        super(qos, new HostNetworkQosParametersModel(), sourceModel, 
dataCenter);
+        super(qos, new SharedHostNetworkQosParametersModel(), sourceModel, 
dataCenter);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java
index f5eaba2..c637d5b 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java
@@ -1,12 +1,14 @@
 package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos;
 
+import java.util.ArrayList;
+import java.util.Collection;
+
 import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
 import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation;
-import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.IEventListener;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
@@ -63,16 +65,21 @@
         
qos.setOutAverageRealtime(StringUtils.parseInteger(getOutAverageRealtime().getEntity()));
     }
 
+    protected Collection<IValidation> getOutLinkshareValidations() {
+        Collection<IValidation> validations = new ArrayList<>();
+        validations.add(new IntegerValidation(1, (Integer) 
AsyncDataProvider.getInstance()
+                
.getConfigValuePreConverted(ConfigurationValues.MaxHostNetworkQosShares)));
+        return validations;
+    }
+
     @Override
     public boolean validate() {
         if (!getIsChangable() || !getIsAvailable()) {
             return true;
         }
 
-        getOutAverageLinkshare().validateEntity(new IValidation[] {
-                new NotEmptyValidation(),
-                new IntegerValidation(1, (Integer) 
AsyncDataProvider.getInstance()
-                        
.getConfigValuePreConverted(ConfigurationValues.MaxHostNetworkQosShares)) });
+        Collection<IValidation> outLinkshareValidations = 
getOutLinkshareValidations();
+        
getOutAverageLinkshare().validateEntity(outLinkshareValidations.toArray(new 
IValidation[outLinkshareValidations.size()]));
 
         IValidation[] rateRangeValidation =
                 new IValidation[] { new IntegerValidation(0, (Integer) 
AsyncDataProvider.getInstance()
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewHostNetworkQosModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewHostNetworkQosModel.java
index 20fbdd5..8a153eb 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewHostNetworkQosModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewHostNetworkQosModel.java
@@ -11,7 +11,7 @@
 public class NewHostNetworkQosModel extends QosModel<HostNetworkQos, 
HostNetworkQosParametersModel> {
 
     public NewHostNetworkQosModel(Model sourceModel, StoragePool dataCenter) {
-        super(new HostNetworkQos(), new HostNetworkQosParametersModel(), 
sourceModel, dataCenter);
+        super(new HostNetworkQos(), new SharedHostNetworkQosParametersModel(), 
sourceModel, dataCenter);
     }
 
     @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/SharedHostNetworkQosParametersModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/SharedHostNetworkQosParametersModel.java
new file mode 100644
index 0000000..23ff9d4
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/SharedHostNetworkQosParametersModel.java
@@ -0,0 +1,17 @@
+package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos;
+
+import java.util.Collection;
+
+import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
+import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
+
+public class SharedHostNetworkQosParametersModel extends 
HostNetworkQosParametersModel {
+
+    @Override
+    protected Collection<IValidation> getOutLinkshareValidations() {
+        Collection<IValidation> validations = 
super.getOutLinkshareValidations();
+        validations.add(new NotEmptyValidation());
+        return validations;
+    }
+
+}


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaddd2738a2db0666a07c6db9db23d4fe4572816f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Lior Vernia <lver...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to