Lior Vernia has uploaded a new change for review. Change subject: webadmin: Add HostNetworkQos widget ......................................................................
webadmin: Add HostNetworkQos widget Added model and view for a reusable host network QoS widget, to be used when overriding QoS configuration on a specific host interface and in a dialog of its own (same as other QoS entities). Change-Id: I6a97c260ba18d21d911a0338149fefc2c6222c52 Signed-off-by: Lior Vernia <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.ui.xml 5 files changed, 192 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/34127/1 diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml index 190e459..c9bc954 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml @@ -215,6 +215,7 @@ <!--QoS--> <include name="common/businessentities/network/NetworkQoS.java"/> + <include name="common/businessentities/network/HostNetworkQos.java"/> <include name="common/businessentities/qos/QosBase.java"/> <include name="common/businessentities/qos/QosType.java"/> <include name="common/businessentities/qos/StorageQos.java"/> 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 new file mode 100644 index 0000000..6e7bf8a --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/HostNetworkQosParametersModel.java @@ -0,0 +1,85 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; + +import org.ovirt.engine.core.common.businessentities.BusinessEntitiesDefinitions; +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.uicompat.Event; +import org.ovirt.engine.ui.uicompat.IEventListener; +import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; + +public class HostNetworkQosParametersModel extends QosParametersModel<HostNetworkQos> { + + private EntityModel<Integer> outAverageLinkshare = new EntityModel<Integer>(); + private EntityModel<Integer> outAverageUpperlimit = new EntityModel<Integer>(); + private EntityModel<Integer> outAverageRealtime = new EntityModel<Integer>(); + + public EntityModel<Integer> getOutAverageLinkshare() { + return outAverageLinkshare; + } + + public EntityModel<Integer> getOutAverageUpperlimit() { + return outAverageUpperlimit; + } + + public EntityModel<Integer> getOutAverageRealtime() { + return outAverageRealtime; + } + + public HostNetworkQosParametersModel() { + getPropertyChangedEvent().addListener(new IEventListener<PropertyChangedEventArgs>() { + + @Override + public void eventRaised(Event<? extends PropertyChangedEventArgs> ev, + Object sender, + PropertyChangedEventArgs args) { + boolean value = getIsChangable(); + getOutAverageLinkshare().setIsChangable(value); + getOutAverageUpperlimit().setIsChangable(value); + getOutAverageRealtime().setIsChangable(value); + } + }); + } + + @Override + public void init(HostNetworkQos qos) { + if (qos == null) { + qos = new HostNetworkQos(); + } + + getOutAverageLinkshare().setEntity(qos.getOutAverageLinkshare()); + getOutAverageUpperlimit().setEntity(qos.getOutAverageUpperlimit()); + getOutAverageRealtime().setEntity(qos.getOutAverageRealtime()); + } + + @Override + public void flush(HostNetworkQos qos) { + qos.setOutAverageLinkshare(getOutAverageLinkshare().getEntity()); + qos.setOutAverageUpperlimit(getOutAverageUpperlimit().getEntity()); + qos.setOutAverageRealtime(getOutAverageRealtime().getEntity()); + } + + @Override + public boolean validate() { + if (!getIsAvailable()) { + return true; + } + + getOutAverageLinkshare().validateEntity(new IValidation[] { new IntegerValidation(0, + BusinessEntitiesDefinitions.HOST_NETWORK_QOS_MAX_SHARES) }); + + IValidation[] rateRangeValidation = + new IValidation[] { new IntegerValidation(0, (Integer) AsyncDataProvider.getInstance() + .getConfigValuePreConverted(ConfigurationValues.MaxAverageNetworkQoSValue)) }; + getOutAverageUpperlimit().validateEntity(rateRangeValidation); + getOutAverageRealtime().validateEntity(rateRangeValidation); + + setIsValid(getOutAverageLinkshare().getIsValid() && getOutAverageUpperlimit().getIsValid() + && getOutAverageRealtime().getIsValid()); + return getIsValid(); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java index 2cea001..d5e6df6 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java @@ -3392,6 +3392,18 @@ @DefaultStringValue("Override QoS") String qosOverrideLabel(); + @DefaultStringValue("Outbound") + String hostNetworkQosOutLabel(); + + @DefaultStringValue("Weighted Share [1-100]") + String hostNetworkQosPopupOutAverageLinkshare(); + + @DefaultStringValue("Rate Limit [Mbps]") + String hostNetworkQosPopupOutAverageUpperlimit(); + + @DefaultStringValue("Committed Rate [Mbps]") + String hostNetworkQosPopupOutAverageRealtime(); + // MAC pool widget @DefaultStringValue("From") String macPoolWidgetLeftBound(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.java new file mode 100644 index 0000000..04d8831 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.java @@ -0,0 +1,68 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.qos; + +import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.idhandler.WithElementId; +import org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.HostNetworkQosParametersModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; + +import com.google.gwt.core.shared.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.resources.client.CssResource; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.gwt.user.client.ui.FlowPanel; + +public class HostNetworkQosWidget extends QosWidget<HostNetworkQos, HostNetworkQosParametersModel> { + + interface Style extends CssResource { + String valueBox(); + } + + interface Driver extends SimpleBeanEditorDriver<HostNetworkQosParametersModel, HostNetworkQosWidget> { + } + + interface WidgetUiBinder extends UiBinder<FlowPanel, HostNetworkQosWidget> { + WidgetUiBinder uiBinder = GWT.create(WidgetUiBinder.class); + } + + interface WidgetIdHandler extends ElementIdHandler<HostNetworkQosWidget> { + WidgetIdHandler idHandler = GWT.create(WidgetIdHandler.class); + } + + @UiField + @Path(value="outAverageLinkshare.entity") + @WithElementId + IntegerEntityModelTextBoxEditor outAverageLinkshare; + + @UiField + @Path(value="outAverageUpperlimit.entity") + @WithElementId + IntegerEntityModelTextBoxEditor outAverageUpperlimit; + + @UiField + @Path(value="outAverageRealtime.entity") + @WithElementId + IntegerEntityModelTextBoxEditor outAverageRealtime; + + @UiField + Style style; + + public HostNetworkQosWidget(ApplicationConstants constants) { + initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this)); + WidgetIdHandler.idHandler.generateAndSetIds(this); + + outAverageLinkshare.addContentWidgetStyleName(style.valueBox()); + outAverageUpperlimit.addContentWidgetStyleName(style.valueBox()); + outAverageRealtime.addContentWidgetStyleName(style.valueBox()); + + outAverageLinkshare.setLabel(constants.hostNetworkQosPopupOutAverageLinkshare()); + outAverageUpperlimit.setLabel(constants.hostNetworkQosPopupOutAverageUpperlimit()); + outAverageRealtime.setLabel(constants.hostNetworkQosPopupOutAverageRealtime()); + + driver = GWT.create(Driver.class); + driver.initialize(this); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.ui.xml new file mode 100644 index 0000000..6ac7472 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/HostNetworkQosWidget.ui.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> +<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" + xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"> + + <ui:with field="constants" type="org.ovirt.engine.ui.webadmin.ApplicationConstants" /> + + <ui:style type="org.ovirt.engine.ui.webadmin.section.main.view.popup.qos.HostNetworkQosWidget.Style"> + .labelStyle { + font-weight: bold; + padding-left: 5px; + } + + .valueBox { + width: 100px; + } + </ui:style> + + <g:FlowPanel ui:field="mainPanel" > + <g:Label text="{constants.hostNetworkQosOutLabel}" addStyleNames="{style.labelStyle}" /> + <e:IntegerEntityModelTextBoxEditor ui:field="outAverageLinkshare" /> + <e:IntegerEntityModelTextBoxEditor ui:field="outAverageUpperlimit" /> + <e:IntegerEntityModelTextBoxEditor ui:field="outAverageRealtime" /> + </g:FlowPanel> + +</ui:UiBinder> -- To view, visit http://gerrit.ovirt.org/34127 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6a97c260ba18d21d911a0338149fefc2c6222c52 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
