Gilad Chaplik has uploaded a new change for review. Change subject: webadmin: introduce cpu QoS ......................................................................
webadmin: introduce cpu QoS Change-Id: I66d2c322158fd05f3a6beabac71d28ca8b179a63 Signed-off-by: Gilad Chaplik <[email protected]> --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java 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/qos/CpuQosParametersModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/DataCenterCpuQosListModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditCpuQosModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewCpuQosModel.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/RemoveCpuQosModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java 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/ClientGinjectorExtension.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 A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/CpuQosPopupPresenterWidget.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/DataCenterQosSubTabPanelPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterCpuQosPresenter.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.ui.xml M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/StorageQosPopupView.java A frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterCpuQosView.java 23 files changed, 668 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/31626/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java index 8ea6bf8..f16d24a 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/ConfigurationValues.java @@ -146,7 +146,8 @@ MaxWriteThroughputUpperBoundQosValue, MaxIopsUpperBoundQosValue, MaxReadIopsUpperBoundQosValue, - MaxWriteIopsUpperBoundQosValue; + MaxWriteIopsUpperBoundQosValue, + MaxCpuLimitQosValue; public static enum ConfigAuthType { Admin, diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java index 28fdda0..21c5481 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java @@ -1718,6 +1718,9 @@ @DefaultStringValue("Unlimited") String UnlimitedStorageQos(); + @DefaultStringValue("Unlimited") + String UnlimitedCpuQos(); + @DefaultStringValue("Password") String hostPasswordLabel(); @@ -1899,6 +1902,9 @@ @DefaultStringValue("QoS Name") String storageQosName(); + @DefaultStringValue("QoS Name") + String cpuQosName(); + @DefaultStringValue("New") String newDiskProfile(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java index af70ac1..ebfcf5f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/help/HelpTag.java @@ -148,6 +148,8 @@ edit_storage_qos("edit_storage_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Storage QoS' sub-tab -> 'Edit Storage QoS' dialog"), //$NON-NLS-1$ //$NON-NLS-2$ + edit_cpu_qos("edit_cpu_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Cpu QoS' sub-tab -> 'Edit Cpu QoS' dialog"), //$NON-NLS-1$ //$NON-NLS-2$ + edit_pool("edit_pool", HelpTagType.COMMON, "Pools Tab > Edit Pool"), //$NON-NLS-1$ //$NON-NLS-2$ edit_provider("edit_provider", HelpTagType.WEBADMIN, "[Neutron integration] 'Providers' main tab -> 'Edit Provider' dialog"), //$NON-NLS-1$ //$NON-NLS-2$ @@ -296,6 +298,8 @@ new_storage_qos("new_storage_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Storage QoS' sub-tab -> 'New Storage QoS' dialog"), //$NON-NLS-1$ //$NON-NLS-2$ + new_cpu_qos("new_cpu_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Cpu QoS' sub-tab -> 'New Cpu QoS' dialog"), //$NON-NLS-1$ //$NON-NLS-2$ + new_pool("new_pool", HelpTagType.WEBADMIN, "Pools Tab > New Pool"), //$NON-NLS-1$ //$NON-NLS-2$ new_quota("new_quota", HelpTagType.WEBADMIN, "Quota Tab > New Quota"), //$NON-NLS-1$ //$NON-NLS-2$ @@ -363,6 +367,8 @@ remove_network_qos("remove_network_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Network QoS' sub-tab -> 'Remove Network QoS' confirmation dialog."), //$NON-NLS-1$ //$NON-NLS-2$ remove_storage_qos("remove_storage_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Storage QoS' sub-tab -> 'Remove Storage QoS' confirmation dialog."), //$NON-NLS-1$ //$NON-NLS-2$ + + remove_cpu_qos("remove_cpu_qos", HelpTagType.WEBADMIN, "'Data Centers' main tab -> 'Cpu QoS' sub-tab -> 'Remove Cpu QoS' confirmation dialog."), //$NON-NLS-1$ //$NON-NLS-2$ remove_permission("remove_permission", HelpTagType.COMMON, "Each Main Tab > Permissions Sub-Tab > Remove Permission"), //$NON-NLS-1$ //$NON-NLS-2$ @@ -494,6 +500,8 @@ storage_qos("storage_qos", HelpTagType.UNKNOWN), //$NON-NLS-1$ + cpu_qos("storage_qos", HelpTagType.UNKNOWN), //$NON-NLS-1$ + disk_profiles("disk profiles", HelpTagType.UNKNOWN), //$NON-NLS-1$ new_disk_profile("new_disk_profile", HelpTagType.WEBADMIN, "Storage Tab > Disk Profiles sub-tab -> New Disk Profile dialog"), //$NON-NLS-1$ //$NON-NLS-2$ 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 d2b2a83..ac27898 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 @@ -50,9 +50,10 @@ import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemType; import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.DataCenterCpuQosListModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.DataCenterStorageQosListModel; import org.ovirt.engine.ui.uicommonweb.models.macpool.NewSharedMacPoolModel; import org.ovirt.engine.ui.uicommonweb.models.macpool.SharedMacPoolModel; -import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.DataCenterStorageQosListModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; @@ -253,6 +254,7 @@ list.add(quotaListModel); list.add(new DataCenterNetworkQoSListModel()); list.add(new DataCenterStorageQosListModel()); + list.add(new DataCenterCpuQosListModel()); 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/qos/CpuQosParametersModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/CpuQosParametersModel.java new file mode 100644 index 0000000..ae02c49 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/CpuQosParametersModel.java @@ -0,0 +1,50 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; + +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.EntityModel; +import org.ovirt.engine.ui.uicommonweb.validation.IValidation; +import org.ovirt.engine.ui.uicommonweb.validation.IntegerValidation; +import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation; + + +public class CpuQosParametersModel extends QosParametersModel<CpuQos> { + private EntityModel<Integer> cpuLimit; + + public CpuQosParametersModel() { + setCpuLimit(new EntityModel<Integer>()); + } + + @Override + public void init(CpuQos qos) { + getCpuLimit().setEntity(qos.getCpuLimit()); + } + + @Override + public void flush(CpuQos cpuQos) { + cpuQos.setCpuLimit(getCpuLimit().getEntity()); + } + + public boolean validate() { + if (!getIsAvailable()) { + return true; + } + + getCpuLimit().validateEntity(new IValidation[] { + new NotEmptyValidation(), + new IntegerValidation(0, (Integer) AsyncDataProvider.getInstance() + .getConfigValuePreConverted(ConfigurationValues.MaxCpuLimitQosValue)) }); + + setIsValid(getCpuLimit().getIsValid()); + return getIsValid(); + } + + public EntityModel<Integer> getCpuLimit() { + return cpuLimit; + } + + public void setCpuLimit(EntityModel<Integer> cpuLimit) { + this.cpuLimit = cpuLimit; + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/DataCenterCpuQosListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/DataCenterCpuQosListModel.java new file mode 100644 index 0000000..7dd938f --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/DataCenterCpuQosListModel.java @@ -0,0 +1,49 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; + +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.core.common.businessentities.qos.QosType; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class DataCenterCpuQosListModel extends DataCenterQosListModel<CpuQos, CpuQosParametersModel> { + @Override + protected String getQosTitle() { + return ConstantsManager.getInstance().getConstants().cpuQosTitle(); + } + + @Override + protected String getQosHashName() { + return "cpu_qos"; //$NON-NLS-1$ + } + + @Override + protected HelpTag getQosHelpTag() { + return HelpTag.cpu_qos; + } + + @Override + protected QosType getQosType() { + return QosType.CPU; + } + + @Override + protected NewQosModel<CpuQos, CpuQosParametersModel> getNewQosModel() { + return new NewCpuQosModel(this, getEntity()); + } + + @Override + protected EditQosModel<CpuQos, CpuQosParametersModel> getEditQosModel(CpuQos qoS) { + return new EditCpuQosModel((CpuQos) getSelectedItem(), this, getEntity()); + } + + @Override + protected RemoveQosModel<CpuQos> getRemoveQosModel() { + return new RemoveCpuQosModel(this); + } + + @Override + protected String getListName() { + return "DataCenterCpuQosModel"; //$NON-NLS-1$ + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditCpuQosModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditCpuQosModel.java new file mode 100644 index 0000000..b86cfb9 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/EditCpuQosModel.java @@ -0,0 +1,54 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; + +import org.ovirt.engine.core.common.action.QosParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class EditCpuQosModel extends EditQosModel<CpuQos, CpuQosParametersModel> { + + public EditCpuQosModel(CpuQos qos, Model sourceModel, StoragePool dataCenter) { + super(qos, sourceModel, dataCenter); + } + + @Override + protected VdcActionType getVdcAction() { + return VdcActionType.UpdateCpuQos; + } + + @Override + protected QosParametersBase<CpuQos> getParameters() { + QosParametersBase<CpuQos> qosParametersBase = new QosParametersBase<CpuQos>(); + qosParametersBase.setQos(getQos()); + qosParametersBase.setQosId(getQos().getId()); + return qosParametersBase; + } + + @Override + public void init(CpuQos qos) { + super.init(qos); + + setQosParametersModel(new CpuQosParametersModel()); + getQosParametersModel().init(qos); + } + + @Override + public String getTitle() { + return ConstantsManager.getInstance().getConstants().editStorageQoSTitle(); + } + + @Override + public HelpTag getHashTag() { + return HelpTag.edit_cpu_qos; + } + + @Override + public String getHashName() { + return "edit_cpu_qos"; //$NON-NLS-1$ + } + +} + diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewCpuQosModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewCpuQosModel.java new file mode 100644 index 0000000..82694a9 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/NewCpuQosModel.java @@ -0,0 +1,52 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; + +import org.ovirt.engine.core.common.action.QosParametersBase; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.Model; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class NewCpuQosModel extends NewQosModel<CpuQos, CpuQosParametersModel> { + + public NewCpuQosModel(Model sourceModel, StoragePool dataCenter) { + super(sourceModel, dataCenter); + init(new CpuQos()); + } + + @Override + protected VdcActionType getVdcAction() { + return VdcActionType.AddCpuQos; + } + + @Override + protected QosParametersBase<CpuQos> getParameters() { + QosParametersBase<CpuQos> qosParametersBase = new QosParametersBase<CpuQos>(); + qosParametersBase.setQos(getQos()); + return qosParametersBase; + } + + @Override + public void init(CpuQos qos) { + setQos(qos); + setQosParametersModel(new CpuQosParametersModel()); + getQosParametersModel().init(qos); + } + + @Override + public String getTitle() { + return ConstantsManager.getInstance().getConstants().newCpuQoSTitle(); + } + + @Override + public HelpTag getHashTag() { + return HelpTag.new_cpu_qos; + } + + @Override + public String getHashName() { + return "new_cpu_qos"; //$NON-NLS-1$; + } + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/RemoveCpuQosModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/RemoveCpuQosModel.java new file mode 100644 index 0000000..3dcc6db --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/datacenters/qos/RemoveCpuQosModel.java @@ -0,0 +1,47 @@ +package org.ovirt.engine.ui.uicommonweb.models.datacenters.qos; + + +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.ui.uicommonweb.help.HelpTag; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; +import org.ovirt.engine.ui.uicompat.ConstantsManager; + +public class RemoveCpuQosModel extends RemoveQosModel<CpuQos> { + + public RemoveCpuQosModel(ListModel<CpuQos> sourceListModel) { + super(sourceListModel); + } + + @Override + public String getTitle() { + return ConstantsManager.getInstance().getConstants().removeCpuQoSTitle(); + } + + @Override + protected VdcQueryType getProfilesByQosIdQueryType() { + return VdcQueryType.GetCpuProfilesByCpuQosId; + } + + @Override + protected String getRemoveQosMessage(int size) { + return ConstantsManager.getInstance().getMessages().removeCpuQoSMessage(size); + } + + @Override + protected String getRemoveQosHashName() { + return "remove_cpu_qos"; //$NON-NLS-1$ + } + + @Override + protected HelpTag getRemoveQosHelpTag() { + return HelpTag.remove_cpu_qos; + } + + @Override + protected VdcActionType getRemoveActionType() { + return VdcActionType.RemoveCpuQos; + } + +} 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 05b6c1d..a45686d 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 @@ -266,6 +266,9 @@ @DefaultStringValue("Storage QoS") String storageQosTitle(); + @DefaultStringValue("CPU QoS") + String cpuQosTitle(); + @DefaultStringValue("Volumes") String volumesTitle(); @@ -2137,18 +2140,27 @@ @DefaultStringValue("Remove Storage QoS") String removeStorageQoSTitle(); + @DefaultStringValue("Remove CPU QoS") + String removeCpuQoSTitle(); + @DefaultStringValue("Edit Network QoS") String editNetworkQoSTitle(); @DefaultStringValue("Edit Storage QoS") String editStorageQoSTitle(); + @DefaultStringValue("Edit CPU QoS") + String editCpuQoSTitle(); + @DefaultStringValue("New Network QoS") String newNetworkQoSTitle(); @DefaultStringValue("New Storage QoS") String newStorageQoSTitle(); + @DefaultStringValue("New CPU QoS") + String newCpuQoSTitle(); + @DefaultStringValue("Are you sure you want to remove this Network QoS") String removeNetworkQoSMessage(); diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java index f1951e2..42c154f 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIMessages.java @@ -307,6 +307,9 @@ @DefaultMessage("This Storage QoS is used by {0} Disk Profiles.\nAre you sure you want to remove this Storage QoS?\n\n Profiles using this QoS:\n") String removeStorageQoSMessage(int numOfProfiles); + @DefaultMessage("This CPU QoS is used by {0} CPU Profiles.\nAre you sure you want to remove this CPU QoS?\n\n Profiles using this QoS:\n") + String removeCpuQoSMessage(int numOfProfiles); + @DefaultMessage("{0} ({1} Socket(s), {2} Core(s) per Socket)") String cpuInfoMessage(int numOfCpus, int sockets, int coresPerSocket); 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 225d7c0..cdb878c 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 @@ -184,6 +184,9 @@ @DefaultStringValue("Storage") String dataCenterStorageQosSubTabLabel(); + @DefaultStringValue("CPU") + String dataCenterCpuQosSubTabLabel(); + @DefaultStringValue("QoS") String dataCenterQosSubTabLabel(); @@ -2822,6 +2825,7 @@ @DefaultStringValue("ID") String idDisk(); + @Override @DefaultStringValue("Quota") String quotaDisk(); @@ -3841,8 +3845,17 @@ @DefaultStringValue("Remove") String removeStorageQos(); + @DefaultStringValue("New") + String newCpuQos(); + + @DefaultStringValue("Edit") + String editCpuQos(); + + @DefaultStringValue("Remove") + String removeCpuQos(); + @DefaultStringValue("Data Center") - String dataCenterStorageQosPopup(); + String dataCenterQosPopup(); @DefaultStringValue("Description") String storageQosDescription(); @@ -3876,4 +3889,10 @@ @DefaultStringValue("Storage Domain") String diskProfileStorageDomainLabel(); + + @DefaultStringValue("Limit") + String cpuQosCpuLimit(); + + @DefaultStringValue("Description") + String cpuQosDescription(); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java index 08e416b..43e8a44 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/ClientGinjectorExtension.java @@ -34,6 +34,7 @@ import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network.VnicProfileView; import org.ovirt.engine.core.common.businessentities.profiles.DiskProfile; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; import org.ovirt.engine.core.common.businessentities.qos.StorageQos; import org.ovirt.engine.core.common.scheduling.AffinityGroup; import org.ovirt.engine.core.common.utils.PairQueryable; @@ -59,6 +60,7 @@ 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.datacenters.qos.DataCenterCpuQosListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.DataCenterStorageQosListModel; import org.ovirt.engine.ui.uicommonweb.models.disks.DiskGeneralModel; import org.ovirt.engine.ui.uicommonweb.models.disks.DiskListModel; @@ -215,6 +217,8 @@ SearchableDetailModelProvider<StorageQos, DataCenterListModel, DataCenterStorageQosListModel> getSubTabDataCenterStorageQosModelProvider(); + SearchableDetailModelProvider<CpuQos, DataCenterListModel, DataCenterCpuQosListModel> getSubTabDataCenterCpuQosModelProvider(); + SearchableDetailModelProvider<Permissions, DataCenterListModel, PermissionListModel> getSubTabDataCenterPermissionModelProvider(); SearchableDetailModelProvider<AuditLog, DataCenterListModel, DataCenterEventListModel> getSubTabDataCenterEventModelProvider(); 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 a6b8c74..e213a7a 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 @@ -13,6 +13,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.ReportPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.SearchPanelPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.AssignTagsPopupPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.CpuQosPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.DetachConfirmationPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.NetworkQoSPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget; @@ -141,6 +142,7 @@ import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.DataCenterQosSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.DataCenterSubTabPanelPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterClusterPresenter; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterCpuQosPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterEventPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterIscsiBondPresenter; import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterNetworkPresenter; @@ -306,6 +308,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ExternalSubnetPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ImportNetworksPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.provider.ProviderPopupView; +import org.ovirt.engine.ui.webadmin.section.main.view.popup.qos.CpuQosPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.qos.StorageQosPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.quota.ChangeQuotaPopupView; import org.ovirt.engine.ui.webadmin.section.main.view.popup.quota.EditQuotaClusterPopupView; @@ -377,6 +380,7 @@ import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.DataCenterQosSubTabPanelView; 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.SubTabDataCenterCpuQosView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterEventView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterIscsiBondView; import org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter.SubTabDataCenterNetworkQoSView; @@ -633,6 +637,10 @@ SubTabDataCenterStorageQosPresenter.ViewDef.class, SubTabDataCenterStorageQosView.class, SubTabDataCenterStorageQosPresenter.ProxyDef.class); + bindPresenter(SubTabDataCenterCpuQosPresenter.class, + SubTabDataCenterCpuQosPresenter.ViewDef.class, + SubTabDataCenterCpuQosView.class, + SubTabDataCenterCpuQosPresenter.ProxyDef.class); bindPresenter(SubTabDataCenterClusterPresenter.class, SubTabDataCenterClusterPresenter.ViewDef.class, SubTabDataCenterClusterView.class, @@ -1370,6 +1378,11 @@ StorageQosPopupPresenterWidget.ViewDef.class, StorageQosPopupView.class); + // Cpu QoS + bindPresenterWidget(CpuQosPopupPresenterWidget.class, + CpuQosPopupPresenterWidget.ViewDef.class, + CpuQosPopupView.class); + bindPresenterWidget(EditQuotaClusterPopupPresenterWidget.class, EditQuotaClusterPopupPresenterWidget.ViewDef.class, EditQuotaClusterPopupView.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 d6f6eb5..05ff609 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 @@ -9,6 +9,7 @@ import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.network.Network; import org.ovirt.engine.core.common.businessentities.network.NetworkQoS; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; import org.ovirt.engine.core.common.businessentities.qos.StorageQos; import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; import org.ovirt.engine.ui.common.presenter.ModelBoundPresenterWidget; @@ -32,8 +33,10 @@ 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.datacenters.qos.DataCenterCpuQosListModel; import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.DataCenterStorageQosListModel; import org.ovirt.engine.ui.webadmin.section.main.presenter.ReportPresenterWidget; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.CpuQosPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.NetworkQoSPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.PermissionsPopupPresenterWidget; import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.StorageQosPopupPresenterWidget; @@ -305,6 +308,40 @@ @Provides @Singleton + public SearchableDetailModelProvider<CpuQos, DataCenterListModel, DataCenterCpuQosListModel> getDataCenterCpuQosListProvider(EventBus eventBus, + Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, + final Provider<CpuQosPopupPresenterWidget> CpuQosPopupProvider, + final Provider<RemoveConfirmationPopupPresenterWidget> removeConfirmPopupProvider) { + return new SearchableDetailTabModelProvider<CpuQos, DataCenterListModel, DataCenterCpuQosListModel>( + eventBus, defaultConfirmPopupProvider, + DataCenterListModel.class, + DataCenterCpuQosListModel.class) { + @Override + public AbstractModelBoundPopupPresenterWidget<? extends Model, ?> getModelPopup(DataCenterCpuQosListModel source, + UICommand lastExecutedCommand, + Model windowModel) { + if (lastExecutedCommand.equals(getModel().getNewCommand()) + || lastExecutedCommand.equals(getModel().getEditCommand())) { + return CpuQosPopupProvider.get(); + } else { + return super.getModelPopup(source, lastExecutedCommand, windowModel); + } + } + + @Override + public AbstractModelBoundPopupPresenterWidget<? extends ConfirmationModel, ?> getConfirmModelPopup(DataCenterCpuQosListModel source, + UICommand lastExecutedCommand) { + if (lastExecutedCommand.equals(getModel().getRemoveCommand())) { + return removeConfirmPopupProvider.get(); + } else { + return super.getConfirmModelPopup(source, lastExecutedCommand); + } + } + }; + } + + @Provides + @Singleton public SearchableDetailModelProvider<Permissions, DataCenterListModel, PermissionListModel> getPermissionListProvider(EventBus eventBus, Provider<DefaultConfirmationPopupPresenterWidget> defaultConfirmPopupProvider, final Provider<PermissionsPopupPresenterWidget> popupProvider, 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 60ecb07..a18a3c5 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 @@ -72,6 +72,9 @@ public static final String dataCenterStorageQosSubTabPlace = dataCenterMainTabPlace + SUB_TAB_PREFIX + "storage_qos"; //$NON-NLS-1$ + public static final String dataCenterCpuQosSubTabPlace = dataCenterMainTabPlace + SUB_TAB_PREFIX + + "Cpu_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/popup/CpuQosPopupPresenterWidget.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/CpuQosPopupPresenterWidget.java new file mode 100644 index 0000000..9768854 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/popup/CpuQosPopupPresenterWidget.java @@ -0,0 +1,22 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.popup; + +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.ui.common.presenter.AbstractModelBoundPopupPresenterWidget; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.CpuQosParametersModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.QosModel; + +import com.google.gwt.event.shared.EventBus; +import com.google.inject.Inject; + + +public class CpuQosPopupPresenterWidget extends AbstractModelBoundPopupPresenterWidget<QosModel<CpuQos, CpuQosParametersModel>, CpuQosPopupPresenterWidget.ViewDef> { + + public interface ViewDef extends AbstractModelBoundPopupPresenterWidget.ViewDef<QosModel<CpuQos, CpuQosParametersModel>> { + } + + @Inject + public CpuQosPopupPresenterWidget(EventBus eventBus, ViewDef view) { + super(eventBus, view); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/DataCenterQosSubTabPanelPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/DataCenterQosSubTabPanelPresenter.java index 2038525..4fb2b86 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/DataCenterQosSubTabPanelPresenter.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/DataCenterQosSubTabPanelPresenter.java @@ -66,7 +66,8 @@ public void setInSlot(Object slot, PresenterWidget<?> content) { super.setInSlot(slot, content); if (content instanceof SubTabDataCenterStorageQosPresenter - || content instanceof SubTabDataCenterNetworkQoSPresenter) { + || content instanceof SubTabDataCenterNetworkQoSPresenter + || content instanceof SubTabDataCenterCpuQosPresenter) { lastPresenter = (Presenter<?, ?>) content; } TabContentProxy<?> proxy = (TabContentProxy<?>) lastPresenter.getProxy(); diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterCpuQosPresenter.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterCpuQosPresenter.java new file mode 100644 index 0000000..7f1302f --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/presenter/tab/datacenter/SubTabDataCenterCpuQosPresenter.java @@ -0,0 +1,62 @@ +package org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter; + +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.ui.common.place.PlaceRequestFactory; +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.qos.DataCenterCpuQosListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.place.ApplicationPlaces; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.DataCenterSelectionChangeEvent; + +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.TabContentProxyPlace; + +public class SubTabDataCenterCpuQosPresenter extends AbstractSubTabPresenter<StoragePool, DataCenterListModel, + DataCenterCpuQosListModel, SubTabDataCenterCpuQosPresenter.ViewDef, + SubTabDataCenterCpuQosPresenter.ProxyDef> { + + @ProxyCodeSplit + @NameToken(ApplicationPlaces.dataCenterCpuQosSubTabPlace) + public interface ProxyDef extends TabContentProxyPlace<SubTabDataCenterCpuQosPresenter> { + } + + public interface ViewDef extends AbstractSubTabPresenter.ViewDef<StoragePool> { + } + + @TabInfo(container = DataCenterQosSubTabPanelPresenter.class) + static TabData getTabData(ApplicationConstants applicationConstants, + SearchableDetailModelProvider<CpuQos, DataCenterListModel, DataCenterCpuQosListModel> modelProvider) { + return new ModelBoundTabData(applicationConstants.dataCenterCpuQosSubTabLabel(), 2, modelProvider); + } + + @Inject + public SubTabDataCenterCpuQosPresenter(EventBus eventBus, ViewDef view, ProxyDef proxy, + PlaceManager placeManager, + SearchableDetailModelProvider<CpuQos, DataCenterListModel, DataCenterCpuQosListModel> modelProvider) { + super(eventBus, view, proxy, placeManager, modelProvider, + DataCenterQosSubTabPanelPresenter.TYPE_SetTabContent); + } + + @Override + protected PlaceRequest getMainTabRequest() { + return PlaceRequestFactory.get(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/view/popup/qos/CpuQosPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.java new file mode 100644 index 0000000..51c9529 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.java @@ -0,0 +1,99 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.popup.qos; + +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +import org.ovirt.engine.ui.common.idhandler.ElementIdHandler; +import org.ovirt.engine.ui.common.idhandler.WithElementId; +import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; +import org.ovirt.engine.ui.common.widget.dialog.SimpleDialogPanel; +import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor; +import org.ovirt.engine.ui.common.widget.editor.generic.IntegerEntityModelTextBoxEditor; +import org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor; +import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.CpuQosParametersModel; +import org.ovirt.engine.ui.uicommonweb.models.datacenters.qos.QosModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.ApplicationResources; +import org.ovirt.engine.ui.webadmin.section.main.presenter.popup.CpuQosPopupPresenterWidget; + +import com.google.gwt.core.client.GWT; +import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.event.shared.EventBus; +import com.google.gwt.uibinder.client.UiBinder; +import com.google.gwt.uibinder.client.UiField; +import com.google.inject.Inject; + +public class CpuQosPopupView extends AbstractModelBoundPopupView<QosModel<CpuQos, CpuQosParametersModel>> + implements CpuQosPopupPresenterWidget.ViewDef { + + @UiField(provided = true) + @Path(value = "dataCenters.selectedItem") + @WithElementId + ListModelListBoxEditor<StoragePool> dataCenterEditor; + + @UiField + @Path(value = "name.entity") + @WithElementId + StringEntityModelTextBoxEditor nameEditor; + + @UiField + @Path(value = "description.entity") + @WithElementId + StringEntityModelTextBoxEditor descriptionEditor; + + @UiField + @Path(value = "qosParametersModel.cpuLimit.entity") + @WithElementId + IntegerEntityModelTextBoxEditor cpuLimitEditor; + + interface Driver extends SimpleBeanEditorDriver<QosModel<CpuQos, CpuQosParametersModel>, CpuQosPopupView> { + } + + interface ViewUiBinder extends UiBinder<SimpleDialogPanel, CpuQosPopupView> { + ViewUiBinder uiBinder = GWT.create(ViewUiBinder.class); + } + + interface ViewIdHandler extends ElementIdHandler<CpuQosPopupView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + private final Driver driver = GWT.create(Driver.class); + + @Inject + public CpuQosPopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants) { + super(eventBus, resources); + initListBoxEditors(); + initWidget(ViewUiBinder.uiBinder.createAndBindUi(this)); + ViewIdHandler.idHandler.generateAndSetIds(this); + + localize(constants); + driver.initialize(this); + } + + private void initListBoxEditors() { + dataCenterEditor = new ListModelListBoxEditor<StoragePool>(new NullSafeRenderer<StoragePool>() { + @Override + public String renderNullSafe(StoragePool dataCenter) { + return dataCenter.getName(); + } + }); + } + + private void localize(ApplicationConstants constants) { + nameEditor.setLabel(constants.storageQosName()); + descriptionEditor.setLabel(constants.storageQosDescription()); + dataCenterEditor.setLabel(constants.dataCenterQosPopup()); + cpuLimitEditor.setLabel(constants.cpuQosCpuLimit()); + } + + @Override + public void edit(QosModel<CpuQos, CpuQosParametersModel> object) { + driver.edit(object); + } + + @Override + public QosModel<CpuQos, CpuQosParametersModel> flush() { + return driver.flush(); + } + +} diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.ui.xml new file mode 100644 index 0000000..0d00e63 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/CpuQosPopupView.ui.xml @@ -0,0 +1,29 @@ +<?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:d="urn:import:org.ovirt.engine.ui.common.widget.dialog" + xmlns:e="urn:import:org.ovirt.engine.ui.common.widget.editor" + xmlns:ge="urn:import:org.ovirt.engine.ui.common.widget.editor.generic"> + + <ui:style> + .topDecorator { + background-color: #D3D3D3; + margin: 5px; + } + </ui:style> + + <d:SimpleDialogPanel width="400px" height="200px"> + <d:content> + <g:FlowPanel> + <g:FlowPanel addStyleNames="{style.topDecorator}"> + <e:ListModelListBoxEditor ui:field="dataCenterEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="nameEditor" /> + <ge:StringEntityModelTextBoxEditor ui:field="descriptionEditor" /> + </g:FlowPanel> + <ge:IntegerEntityModelTextBoxEditor ui:field="cpuLimitEditor" /> + </g:FlowPanel> + </d:content> + </d:SimpleDialogPanel> + +</ui:UiBinder> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/StorageQosPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/StorageQosPopupView.java index 8268776..6457a04 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/StorageQosPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/qos/StorageQosPopupView.java @@ -82,7 +82,7 @@ private void localize(ApplicationConstants constants) { nameEditor.setLabel(constants.storageQosName()); descriptionEditor.setLabel(constants.storageQosDescription()); - dataCenterEditor.setLabel(constants.dataCenterStorageQosPopup()); + dataCenterEditor.setLabel(constants.dataCenterQosPopup()); } @Override diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterCpuQosView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterCpuQosView.java new file mode 100644 index 0000000..41b3ee3 --- /dev/null +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/datacenter/SubTabDataCenterCpuQosView.java @@ -0,0 +1,90 @@ +package org.ovirt.engine.ui.webadmin.section.main.view.tab.datacenter; + +import javax.inject.Inject; + +import org.ovirt.engine.core.common.businessentities.StoragePool; +import org.ovirt.engine.core.common.businessentities.qos.CpuQos; +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.qos.DataCenterCpuQosListModel; +import org.ovirt.engine.ui.webadmin.ApplicationConstants; +import org.ovirt.engine.ui.webadmin.section.main.presenter.tab.datacenter.SubTabDataCenterCpuQosPresenter; +import org.ovirt.engine.ui.webadmin.section.main.view.AbstractSubTabTableView; +import org.ovirt.engine.ui.webadmin.widget.action.WebAdminButtonDefinition; + +import com.google.gwt.core.client.GWT; + +public class SubTabDataCenterCpuQosView extends AbstractSubTabTableView<StoragePool, + CpuQos, DataCenterListModel, DataCenterCpuQosListModel> + implements SubTabDataCenterCpuQosPresenter.ViewDef { + + interface ViewIdHandler extends ElementIdHandler<SubTabDataCenterCpuQosView> { + ViewIdHandler idHandler = GWT.create(ViewIdHandler.class); + } + + @Inject + public SubTabDataCenterCpuQosView(SearchableDetailModelProvider<CpuQos, + DataCenterListModel, DataCenterCpuQosListModel> modelProvider, + ApplicationConstants constants) { + super(modelProvider); + ViewIdHandler.idHandler.generateAndSetIds(this); + initTable(constants); + initWidget(getTable()); + } + + void initTable(final ApplicationConstants constants) { + getTable().enableColumnResizing(); + + TextColumnWithTooltip<CpuQos> nameColumn = new TextColumnWithTooltip<CpuQos>() { + @Override + public String getValue(CpuQos object) { + return object.getName() == null ? "" : object.getName(); //$NON-NLS-1$ + } + }; + nameColumn.makeSortable(); + getTable().addColumn(nameColumn, constants.cpuQosName(), "200px"); //$NON-NLS-1$ + + TextColumnWithTooltip<CpuQos> descColumn = new TextColumnWithTooltip<CpuQos>() { + @Override + public String getValue(CpuQos object) { + return object.getDescription() == null ? "" : object.getDescription(); //$NON-NLS-1$ + } + }; + descColumn.makeSortable(); + getTable().addColumn(descColumn, constants.cpuQosDescription(), "150px"); //$NON-NLS-1$ + + TextColumnWithTooltip<CpuQos> cpuLimitColumn = new TextColumnWithTooltip<CpuQos>() { + @Override + public String getValue(CpuQos object) { + return object.getCpuLimit() == null ? constants.UnlimitedCpuQos() + : object.getCpuLimit().toString(); + } + }; + cpuLimitColumn.makeSortable(); + getTable().addColumn(cpuLimitColumn, constants.cpuQosCpuLimit(), "105px"); //$NON-NLS-1$ + + getTable().addActionButton(new WebAdminButtonDefinition<CpuQos>(constants.newCpuQos()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getNewCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<CpuQos>(constants.editCpuQos()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getEditCommand(); + } + }); + + getTable().addActionButton(new WebAdminButtonDefinition<CpuQos>(constants.removeStorageQos()) { + @Override + protected UICommand resolveCommand() { + return getDetailModel().getRemoveCommand(); + } + }); + } +} -- To view, visit http://gerrit.ovirt.org/31626 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I66d2c322158fd05f3a6beabac71d28ca8b179a63 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
