ofri masad has uploaded a new change for review. Change subject: webadmin: Add Network QoS to webadmin ......................................................................
webadmin: Add Network QoS to webadmin Add UI of Network QoS to webadmin Change-Id: Iaf3e26c09b41306452302e36710658393b7b55b8 Bug-Url: https://bugzilla.redhat.com/514420 Signed-off-by: Ofri Masad <[email protected]> --- M frontend/webadmin/modules/frontend/src/main/java/org/ovirt/engine/ui/frontend/AppErrors.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/Common.gwt.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterNetworkQoSListModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/ApplicationConstants.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterClusterPresenter.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterEventPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterNetworkQoSPresenter.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterPermissionPresenter.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterQuotaPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterNetworkQoSView.java M frontend/webadmin/modules/webadmin/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties 18 files changed, 464 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/53/16453/1 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 dc708cc..13de306 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 @@ -637,6 +637,9 @@ @DefaultStringValue("$type Host capabilities") String VAR__TYPE__HOST_CAPABILITIES(); + @DefaultStringValue("$type Network QoS") + String VAR__TYPE__NETWORK_QOS(); + @DefaultStringValue("$action run") String VAR__ACTION__RUN(); 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 a974244..aa1ceb7 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 @@ -161,6 +161,9 @@ <include name="common/businessentities/QuotaVdsGroupProperties.java"/> <include name="common/businessentities/QuotaUsagePerUser.java"/> + <!--QoS--> + <include name="common/businessentities/network/NetworkQoS.java"/> + <!-- Misc --> <include name="common/AuditLogType.java" /> <include name="common/AuditLogTimeInterval.java" /> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java index 949496b..3f822fd 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterListModel.java @@ -174,6 +174,8 @@ DataCenterQuotaListModel quotaListModel; + DataCenterNetworkQoSListModel networkQoSListModel; + public DataCenterListModel() { setTitle(ConstantsManager.getInstance().getConstants().dataCentersTitle()); @@ -239,6 +241,8 @@ quotaListModel = new DataCenterQuotaListModel(); quotaListModel.setIsAvailable(false); list.add(quotaListModel); + networkQoSListModel = new DataCenterNetworkQoSListModel(); + list.add(networkQoSListModel); list.add(new PermissionListModel()); list.add(new DataCenterEventListModel()); setDetailModels(list); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterNetworkQoSListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterNetworkQoSListModel.java new file mode 100644 index 0000000..305dd53 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/DataCenterNetworkQoSListModel.java @@ -0,0 +1,178 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters; + +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.ui.frontend.AsyncQuery; +import org.ovirt.engine.ui.frontend.Frontend; +import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel; +import org.ovirt.engine.ui.uicommonweb.models.SearchableListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs; + +import java.util.ArrayList; +import java.util.Arrays; + + +public class DataCenterNetworkQoSListModel extends SearchableListModel { + + private UICommand newCommand; + private UICommand editCommand; + private UICommand removeCommand; + + + + public DataCenterNetworkQoSListModel() { + setTitle(ConstantsManager.getInstance().getConstants().networkQoSTitle()); + setHashName("network_qos"); //$NON-NLS-1$ + + setNewCommand(new UICommand("New", this)); //$NON-NLS-1$ + setEditCommand(new UICommand("Edit", this)); //$NON-NLS-1$ + setRemoveCommand(new UICommand("Remove", this)); //$NON-NLS-1$ + } + + @Override + public StoragePool getEntity() + { + return (StoragePool) ((super.getEntity() instanceof StoragePool) ? super.getEntity() : null); + } + + public void setEntity(StoragePool value) + { + super.setEntity(value); + } + + @Override + protected void onEntityChanged() + { + super.onEntityChanged(); + getSearchCommand().execute(); + } + + @Override + protected void syncSearch() { + if (getEntity() == null) { + return; + } + AsyncQuery asyncQuery = new AsyncQuery(); + asyncQuery.Model = this; + asyncQuery.asyncCallback = new INewAsyncCallback() { + + @Override + public void onSuccess(Object model, Object returnValue) { + DataCenterNetworkQoSListModel networkQoSListModel = (DataCenterNetworkQoSListModel) model; + networkQoSListModel.setItems((ArrayList<NetworkQoS>) ((VdcQueryReturnValue) returnValue).getReturnValue()); + + } + }; + IdQueryParameters parameters = new IdQueryParameters(getEntity().getId()); + parameters.setRefresh(getIsQueryFirstTime()); + Frontend.RunQuery(VdcQueryType.GetAllNetworkQosByStoragePoolId, + parameters, + asyncQuery); + } + + @Override + protected void entityPropertyChanged(Object sender, PropertyChangedEventArgs e) + { + super.entityPropertyChanged(sender, e); + + if (e.PropertyName.equals("name")) //$NON-NLS-1$ + { + getSearchCommand().execute(); + } + } + + @Override + protected String getListName() { + return "DataCenterNetworkQoSListModel"; //$NON-NLS-1$ + } + + public UICommand getNewCommand() { + return newCommand; + } + + public void setNewCommand(UICommand newCommand) { + this.newCommand = newCommand; + } + + public UICommand getEditCommand() { + return editCommand; + } + + public void setEditCommand(UICommand editCommand) { + this.editCommand = editCommand; + } + + public UICommand getRemoveCommand() { + return removeCommand; + } + + public void setRemoveCommand(UICommand removeCommand) { + this.removeCommand = removeCommand; + } + + @Override + public void executeCommand(UICommand command) + { + super.executeCommand(command); + + if (command == getNewCommand()) + { + newNetwork(); + } + else if (command == getEditCommand()) + { + edit(); + } + else if (command == getRemoveCommand()) + { + remove(); + } + } + + public void remove() + { + if (getConfirmWindow() != null) + { + return; + } + + ConfirmationModel model = new RemoveNetworksModel(this); + setConfirmWindow(model); + } + + public void edit() + { + final NetworkQoS networkQoS = (NetworkQoS) getSelectedItem(); + + if (getWindow() != null) + { + return; + } + +// setWindow(networkModel); +// +// networkModel.getDataCenters().setItems(Arrays.asList(getEntity())); +// networkModel.getDataCenters().setSelectedItem(getEntity()); + + } + + public void newNetwork() + { + if (getWindow() != null) + { + return; + } + + final NetworkModel networkModel = new NewNetworkModel(this); + setWindow(networkModel); + + networkModel.getDataCenters().setItems(Arrays.asList(getEntity())); + networkModel.getDataCenters().setSelectedItem(getEntity()); + } +} diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java index 5d3af53..2ef2ec7 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java @@ -223,6 +223,9 @@ @DefaultStringValue("Quota") String quotaTitle(); + @DefaultStringValue("Network QoS") + String networkQoSTitle(); + @DefaultStringValue("Volumes") String volumesTitle(); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties index 6430ece..7dd3b7f 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/resources/org/ovirt/engine/ui/frontend/AppErrors.properties @@ -236,6 +236,7 @@ VAR__TYPE__USER=$type User VAR__TYPE__PERMISSION=$type Permission VAR__TYPE__HOST_CAPABILITIES=$type Host capabilities +VAR__TYPE__NETWORK_QOS=$type Network QoS VAR__ACTION__RUN=$action run VAR__ACTION__REMOVE=$action remove VAR__ACTION__ADD=$action add @@ -819,3 +820,11 @@ ACTION_TYPE_FAILED_EXTERNAL_EVENT_NOT_FOUND=Cannot ${action} ${type}.External Event does not exist. ACTION_TYPE_FAILED_EXTERNAL_EVENT_ILLRGAL_OPERATION=Cannot ${action} ${type}.Only Alerts can be removed. FAILED_TO_RUN_LDAP_QUERY=Failed to run LDAP query, please contact your system administrator. + +ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_VALUES=Cannot ${action} ${type}. All three values are needed in order to define QoS on each network directions. +ACTION_TYPE_FAILED_NETWORK_QOS_NEGATIVE_VALUES=Cannot ${action} ${type}. Negative values are not allowed. +ACTION_TYPE_FAILED_NETWORK_QOS_OUT_OF_RANGE_VALUES=Cannot ${action} ${type}. Values are out of range. +ACTION_TYPE_FAILED_NETWORK_QOS_NAME_EXIST=Cannot ${action} ${type}. Duplicate QoS name in Data Center. +ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_DATA=Cannot ${action} ${type}. Invalid QoS. +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. \ No newline at end of file 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 a219b46..919f137 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 @@ -148,6 +148,9 @@ @DefaultStringValue("Quota") String dataCenterQuotaSubTabLabel(); + @DefaultStringValue("Network QoS") + String dataCenterNetworkQoSSubTabLabel(); + @DefaultStringValue("Permissions") String dataCenterPermissionSubTabLabel(); @@ -2791,4 +2794,34 @@ @DefaultStringValue("General") String providerGeneralSubTabLabel(); + + @DefaultStringValue("Name") + String NetworkQoSName(); + + @DefaultStringValue("In Average") + String NetworkQoSInboundAverage(); + + @DefaultStringValue("In Peak") + String NetworkQoSInboundPeak(); + + @DefaultStringValue("In Burst") + String NetworkQoSInboundBurst(); + + @DefaultStringValue("Out Average") + String NetworkQoSOutboundAverage(); + + @DefaultStringValue("Out Peak") + String NetworkQoSOutboundPeak(); + + @DefaultStringValue("Out Burst") + String NetworkQoSOutboundBurst(); + + @DefaultStringValue("New") + String newNetworkQoS(); + + @DefaultStringValue("Edit") + String editNetworkQoS(); + + @DefaultStringValue("Remove") + String removeNetworkQoS(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java index 82e3dd4..9aa2a33 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ManagedComponents.java @@ -17,6 +17,7 @@ import org.ovirt.engine.core.common.businessentities.VmPool; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.event_subscriber; +import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.businessentities.gluster.GlusterBrickEntity; import org.ovirt.engine.core.common.businessentities.gluster.GlusterHookEntity; @@ -47,6 +48,7 @@ import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterEventListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterNetworkListModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterNetworkQoSListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterQuotaListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterStorageListModel; import org.ovirt.engine.ui.uicommonweb.models.disks.DiskGeneralModel; @@ -161,6 +163,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterClusterPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterEventPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterNetworkPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterNetworkQoSPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterPermissionPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterQuotaPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterStoragePresenter; @@ -363,6 +366,10 @@ SearchableDetailModelProvider<Quota, DataCenterListModel, DataCenterQuotaListModel> getSubTabDataCenterQuotaModelProvider(); + AsyncProvider<SubTabDataCenterNetworkQoSPresenter> getSubTabDataCenterNetworkQoSPresenter(); + + SearchableDetailModelProvider<NetworkQoS, DataCenterListModel, DataCenterNetworkQoSListModel> getSubTabDataCenterNetworkQoSModelProvider(); + AsyncProvider<SubTabDataCenterPermissionPresenter> getSubTabDataCenterPermissionPresenter(); SearchableDetailModelProvider<permissions, DataCenterListModel, PermissionListModel> getSubTabDataCenterPermissionModelProvider(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java index 2974324..1e2c70a 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/PresenterModule.java @@ -116,6 +116,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterClusterPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterEventPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterNetworkPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterNetworkQoSPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterPermissionPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterQuotaPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterStoragePresenter; @@ -308,6 +309,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.DataCenterSubTabPanelView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterClusterView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterEventView; +import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterNetworkQoSView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterNetworkView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterPermissionView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterQuotaView; @@ -515,6 +517,10 @@ SubTabDataCenterNetworkPresenter.ViewDef.class, SubTabDataCenterNetworkView.class, SubTabDataCenterNetworkPresenter.ProxyDef.class); + bindPresenter(SubTabDataCenterNetworkQoSPresenter.class, + SubTabDataCenterNetworkQoSPresenter.ViewDef.class, + SubTabDataCenterNetworkQoSView.class, + SubTabDataCenterNetworkQoSPresenter.ProxyDef.class); bindPresenter(SubTabDataCenterClusterPresenter.class, SubTabDataCenterClusterPresenter.ViewDef.class, SubTabDataCenterClusterView.class, diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java index a9980f7..2a4e76a 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/DataCenterModule.java @@ -3,6 +3,7 @@ import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StoragePool; @@ -23,6 +24,7 @@ import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterEventListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterNetworkListModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterNetworkQoSListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterQuotaListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterStorageListModel; import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; @@ -213,6 +215,27 @@ @Provides @Singleton + public SearchableDetailModelProvider<NetworkQoS, DataCenterListModel, DataCenterNetworkQoSListModel> getDataCenterNetworkQoSListProvider(ClientGinjector ginjector) { + return new SearchableDetailTabModelProvider<NetworkQoS, DataCenterListModel, DataCenterNetworkQoSListModel>(ginjector, + DataCenterListModel.class, + DataCenterNetworkQoSListModel.class) { + @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(DataCenterNetworkQoSListModel source, + UICommand lastExecutedCommand, + Model windowModel) { + return super.getModelPopup(source, lastExecutedCommand, windowModel); + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(DataCenterNetworkQoSListModel source, + UICommand lastExecutedCommand) { + return super.getConfirmModelPopup(source, lastExecutedCommand); + } + }; + } + + @Provides + @Singleton public SearchableDetailModelProvider<permissions, DataCenterListModel, PermissionListModel> getPermissionListProvider(ClientGinjector ginjector, final Provider<PermissionsPopupPresenterWidget> popupProvider, final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java index f16bbaa..32f3ad2 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/place/ApplicationPlaces.java @@ -61,6 +61,9 @@ public static final String dataCenterQuotaSubTabPlace = dataCenterMainTabPlace + SUB_TAB_PREFIX + "quota"; //$NON-NLS-1$ + public static final String dataCenterNetworkQoSSubTabPlace = dataCenterMainTabPlace + SUB_TAB_PREFIX + + "network_qos"; //$NON-NLS-1$ + public static final String dataCenterPermissionSubTabPlace = dataCenterMainTabPlace + SUB_TAB_PREFIX + "permissions"; //$NON-NLS-1$ diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterClusterPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterClusterPresenter.java index 791a0d1..541fce6 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterClusterPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterClusterPresenter.java @@ -35,7 +35,7 @@ @TabInfo(container = DataCenterSubTabPanelPresenter.class) static TabData getTabData(ClientGinjector ginjector) { - return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterClusterSubTabLabel(), 2, + return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterClusterSubTabLabel(), 3, ginjector.getSubTabDataCenterClusterModelProvider()); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterEventPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterEventPresenter.java index 9175181..ab1831e 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterEventPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterEventPresenter.java @@ -36,7 +36,7 @@ @TabInfo(container = DataCenterSubTabPanelPresenter.class) static TabData getTabData(ClientGinjector ginjector) { - return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterEventSubTabLabel(), 5, + return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterEventSubTabLabel(), 6, ginjector.getSubTabDataCenterEventModelProvider(), Align.RIGHT); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterNetworkQoSPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterNetworkQoSPresenter.java new file mode 100644 index 0000000..d68860e --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterNetworkQoSPresenter.java @@ -0,0 +1,66 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; +import com.gwtplatform.mvp.client.TabData; +import com.gwtplatform.mvp.client.annotations.NameToken; +import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit; +import com.gwtplatform.mvp.client.annotations.ProxyEvent; +import com.gwtplatform.mvp.client.annotations.TabInfo; +import com.gwtplatform.mvp.client.proxy.PlaceManager; +import com.gwtplatform.mvp.client.proxy.PlaceRequest; +import com.gwtplatform.mvp.client.proxy.RevealContentEvent; +import com.gwtplatform.mvp.client.proxy.TabContentProxyPlace; +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; +import org.ovirt.engine.ui.common.presenter.AbstractSubTabPresenter; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.tab.ModelBoundTabData; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterNetworkQoSListModel; +import org.ovirt.engine.ui.webadmin.gin.ClientGinjector; +import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.DataCenterSelectionChangeEvent; + +public class SubTabDataCenterNetworkQoSPresenter extends AbstractSubTabPresenter<StoragePool, DataCenterListModel, + DataCenterNetworkQoSListModel, SubTabDataCenterNetworkQoSPresenter.ViewDef, + SubTabDataCenterNetworkQoSPresenter.ProxyDef> { + + @ProxyCodeSplit + @NameToken(ApplicationPlaces.dataCenterNetworkQoSSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace<SubTabDataCenterNetworkQoSPresenter> { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef<StoragePool> { + } + + @TabInfo(container = DataCenterSubTabPanelPresenter.class) + static TabData getTabData(ClientGinjector ginjector) { + return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterNetworkQoSSubTabLabel(), 2, + ginjector.getSubTabDataCenterNetworkQoSModelProvider()); + } + + @Inject + public SubTabDataCenterNetworkQoSPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, + PlaceManager placeManager, + SearchableDetailModelProvider<NetworkQoS, DataCenterListModel, + DataCenterNetworkQoSListModel> modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider); + } + + @Override + protected void revealInParent() { + RevealContentEvent.fire(this, DataCenterSubTabPanelPresenter.TYPE_SetTabContent, this); + } + + @Override + protected PlaceRequest getMainTabRequest() { + return new PlaceRequest(ApplicationPlaces.dataCenterMainTabPlace); + } + + @ProxyEvent + public void onDataCenterSelectionChange(DataCenterSelectionChangeEvent event) { + updateMainTabSelection(event.getSelectedItems()); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterPermissionPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterPermissionPresenter.java index b2f292d..23e6a99 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterPermissionPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterPermissionPresenter.java @@ -35,7 +35,7 @@ @TabInfo(container = DataCenterSubTabPanelPresenter.class) static TabData getTabData(ClientGinjector ginjector) { - return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterPermissionSubTabLabel(), 4, + return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterPermissionSubTabLabel(), 5, ginjector.getSubTabDataCenterPermissionModelProvider()); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterQuotaPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterQuotaPresenter.java index 71c4817..48694f6 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterQuotaPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterQuotaPresenter.java @@ -35,7 +35,7 @@ @TabInfo(container = DataCenterSubTabPanelPresenter.class) static TabData getTabData(ClientGinjector ginjector) { - return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterQuotaSubTabLabel(), 3, + return new ModelBoundTabData(ginjector.getApplicationConstants().dataCenterQuotaSubTabLabel(), 4, ginjector.getSubTabDataCenterQuotaModelProvider()); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterNetworkQoSView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterNetworkQoSView.java new file mode 100644 index 0000000..21c26b1 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterNetworkQoSView.java @@ -0,0 +1,114 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter; + + +import com.google.gwt.core.client.GWT; +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.uicommon.model.SearchableDetailModelProvider; +import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip; +import org.ovirt.engine.ui.uicommonweb.UICommand; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterListModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.DataCenterNetworkQoSListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterNetworkQoSPresenter; +import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; +import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; + +import javax.inject.Inject; + +public class SubTabDataCenterNetworkQoSView extends AbstractSubTabTableView<StoragePool, NetworkQoS, DataCenterListModel, DataCenterNetworkQoSListModel> + implements SubTabDataCenterNetworkQoSPresenter.ViewDef { + + interface ViewIdHandler extends ElementIdHandler<SubTabDataCenterNetworkQoSView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + @Inject + public SubTabDataCenterNetworkQoSView(SearchableDetailModelProvider<NetworkQoS, DataCenterListModel, DataCenterNetworkQoSListModel> modelProvider, ApplicationConstants constants) { + super(modelProvider); + ViewIdHandler.idHandler.generateAndSetIds(this); + initTable(constants); + initWidget(getTable()); + } + + void initTable(final ApplicationConstants constants) { + getTable().enableColumnResizing(); + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getName() == null ? "" : object.getName(); //$NON-NLS-1$ + } + }, constants.NetworkQoSName(), "200px"); //$NON-NLS-1$ + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getInboundAverage() == null ? constants.notAvailableLabel() + : object.getInboundAverage().toString(); + } + }, constants.NetworkQoSInboundAverage(), "100px"); //$NON-NLS-1$ + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getInboundPeak() == null ? constants.notAvailableLabel() + : object.getInboundPeak().toString(); + } + }, constants.NetworkQoSInboundPeak(), "100px"); //$NON-NLS-1$ + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getInboundBurst() == null ? constants.notAvailableLabel() + : object.getInboundAverage().toString(); + } + }, constants.NetworkQoSInboundAverage(), "100px"); //$NON-NLS-1$ + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getOutboundAverage() == null ? constants.notAvailableLabel() + : object.getOutboundAverage().toString(); + } + }, constants.NetworkQoSOutboundAverage(), "100px"); //$NON-NLS-1$ + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getOutboundPeak() == null ? constants.notAvailableLabel() + : object.getOutboundPeak().toString(); + } + }, constants.NetworkQoSOutboundPeak(), "100px"); //$NON-NLS-1$ + + getTable().addColumn(new TextColumnWithTooltip<NetworkQoS>() { + @Override + public String getValue(NetworkQoS object) { + return object.getOutboundBurst() == null ? constants.notAvailableLabel() + : object.getOutboundAverage().toString(); + } + }, constants.NetworkQoSOutboundAverage(), "100px"); //$NON-NLS-1$ + + getTable().addActionButton(new WebAdminButtonDefinition<NetworkQoS>(constants.newNetworkQoS()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getNewCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<NetworkQoS>(constants.editNetworkQoS()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getEditCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<NetworkQoS>(constants.removeNetworkQoS()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getRemoveCommand(); + } + }); + } +} 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 13a3220..1ea7cf6 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 @@ -239,6 +239,7 @@ VAR__TYPE__GLUSTER_SERVER=$type Gluster Server VAR__TYPE__GLUSTER_HOOK=$type Gluster Hook VAR__TYPE__GLUSTER_SERVICE=$type Service +VAR__TYPE__NETWORK_QOS=$type Network QoS VAR__ACTION__RUN=$action run VAR__ACTION__REMOVE=$action remove VAR__ACTION__ADD=$action add @@ -871,7 +872,13 @@ ACTION_TYPE_FAILED_SERVICE_ALREADY_RUNNING=Cannot ${action} ${type}. Service ${service} is already running on server ${server}. ACTION_TYEPE_FAILED_SERVICE_ALREADY_STOPPED=Cannot ${action} ${type}. Service ${service} already stopped on Server ${server}. CLUSTER_ALL_SERVERS_NOT_UP=One or more servers in the cluster is down - +ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_VALUES=Cannot ${action} ${type}. All three values are needed in order to define QoS on each network directions. +ACTION_TYPE_FAILED_NETWORK_QOS_NEGATIVE_VALUES=Cannot ${action} ${type}. Negative values are not allowed. +ACTION_TYPE_FAILED_NETWORK_QOS_OUT_OF_RANGE_VALUES=Cannot ${action} ${type}. Values are out of range. +ACTION_TYPE_FAILED_NETWORK_QOS_NAME_EXIST=Cannot ${action} ${type}. Duplicate QoS name in Data Center. +ACTION_TYPE_FAILED_NETWORK_QOS_MISSING_DATA=Cannot ${action} ${type}. Invalid QoS. +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. # External Events Errors Messages VAR__TYPE__EXTERNAL_EVENT=$type External Event ACTION_TYPE_FAILED_EXTERNAL_EVENT_ILLEGAL_ORIGIN=Cannot ${action} ${type}. Illegal Origin for External Event : oVirt -- To view, visit http://gerrit.ovirt.org/16453 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iaf3e26c09b41306452302e36710658393b7b55b8 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
