Gilad Chaplik has uploaded a new change for review. Change subject: frontend: Add CPU profile to VM flows ......................................................................
frontend: Add CPU profile to VM flows Change-Id: I8a55e2ae268b932537d41b8e626795292fed8134 Signed-off-by: Gilad Chaplik <[email protected]> --- M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/CommonApplicationConstants.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java M frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CommonUnitToVmBaseBuilder.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CpuProfileUnitToVmBaseBuilder.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java M frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/pools/BaseVmListModelTest.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.ui.xml M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java 22 files changed, 197 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/38/31838/1 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 a12ec39..1a62f00 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 @@ -1911,4 +1911,7 @@ @DefaultStringValue("Remove") String removeProfile(); + @DefaultStringValue("CPU Profile") + String cpuProfileLabel(); + } diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java index e38ba73..8e2da847 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.java @@ -8,7 +8,9 @@ import java.util.List; import com.google.gwt.event.shared.EventBus; + import static com.google.gwt.dom.client.Style.Unit; + import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; @@ -24,6 +26,7 @@ import org.ovirt.engine.core.common.businessentities.VmPoolType; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmType; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.compat.StringFormat; import org.ovirt.engine.core.compat.StringHelper; @@ -604,6 +607,11 @@ @UiField @Ignore public FlowPanel startRunningOnPanel; + + @UiField(provided = true) + @Path(value = "cpuProfiles.selectedItem") + @WithElementId("cpuProfiles") + public ListModelListBoxEditor<CpuProfile> cpuProfilesEditor; @UiField(provided = true) InfoIcon cpuPinningInfo; @@ -1232,6 +1240,13 @@ } }, new ModeSwitchingVisibilityRenderer()); + cpuProfilesEditor = new ListModelListBoxEditor(new NullSafeRenderer<CpuProfile>() { + @Override + protected String renderNullSafe(CpuProfile object) { + return object.getName(); + } + }); + cpuSharesAmountSelectionEditor = new ListModelListBoxOnlyEditor<UnitVmModel.CpuSharesAmount>(new EnumRenderer(), new ModeSwitchingVisibilityRenderer()); } @@ -1329,6 +1344,7 @@ watchdogModelEditor.setLabel(constants.watchdogModel()); // Resource Allocation Tab + cpuProfilesEditor.setLabel(constants.cpuProfileLabel()); provisioningEditor.setLabel(constants.templateProvisVmPopup()); provisioningThinEditor.setLabel(constants.thinVmPopup()); provisioningCloneEditor.setLabel(constants.cloneVmPopup()); @@ -1857,6 +1873,7 @@ // ==Resource Allocation Tab== nextTabIndex = resourceAllocationTab.setTabIndexes(nextTabIndex); + cpuProfilesEditor.setTabIndex(nextTabIndex++); minAllocatedMemoryEditor.setTabIndex(nextTabIndex++); provisioningEditor.setTabIndex(nextTabIndex++); provisioningThinEditor.setTabIndex(nextTabIndex++); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml index 8a011b6..49ae766 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/AbstractVmPopupWidget.ui.xml @@ -646,6 +646,7 @@ <g:FlowPanel addStyleNames="{style.sectionPanelTight}" ui:field="cpuAllocationPanel" > <g:Label text="{constants.cpuAllocVmPopup}" addStyleNames="{style.sectionLabel}" /> <g:FlowPanel addStyleNames="{style.labelToCouple}"> + <e:ListModelListBoxEditor ui:field="cpuProfilesEditor" /> <g:Label ui:field="cpuSharesEditor" text="{constants.cpuShares}" addStyleNames="{style.labelToCoupleLabel}"/> <g:FlowPanel addStyleNames="{style.labelToCoupleCouple}"> <e:ListModelListBoxOnlyEditor ui:field="cpuSharesAmountSelectionEditor" addStyleNames="{style.labelToCoupleCoupleLeft}" contentWidgetStyleName="{style.cpuSahresValueListBox}" /> diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java index 48501a6..ff91c094 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.java @@ -2,6 +2,7 @@ import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.core.compat.StringHelper; import org.ovirt.engine.ui.common.CommonApplicationConstants; import org.ovirt.engine.ui.common.CommonApplicationTemplates; @@ -24,6 +25,7 @@ import com.google.gwt.core.client.GWT; import com.google.gwt.editor.client.SimpleBeanEditorDriver; +import com.google.gwt.editor.client.Editor.Path; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; @@ -102,6 +104,11 @@ @Path(value = "copyPermissions.entity") @WithElementId("copyVmPermissions") EntityModelCheckBoxEditor copyVmPermissions; + + @UiField(provided = true) + @Path(value = "cpuProfiles.selectedItem") + @WithElementId("cpuProfiles") + public ListModelListBoxEditor<CpuProfile> cpuProfilesEditor; @UiField @Ignore @@ -189,6 +196,13 @@ ); } }); + + cpuProfilesEditor = new ListModelListBoxEditor<CpuProfile>(new NullSafeRenderer<CpuProfile>() { + @Override + protected String renderNullSafe(CpuProfile object) { + return object.getName(); + } + }); } private String typeAheadNameDescriptionTemplateNullSafe(String name, String description) { @@ -216,6 +230,7 @@ isSubTemplateEditor.setLabel(constants.createAsSubTemplate()); baseTemplateEditor.setLabel(constants.rootTemplate()); templateVersionNameEditor.setLabel(constants.templateVersionName()); + cpuProfilesEditor.setLabel(constants.cpuProfileLabel()); } @Override @@ -269,6 +284,7 @@ descriptionEditor.setTabIndex(nextTabIndex++); commentEditor.setTabIndex(nextTabIndex++); clusterEditor.setTabIndex(nextTabIndex++); + cpuProfilesEditor.setTabIndex(nextTabIndex++); quotaEditor.setTabIndex(nextTabIndex++); isSubTemplateEditor.setTabIndex(nextTabIndex++); baseTemplateEditor.setTabIndex(nextTabIndex++); diff --git a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml index 467501e..909f89e 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmMakeTemplatePopupWidget.ui.xml @@ -39,6 +39,7 @@ <ge:StringEntityModelTextBoxEditor ui:field="descriptionEditor" /> <ge:StringEntityModelTextBoxEditor ui:field="commentEditor" /> <e:ListModelTypeAheadListBoxEditor ui:field="clusterEditor" /> + <e:ListModelListBoxEditor ui:field="cpuProfilesEditor" /> <e:ListModelListBoxEditor ui:field="quotaEditor" /> <ge:EntityModelCheckBoxEditor ui:field="isSubTemplateEditor"/> <g:FlowPanel ui:field="subTemplateExpanderContent" addStyleNames="{style.generalExpanderContent}"> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java index 16bb71e..df3a81a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Cloner.java @@ -221,6 +221,7 @@ vm.setBootMenuEnabled(instance.isBootMenuEnabled()); vm.setSpiceFileTransferEnabled(instance.isSpiceFileTransferEnabled()); vm.setSpiceCopyPasteEnabled(instance.isSpiceCopyPasteEnabled()); + vm.setCpuProfileId(instance.getCpuProfileId()); return vm; } @@ -445,6 +446,7 @@ obj.setCreatedByUserId(instance.getCreatedByUserId()); obj.setSpiceFileTransferEnabled(instance.isSpiceFileTransferEnabled()); obj.setSpiceCopyPasteEnabled(instance.isSpiceCopyPasteEnabled()); + obj.setCpuProfileId(instance.getCpuProfileId()); return obj; } @@ -487,6 +489,7 @@ obj.setBootMenuEnabled(instance.isBootMenuEnabled()); obj.setSpiceFileTransferEnabled(instance.isSpiceFileTransferEnabled()); obj.setSpiceCopyPasteEnabled(instance.isSpiceCopyPasteEnabled()); + obj.setCpuProfileId(instance.getCpuProfileId()); return obj; } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CommonUnitToVmBaseBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CommonUnitToVmBaseBuilder.java index aaa3ab9..2213c21 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CommonUnitToVmBaseBuilder.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CommonUnitToVmBaseBuilder.java @@ -15,7 +15,8 @@ public CommonUnitToVmBaseBuilder() { super( new CoreUnitToVmBaseBuilder(), - new QuotaUnitToVmBaseBuilder<T>() + new QuotaUnitToVmBaseBuilder<T>(), + new CpuProfileUnitToVmBaseBuilder<T>() ); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CpuProfileUnitToVmBaseBuilder.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CpuProfileUnitToVmBaseBuilder.java new file mode 100644 index 0000000..c8b7392 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/builders/vm/CpuProfileUnitToVmBaseBuilder.java @@ -0,0 +1,14 @@ +package org.ovirt.engine.ui.uicommonweb.builders.vm; + +import org.ovirt.engine.core.common.businessentities.VmBase; +import org.ovirt.engine.ui.uicommonweb.builders.BaseSyncBuilder; +import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel; + +public class CpuProfileUnitToVmBaseBuilder<T extends VmBase> extends BaseSyncBuilder<UnitVmModel, T> { + @Override + protected void build(UnitVmModel model, VmBase vm) { + if (model.getCpuProfiles().getSelectedItem() != null) { + vm.setCpuProfileId(model.getCpuProfiles().getSelectedItem().getId()); + } + } +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java index a25f5c5..91e4bcd 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolListModel.java @@ -30,6 +30,7 @@ import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.builders.BuilderExecutor; +import org.ovirt.engine.ui.uicommonweb.builders.vm.CpuProfileUnitToVmBaseBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.VmSpecificUnitToVmBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.CoreUnitToVmBaseBuilder; import org.ovirt.engine.ui.uicommonweb.builders.vm.DedicatedVmForVdsUnitToVmBaseBuilder; @@ -516,7 +517,8 @@ new KernelParamsUnitToVmBaseBuilder(), new MigrationOptionsUnitToVmBaseBuilder(), new DedicatedVmForVdsUnitToVmBaseBuilder(), - new UsbPolicyUnitToVmBaseBuilder()); + new UsbPolicyUnitToVmBaseBuilder(), + new CpuProfileUnitToVmBaseBuilder()); BuilderExecutor.build(model, vm, new VmSpecificUnitToVmBuilder()); return vm; } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java index d1057d2..a7a6970 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ExistingVmModelBehavior.java @@ -1,5 +1,10 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; @@ -17,11 +22,6 @@ import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel; import org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.ExistingVmInstanceTypeManager; import org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.InstanceTypeManager; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; public class ExistingVmModelBehavior extends VmModelBehaviorBase { @@ -192,6 +192,8 @@ BuilderExecutor.build(vm.getStaticData(), getModel(), new SerialNumberPolicyVmBaseToUnitBuilder()); getModel().getBootMenuEnabled().setEntity(vm.isBootMenuEnabled()); + + updateCpuProfile(vm.getVdsGroupId(), vm.getVdsGroupCompatibilityVersion(), vm.getCpuProfileId()); } private int calculateHostCpus() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java index 0b6f10e..4ec089f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/ImportVmModel.java @@ -21,6 +21,7 @@ import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VolumeFormat; import org.ovirt.engine.core.common.businessentities.VolumeType; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.core.common.interfaces.SearchType; import org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; @@ -99,6 +100,16 @@ cluster = value; } + private ListModel<CpuProfile> cpuProfiles; + + public ListModel<CpuProfile> getCpuProfiles() { + return cpuProfiles; + } + + private void setCpuProfiles(ListModel<CpuProfile> value) { + cpuProfiles = value; + } + private ListModel clusterQuota; public ListModel getClusterQuota() { @@ -167,6 +178,7 @@ setCluster(new ListModel()); setClusterQuota(new ListModel()); getClusterQuota().setIsAvailable(false); + setCpuProfiles(new ListModel<CpuProfile>()); } public void init(List items, final Guid storageDomainId) { @@ -213,7 +225,7 @@ getCluster().setItems(clusters); getCluster().setSelectedItem(Linq.firstOrDefault(clusters)); } - + VDSGroup cluster = (VDSGroup) getCluster().getSelectedItem(); // get storage domains AsyncDataProvider.getStorageDomainList(new AsyncQuery(ImportVmModel.this, new INewAsyncCallback() { @@ -241,7 +253,24 @@ }), getStoragePool().getId()); + + fetchCpuProfiles(cluster.getId()); } + + private void fetchCpuProfiles(Guid clusterId) { + Frontend.getInstance().runQuery(VdcQueryType.GetCpuProfilesByClusterId, + new IdQueryParameters(clusterId), + new AsyncQuery(new INewAsyncCallback() { + + @Override + public void onSuccess(Object model, Object returnValue) { + List<CpuProfile> cpuProfiles = + (List<CpuProfile>) ((VdcQueryReturnValue) returnValue).getReturnValue(); + getCpuProfiles().setItems(cpuProfiles); + } + })); + } + }), dataCenter.getId(), true, false); } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java index 3b9f999..bf3a4f0 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewTemplateVmModelBehavior.java @@ -278,6 +278,10 @@ updateOSValues(); updateTemplate(); updateNumOfSockets(); + if(getModel().getSelectedCluster() != null) { + updateCpuProfile(getModel().getSelectedCluster().getId(), getModel().getSelectedCluster() + .getcompatibility_version(), vm.getCpuProfileId()); + } } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java index baaeeba..f40fe16 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/NewVmModelBehavior.java @@ -157,6 +157,11 @@ BuilderExecutor.build(template, getModel(), new SerialNumberPolicyVmBaseToUnitBuilder()); getModel().getBootMenuEnabled().setEntity(template.isBootMenuEnabled()); + + if (getModel().getSelectedCluster() != null) { + updateCpuProfile(getModel().getSelectedCluster().getId(), + getClusterCompatibilityVersion(), template.getCpuProfileId()); + } } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java index 7f2d559..8e79318 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/PoolModelBehaviorBase.java @@ -172,6 +172,11 @@ BuilderExecutor.build(vmBase, getModel(), new SerialNumberPolicyVmBaseToUnitBuilder()); getModel().getBootMenuEnabled().setEntity(vmBase.isBootMenuEnabled()); + + if (getModel().getSelectedCluster() != null) { + updateCpuProfile(getModel().getSelectedCluster().getId(), + getClusterCompatibilityVersion(), vmBase.getCpuProfileId()); + } } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java index b439c43..77c34a3 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/TemplateVmModelBehavior.java @@ -135,6 +135,10 @@ updateVirtioScsiAvailability(); updateMigrationForLocalSD(); updateOSValues(); + if (getModel().getSelectedCluster() != null) { + updateCpuProfile(getModel().getSelectedCluster().getId(), + getClusterCompatibilityVersion(), template.getCpuProfileId()); + } } @Override diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java index 2a1ac3f..769213d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModel.java @@ -9,6 +9,7 @@ import java.util.List; import java.util.Map; import java.util.Set; + import org.ovirt.engine.core.common.businessentities.BootSequence; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.InstanceType; @@ -28,6 +29,7 @@ import org.ovirt.engine.core.common.businessentities.VmType; import org.ovirt.engine.core.common.businessentities.VmWatchdogAction; import org.ovirt.engine.core.common.businessentities.VmWatchdogType; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; @@ -197,6 +199,7 @@ getQuota().setIsChangable(false); getDescription().setIsChangable(false); getComment().setIsChangable(false); + getCpuProfiles().setIsChangable(false); getNumOfDesktops().setIsChangable(false); getPrestartedVms().setIsChangable(false); @@ -1412,6 +1415,16 @@ this.spiceCopyPasteEnabled = spiceCopyPasteEnabled; } + private NotChangableForVmInPoolListModel<CpuProfile> cpuProfiles; + + public ListModel<CpuProfile> getCpuProfiles() { + return cpuProfiles; + } + + public void setCpuProfiles(NotChangableForVmInPoolListModel<CpuProfile> cpuProfiles) { + this.cpuProfiles = cpuProfiles; + } + public UnitVmModel(VmModelBehaviorBase behavior) { Frontend.getInstance().getQueryStartedEvent().addListener(this); Frontend.getInstance().getQueryCompleteEvent().addListener(this); @@ -1665,6 +1678,8 @@ setEditingEnabled(new EntityModel<Boolean>()); getEditingEnabled().setEntity(true); + setCpuProfiles(new NotChangableForVmInPoolListModel<CpuProfile>()); + getCpuProfiles().setIsAvailable(false); } public void initialize(SystemTreeItemModel SystemTreeSelectedItem) diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java index fd5268c..159762e 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.java @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.List; import java.util.Set; + import org.ovirt.engine.core.common.TimeZoneType; import org.ovirt.engine.core.common.businessentities.ActionGroup; import org.ovirt.engine.core.common.businessentities.ArchitectureType; @@ -28,6 +29,7 @@ import org.ovirt.engine.core.common.businessentities.VmType; import org.ovirt.engine.core.common.businessentities.VolumeType; import org.ovirt.engine.core.common.businessentities.comparators.NameableComparator; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; @@ -1175,4 +1177,38 @@ return selectedInstanceType == null || selectedInstanceType instanceof CustomInstanceType; } + protected void updateCpuProfile(Guid clusterId, Version vdsGroupCompatibilityVersion, Guid cpuProfileId) { + if (Boolean.TRUE.equals(AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.CpuQosSupported, + vdsGroupCompatibilityVersion.getValue()))) { + getModel().getCpuProfiles().setIsAvailable(true); + fetchCpuProfiles(clusterId, cpuProfileId); + } else { + getModel().getCpuProfiles().setIsAvailable(false); + } + } + + private void fetchCpuProfiles(Guid clusterId, final Guid cpuProfileId) { + if (clusterId == null) { + return; + } + Frontend.getInstance().runQuery(VdcQueryType.GetCpuProfilesByClusterId, + new IdQueryParameters(clusterId), + new AsyncQuery(new INewAsyncCallback() { + + @Override + public void onSuccess(Object model, Object returnValue) { + List<CpuProfile> cpuProfiles = + (List<CpuProfile>) ((VdcQueryReturnValue) returnValue).getReturnValue(); + getModel().getCpuProfiles().setItems(cpuProfiles); + if (cpuProfiles != null) { + for (CpuProfile cpuProfile : cpuProfiles) { + if (cpuProfile.getId().equals(cpuProfileId)) { + getModel().getCpuProfiles().setSelectedItem(cpuProfile); + break; + } + } + } + } + })); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/pools/BaseVmListModelTest.java b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/pools/BaseVmListModelTest.java index be68233..82cedda 100644 --- a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/pools/BaseVmListModelTest.java +++ b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/pools/BaseVmListModelTest.java @@ -15,6 +15,7 @@ import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.VmType; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.SerialNumberPolicyModel; @@ -66,6 +67,7 @@ protected static final Integer MIGRATION_DOWNTIME_2 = 750; protected static final SerialNumberPolicy SERIAL_NUMBER_POLICY = SerialNumberPolicy.CUSTOM; protected static final String CUSTOM_SERIAL_NUMBER = "my custom number"; //$NON-NLS-1$ + protected static final Guid CPU_PROFILE_ID = Guid.newGuid(); protected void setUpUnitVmModelExpectations(UnitVmModel model) { when(model.getVmType().getSelectedItem()).thenReturn(VM_TYPE); @@ -121,6 +123,8 @@ when(model.getBootMenuEnabled().getEntity()).thenReturn(true); when(model.getSpiceFileTransferEnabled().getEntity()).thenReturn(true); when(model.getSpiceCopyPasteEnabled().getEntity()).thenReturn(true); + ListModel<CpuProfile> cpuProfiles = mockCpuProfiles(); + when(model.getCpuProfiles()).thenReturn(cpuProfiles); } protected void setUpOrigVm(VM origVm) { @@ -169,6 +173,7 @@ assertTrue(vm.isRunAndPause()); assertTrue(vm.isAutoStartup()); assertEquals(QUOTA_ID, vm.getQuotaId()); + assertEquals(CPU_PROFILE_ID, vm.getCpuProfileId()); assertEquals(PRIORITY, vm.getPriority()); assertEquals(DESCRIPTION, vm.getDescription()); assertEquals(COMMENT, vm.getComment()); @@ -285,4 +290,13 @@ return model; } + + protected ListModel<CpuProfile> mockCpuProfiles() { + CpuProfile cpuProfile = new CpuProfile(); + cpuProfile.setId(CPU_PROFILE_ID); + final ListModel<CpuProfile> model = mockListModel(cpuProfile); + when(model.getIsAvailable()).thenReturn(true); + + return model; + } } diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java index c06d1cd..71e76df 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/section/main/view/popup/vm/VmMakeTemplatePopupView.java @@ -21,7 +21,7 @@ @Inject public VmMakeTemplatePopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, CommonApplicationTemplates applicationTemplates) { - super(eventBus, resources, new VmMakeTemplatePopupWidget(constants, applicationTemplates), "470px", "560px"); //$NON-NLS-1$ //$NON-NLS-2$ + super(eventBus, resources, new VmMakeTemplatePopupWidget(constants, applicationTemplates), "470px", "580px"); //$NON-NLS-1$ //$NON-NLS-2$ ViewIdHandler.idHandler.generateAndSetIds(this); } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.java index 117d405..11ab9f1 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.java @@ -12,6 +12,7 @@ import org.ovirt.engine.core.common.businessentities.VolumeType; import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType; import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface; +import org.ovirt.engine.core.common.businessentities.profiles.CpuProfile; import org.ovirt.engine.ui.common.CommonApplicationTemplates; import org.ovirt.engine.ui.common.uicommon.model.DetailModelProvider; import org.ovirt.engine.ui.common.view.popup.AbstractModelBoundPopupView; @@ -85,6 +86,10 @@ @UiField(provided = true) @Path(value = "cluster.selectedItem") ListModelListBoxEditor<Object> destClusterEditor; + + @UiField(provided = true) + @Path(value = "cpuProfiles.selectedItem") + ListModelListBoxEditor<CpuProfile> cpuProfileEditor; @UiField(provided = true) @Path(value = "clusterQuota.selectedItem") @@ -622,12 +627,21 @@ } }); destStorageEditor = new ListModelListBoxEditor<Object>(new StorageDomainFreeSpaceRenderer()); + + cpuProfileEditor = new ListModelListBoxEditor<CpuProfile>(new NullSafeRenderer<CpuProfile>() { + + @Override + protected String renderNullSafe(CpuProfile object) { + return object.getName(); + } + }); } private void localize(ApplicationConstants constants) { destClusterEditor.setLabel(constants.importVm_destCluster()); destClusterQuotaEditor.setLabel(constants.importVm_destClusterQuota()); destStorageEditor.setLabel(constants.defaultStorage()); + cpuProfileEditor.setLabel(constants.cpuProfileLabel()); } @SuppressWarnings("unchecked") diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.ui.xml b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.ui.xml index b92a0fa..5d3fcd9 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.ui.xml +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/storage/backup/ImportVmPopupView.ui.xml @@ -82,6 +82,7 @@ <g:VerticalPanel> <e:ListModelListBoxEditor ui:field="destStorageEditor" addStyleNames="{style.listBoxEditor}"/> <e:ListModelListBoxEditor ui:field="destClusterEditor" addStyleNames="{style.listBoxEditor}"/> + <e:ListModelListBoxEditor ui:field="cpuProfileEditor" addStyleNames="{style.listBoxEditor}"/> </g:VerticalPanel> <g:VerticalPanel> <e:ListModelListBoxEditor ui:field="destStorageQuotaEditor" addStyleNames="{style.destStorageQuotaEditor}"/> diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java index f36408a..d238f5b 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java @@ -21,7 +21,7 @@ @Inject public VmMakeTemplatePopupView(EventBus eventBus, ApplicationResources resources, ApplicationConstants constants, CommonApplicationTemplates applicationTemplates) { - super(eventBus, resources, new VmMakeTemplatePopupWidget(constants, applicationTemplates), "470px", "560px"); //$NON-NLS-1$ //$NON-NLS-2$ + super(eventBus, resources, new VmMakeTemplatePopupWidget(constants, applicationTemplates), "470px", "580px"); //$NON-NLS-1$ //$NON-NLS-2$ ViewIdHandler.idHandler.generateAndSetIds(this); } -- To view, visit http://gerrit.ovirt.org/31838 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8a55e2ae268b932537d41b8e626795292fed8134 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.5 Gerrit-Owner: Gilad Chaplik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
