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