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

Reply via email to