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 <gchap...@redhat.com>
---
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/vms/BaseVmListModelTest.java
M 
frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmTest.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
23 files changed, 182 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/30/31630/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 99bbd19..97ca745 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 ead8f12..b9bff79 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
@@ -647,6 +647,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 d03e61b..bb87cf5 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 16ad95e..853b9fa 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;
@@ -20,11 +25,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
 {
@@ -172,6 +172,8 @@
                 }
             }), vm.getRunOnVds());
         }
+
+        updateCpuProfile(vm.getVdsGroupId(), 
vm.getVdsGroupCompatibilityVersion(), vm.getCpuProfileId());
     }
 
     @Override
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 73f78f7..2151415 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.getInstance().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 404fe0e..cdc952b 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
@@ -265,8 +265,7 @@
     }
 
     @Override
-    public void template_SelectedItemChanged()
-    {
+    public void template_SelectedItemChanged() {
     }
 
     @Override
@@ -279,6 +278,7 @@
         updateOSValues();
         updateTemplate();
         updateNumOfSockets();
+        updateCpuProfile(vm.getVdsGroupId(), 
vm.getVdsGroupCompatibilityVersion(), 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 8e384fe..33245fc 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
@@ -142,6 +142,8 @@
 
             getModel().getVmInitModel().init(template);
             getModel().getVmInitEnabled().setEntity(template.getVmInit() != 
null);
+
+            updateCpuProfile(template.getVdsGroupId(), 
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 99a586d..67f90d2 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
@@ -157,6 +157,8 @@
 
             getModel().getVmInitModel().init(vmBase);
             getModel().getVmInitEnabled().setEntity(vmBase.getVmInit() != 
null);
+
+            updateCpuProfile(vmBase.getVdsGroupId(), 
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 8289296..4fc5669 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
@@ -138,6 +138,7 @@
         updateVirtioScsiAvailability();
         updateMigrationForLocalSD();
         updateOSValues();
+        updateCpuProfile(template.getCpuProfileId(), 
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 8ed6bf7..a4b636d 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;
@@ -1411,6 +1413,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);
@@ -1664,6 +1676,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 4b5e1e6..7c1ff8b 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;
@@ -1178,4 +1180,35 @@
         return selectedInstanceType == null || selectedInstanceType instanceof 
CustomInstanceType;
     }
 
+    protected void updateCpuProfile(Guid clusterId, Version 
vdsGroupCompatibilityVersion, Guid cpuProfileId) {
+        if (Boolean.TRUE.equals(AsyncDataProvider.getInstance()
+                
.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) {
+        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);
+                                }
+                            }
+                        }
+                    }
+                }));
+    }
 }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java
 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java
index d301202..1de7a70 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmListModelTest.java
@@ -13,6 +13,7 @@
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmBase;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
+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;
 
@@ -72,6 +73,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) {
@@ -120,6 +123,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());
@@ -236,4 +240,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/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmTest.java
 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmTest.java
index 9026a51..a23f2131 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmTest.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmTest.java
@@ -46,6 +46,7 @@
     protected static final String CUSTOM_PROPERTIES = "custom_properties"; 
//$NON-NLS-1$
     protected static final Guid INSTANCE_TYPE_ID = Guid.newGuid();
     protected static final Guid QUOTA_ID = Guid.newGuid();
+    protected static final Guid CPU_PROFILE_ID = Guid.newGuid();
     protected static final String VNC_KEYBOARD_LAYOUT = "en-us"; //$NON-NLS-1$
     protected static final String VNC_KEYBOARD_LAYOUT_2 = "cz-cs"; 
//$NON-NLS-1$
     protected static final DisplayType DISPLAY_TYPE = DisplayType.qxl;
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/31630
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8a55e2ae268b932537d41b8e626795292fed8134
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to