Arik Hadas has uploaded a new change for review.

Change subject: frontend: add template
......................................................................

frontend: add template

Change-Id: Ic35174ac6736b96e8854885a711830c93a4b79ad
Signed-off-by: Arik Hadas <[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/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/models/userportal/UserPortalListModel.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/UnitVmModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmModelBehaviorBase.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/vm/VmMakeTemplatePopupView.java
10 files changed, 252 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/23327/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 38964bb..7cb8e68 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
@@ -56,6 +56,15 @@
     @DefaultStringValue("Disks Allocation:")
     String disksAllocation();
 
+    @DefaultStringValue("Create as a Sub Template version")
+    String createAsSubTemplate();
+
+    @DefaultStringValue("Root Template")
+    String rootTemplate();
+
+    @DefaultStringValue("Sub Version Name")
+    String templateSubversionName();
+
     @DefaultStringValue("Disk ")
     String diskNamePrefix();
 
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 7afda23..4b4a04d 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
@@ -1,15 +1,16 @@
 package org.ovirt.engine.ui.common.widget.uicommon.popup.vm;
 
 import org.ovirt.engine.core.common.businessentities.Quota;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.ui.common.CommonApplicationConstants;
 import org.ovirt.engine.ui.common.CommonApplicationTemplates;
 import org.ovirt.engine.ui.common.idhandler.ElementIdHandler;
 import org.ovirt.engine.ui.common.idhandler.WithElementId;
 import org.ovirt.engine.ui.common.widget.Align;
-import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
 import org.ovirt.engine.ui.common.widget.editor.ListModelListBoxEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.ListModelTypeAheadListBoxEditor;
+import 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelCheckBoxEditor;
 import 
org.ovirt.engine.ui.common.widget.editor.generic.StringEntityModelTextBoxEditor;
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.AbstractModelBoundPopupWidget;
@@ -28,6 +29,7 @@
 import com.google.gwt.uibinder.client.UiField;
 import com.google.gwt.user.client.ui.FlowPanel;
 import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Panel;
 
 public class VmMakeTemplatePopupWidget extends 
AbstractModelBoundPopupWidget<UnitVmModel> {
 
@@ -61,6 +63,25 @@
     @Path(value = "dataCenterWithClustersList.selectedItem")
     @WithElementId("dataCenterWithCluster")
     public ListModelTypeAheadListBoxEditor<DataCenterWithCluster> 
clusterEditor;
+
+    @UiField(provided = true)
+    @Path(value = "isSubTemplate.entity")
+    @WithElementId("isSubTemplate")
+    EntityModelCheckBoxEditor isSubTemplateEditor;
+
+    @UiField
+    @Ignore
+    Panel subTemplateExpanderContent;
+
+    @UiField(provided = true)
+    @Path(value = "rootTemplate.selectedItem")
+    @WithElementId("rootTemplate")
+    public ListModelTypeAheadListBoxEditor<VmTemplate> rootTemplateEditor;
+
+    @UiField
+    @Path(value = "templateSubversionName.entity")
+    @WithElementId("templateSubversionName")
+    StringEntityModelTextBoxEditor templateSubversionNameEditor;
 
     @UiField(provided = true)
     @Ignore
@@ -117,6 +138,7 @@
     void addStyle() {
         isTemplatePublicEditor.setContentWidgetStyleName(style.editorLabel());
         copyVmPermissions.setContentWidgetStyleName(style.editorLabel());
+        isSubTemplateEditor.setContentWidgetStyleName(style.editorLabel());
     }
 
     void initListBoxEditors() {
@@ -150,11 +172,36 @@
                 return object.getQuotaName();
             }
         });
+
+        rootTemplateEditor = new ListModelTypeAheadListBoxEditor<VmTemplate>(
+                new 
ListModelTypeAheadListBoxEditor.NullSafeSuggestBoxRenderer<VmTemplate>() {
+
+                    @Override
+                    public String getReplacementStringNullSafe(VmTemplate 
data) {
+                        return data.getName();
+                    }
+
+                    @Override
+                    public String getDisplayStringNullSafe(VmTemplate data) {
+                        return typeAheadNameDescriptionTemplateNullSafe(
+                                data.getName(),
+                                data.getDescription()
+                        );
+                    }
+                });
+    }
+
+    private String typeAheadNameDescriptionTemplateNullSafe(String name, 
String description) {
+        return applicationTemplates.typeAheadNameDescription(
+                name != null ? name : "",
+                description != null ? description : "")
+                .asString();
     }
 
     void initCheckBoxEditors() {
         isTemplatePublicEditor = new EntityModelCheckBoxEditor(Align.RIGHT);
         copyVmPermissions = new EntityModelCheckBoxEditor(Align.RIGHT);
+        isSubTemplateEditor = new EntityModelCheckBoxEditor(Align.RIGHT);
     }
 
     void localize(CommonApplicationConstants constants) {
@@ -166,6 +213,9 @@
         
isTemplatePublicEditor.setLabel(constants.makeTemplateIsTemplatePublicEditorLabel());
         copyVmPermissions.setLabel(constants.copyVmPermissions());
         disksAllocationLabel.setText(constants.disksAllocation());
+        isSubTemplateEditor.setLabel(constants.createAsSubTemplate());
+        rootTemplateEditor.setLabel(constants.rootTemplate());
+        
templateSubversionNameEditor.setLabel(constants.templateSubversionName());
     }
 
     @Override
@@ -188,6 +238,14 @@
                 }
             }
         });
+
+        model.getIsSubTemplate().getEntityChangedEvent().addListener(new 
IEventListener() {
+            @Override
+            public void eventRaised(Event ev, Object sender, EventArgs args) {
+                
subTemplateExpanderContent.setVisible(model.getIsSubTemplate().getEntity());
+            }
+        });
+        subTemplateExpanderContent.setVisible(false);
     }
 
     private void addDiskAllocation(UnitVmModel model) {
@@ -212,6 +270,9 @@
         commentEditor.setTabIndex(nextTabIndex++);
         clusterEditor.setTabIndex(nextTabIndex++);
         quotaEditor.setTabIndex(nextTabIndex++);
+        isSubTemplateEditor.setTabIndex(nextTabIndex++);
+        rootTemplateEditor.setTabIndex(nextTabIndex++);
+        templateSubversionNameEditor.setTabIndex(nextTabIndex++);
         nextTabIndex = disksAllocationView.setTabIndexes(nextTabIndex);
         isTemplatePublicEditor.setTabIndex(nextTabIndex++);
         copyVmPermissions.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 9bd95ea..da0fe2c 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
@@ -28,6 +28,10 @@
                        padding-bottom: 5px;
                        padding-top: 10px;
                }
+
+               .generalExpanderContent {
+                       padding-left: 15px;
+               }
        </ui:style>
 
        <g:FlowPanel>
@@ -36,6 +40,11 @@
                <ge:StringEntityModelTextBoxEditor ui:field="commentEditor" />
                <e:ListModelTypeAheadListBoxEditor ui:field="clusterEditor" />
                <e:ListModelListBoxEditor ui:field="quotaEditor" />
+               <ge:EntityModelCheckBoxEditor ui:field="isSubTemplateEditor"/>
+               <g:FlowPanel ui:field="subTemplateExpanderContent" 
addStyleNames="{style.generalExpanderContent}">
+                       <e:ListModelTypeAheadListBoxEditor 
ui:field="rootTemplateEditor" />
+                       <ge:StringEntityModelTextBoxEditor 
ui:field="templateSubversionNameEditor" />
+               </g:FlowPanel>
                <g:Label ui:field="disksAllocationLabel" 
addStyleNames="{style.disksAllocationLabel}" />
                <w:DisksAllocationView ui:field="disksAllocationView" 
listHeight="145px" listWidth="445px" 
addStyleNames="{style.disksAllocationPanel}" />
                <g:FlowPanel>
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
index 4148a62..50022c7 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
@@ -587,7 +587,7 @@
         }
     }
 
-    public void postNameUniqueCheck(UserPortalListModel userPortalListModel)
+    private void postNameUniqueCheck(UserPortalListModel userPortalListModel)
     {
         UnitVmModel model = (UnitVmModel) userPortalListModel.getWindow();
         UserPortalItemModel selectedItem = (UserPortalItemModel) 
userPortalListModel.getSelectedItem();
@@ -648,6 +648,10 @@
         
addVmTemplateParameters.setSoundDeviceEnabled(model.getIsSoundcardEnabled().getEntity());
         
addVmTemplateParameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
         
addVmTemplateParameters.setCopyVmPermissions(model.getCopyPermissions().getEntity());
+        if (model.getIsSubTemplate().getEntity()) {
+            
addVmTemplateParameters.setbaseTemplateId(model.getRootTemplate().getSelectedItem().getId());
+            
addVmTemplateParameters.setTemplateVersionName(model.getTemplateSubversionName().getEntity());
+        }
 
         Frontend.getInstance().runAction(VdcActionType.AddVmTemplate, 
addVmTemplateParameters,
                 new IFrontendActionAsyncCallback() {
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 ae01221..08568b9 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
@@ -16,8 +16,10 @@
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.VolumeType;
 import 
org.ovirt.engine.core.common.businessentities.comparators.NameableComparator;
+import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.INewAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.Linq;
@@ -27,6 +29,8 @@
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemModel;
 import org.ovirt.engine.ui.uicommonweb.models.SystemTreeItemType;
 import org.ovirt.engine.ui.uicommonweb.models.storage.DisksAllocationModel;
+import org.ovirt.engine.ui.uicommonweb.validation.IValidation;
+import org.ovirt.engine.ui.uicommonweb.validation.NotEmptyValidation;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
 public class NewTemplateVmModelBehavior extends 
VmModelBehaviorBase<UnitVmModel>
@@ -106,6 +110,95 @@
                 vm.getStoragePoolId());
     }
 
+    private void updateTemplate()
+    {
+        final DataCenterWithCluster dataCenterWithCluster =
+                (DataCenterWithCluster) 
getModel().getDataCenterWithClustersList().getSelectedItem();
+        StoragePool dataCenter = dataCenterWithCluster == null ? null : 
dataCenterWithCluster.getDataCenter();
+        if (dataCenter == null) {
+            return;
+        }
+
+        // Filter according to system tree selection.
+        if (getSystemTreeSelectedItem() != null && 
getSystemTreeSelectedItem().getType() == SystemTreeItemType.Storage)
+        {
+            StorageDomain storage = (StorageDomain) 
getSystemTreeSelectedItem().getEntity();
+
+            AsyncDataProvider.getTemplateListByDataCenter(new AsyncQuery(new 
Object[] { this, storage },
+                    new INewAsyncCallback() {
+                        @Override
+                        public void onSuccess(Object target1, Object 
returnValue1) {
+
+                            Object[] array1 = (Object[]) target1;
+                            NewTemplateVmModelBehavior behavior1 = 
(NewTemplateVmModelBehavior) array1[0];
+                            StorageDomain storage1 = (StorageDomain) array1[1];
+                            AsyncDataProvider.getTemplateListByStorage(new 
AsyncQuery(new Object[] { behavior1,
+                                    returnValue1 },
+                                    new INewAsyncCallback() {
+                                        @Override
+                                        public void onSuccess(Object target2, 
Object returnValue2) {
+
+                                            Object[] array2 = (Object[]) 
target2;
+                                            NewTemplateVmModelBehavior 
behavior2 = (NewTemplateVmModelBehavior) array2[0];
+                                            ArrayList<VmTemplate> 
templatesByDataCenter =
+                                                    (ArrayList<VmTemplate>) 
array2[1];
+                                            ArrayList<VmTemplate> 
templatesByStorage =
+                                                    (ArrayList<VmTemplate>) 
returnValue2;
+                                            VmTemplate blankTemplate =
+                                                    
Linq.firstOrDefault(templatesByDataCenter,
+                                                            new 
Linq.TemplatePredicate(Guid.Empty));
+                                            if (blankTemplate != null)
+                                            {
+                                                templatesByStorage.add(0, 
blankTemplate);
+                                            }
+
+                                            ArrayList<VmTemplate> templateList 
= AsyncDataProvider.filterTemplatesByArchitecture(templatesByStorage,
+                                                            
dataCenterWithCluster.getCluster().getArchitecture());
+
+                                            
behavior2.postInitTemplate(templateList);
+
+                                        }
+                                    }),
+                                    storage1.getId());
+
+                        }
+                    }, getModel().getHash()),
+                    dataCenter.getId());
+        }
+        else
+        {
+            AsyncDataProvider.getTemplateListByDataCenter(new AsyncQuery(this,
+                    new INewAsyncCallback() {
+                        @Override
+                        public void onSuccess(Object target, Object 
returnValue) {
+
+                            NewTemplateVmModelBehavior behavior = 
(NewTemplateVmModelBehavior) target;
+
+                            ArrayList<VmTemplate> templates = 
(ArrayList<VmTemplate>) returnValue;
+
+                            
behavior.postInitTemplate(AsyncDataProvider.filterTemplatesByArchitecture(templates,
+                                    
dataCenterWithCluster.getCluster().getArchitecture()));
+
+                        }
+                    }, getModel().getHash()), dataCenter.getId());
+        }
+    }
+
+    private void postInitTemplate(List<VmTemplate> templates)
+    {
+        List<VmTemplate> rootTemplates = getBaseTemplates(templates);
+
+        VmTemplate currentTemplate = Linq.firstOrDefault(templates,
+                new Linq.TemplatePredicate(vm.getVmtGuid()));
+        Guid currentBaseTemplateId = currentTemplate.getBaseTemplateId();
+
+        getModel().getRootTemplate().setItems(rootTemplates);
+
+        getModel().getRootTemplate().setSelectedItem(
+                Linq.firstOrDefault(rootTemplates,
+                        new Linq.TemplatePredicate(currentBaseTemplateId)));
+    }
+
     @Override
     public void dataCenterWithClusterSelectedItemChanged()
     {
@@ -181,6 +274,7 @@
         updateCpuSharesAvailability();
         updateVirtioScsiAvailability();
         updateOSValues();
+        updateTemplate();
     }
 
     @Override
@@ -344,7 +438,16 @@
     @Override
     public boolean validate()
     {
-        return super.validate();
+        if (!super.validate()) {
+            return false;
+        }
+
+        if (getModel().getIsSubTemplate().getEntity()) {
+            getModel().getTemplateSubversionName().validateEntity(new 
IValidation[] { new NotEmptyValidation() });
+            return getModel().getTemplateSubversionName().getIsValid();
+        }
+
+        return true;
     }
 
     @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 eb516fa..745f54d 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
@@ -446,6 +446,18 @@
         privateTemplate = value;
     }
 
+    private NotChangableForVmInPoolListModel<VmTemplate> rootTemplate;
+
+    public ListModel<VmTemplate> getRootTemplate()
+    {
+        return rootTemplate;
+    }
+
+    private void setRootTemplate(NotChangableForVmInPoolListModel<VmTemplate> 
value)
+    {
+        rootTemplate = value;
+    }
+
     private NotChangableForVmInPoolListModel<VmType> vmType;
 
     public void setVmType(NotChangableForVmInPoolListModel<VmType> vmType) {
@@ -539,6 +551,18 @@
     private void setComment(NotChangableForVmInPoolEntityModel<String> value)
     {
         privateComment = value;
+    }
+
+    private NotChangableForVmInPoolEntityModel<String> templateSubversionName;
+
+    public EntityModel<String> getTemplateSubversionName()
+    {
+        return templateSubversionName;
+    }
+
+    private void 
setTemplateSubversionName(NotChangableForVmInPoolEntityModel<String> value)
+    {
+        templateSubversionName = value;
     }
 
     private NotChangableForVmInPoolListModel<String> privateDomain;
@@ -875,6 +899,16 @@
         privateCdImage = value;
     }
 
+    private NotChangableForVmInPoolEntityModel<Boolean> isSubTemplate;
+
+    public EntityModel<Boolean> getIsSubTemplate() {
+        return isSubTemplate;
+    }
+
+    public void setIsSubTemplate(NotChangableForVmInPoolEntityModel<Boolean> 
value) {
+        isSubTemplate = value;
+    }
+
     private NotChangableForVmInPoolEntityModel<Boolean> cdAttached;
 
     public EntityModel<Boolean> getCdAttached() {
@@ -1184,6 +1218,7 @@
         setAllowConsoleReconnect(new 
NotChangableForVmInPoolEntityModel<Boolean>());
         setDescription(new NotChangableForVmInPoolEntityModel<String>());
         setComment(new NotChangableForVmInPoolEntityModel<String>());
+        setTemplateSubversionName(new 
NotChangableForVmInPoolEntityModel<String>());
         setDomain(new NotChangableForVmInPoolListModel<String>());
         setMinAllocatedMemory(new 
NotChangableForVmInPoolEntityModel<Integer>());
         setUsbPolicy(new NotChangableForVmInPoolListModel<UsbPolicy>());
@@ -1214,6 +1249,9 @@
 
         setSpiceProxyEnabled(new EntityModel<Boolean>());
         setSpiceProxy(new EntityModel<String>());
+
+        setRootTemplate(new NotChangableForVmInPoolListModel<VmTemplate>());
+        setIsSubTemplate(new 
NotChangableForVmInPoolEntityModel<Boolean>(false));
 
         setCdAttached(new NotChangableForVmInPoolEntityModel<Boolean>());
         getCdAttached().getEntityChangedEvent().addListener(new 
IEventListener() {
@@ -2473,6 +2511,13 @@
     }
 
     private class NotChangableForVmInPoolEntityModel<T> extends EntityModel<T> 
{
+        public NotChangableForVmInPoolEntityModel() {
+        }
+
+        public NotChangableForVmInPoolEntityModel(T entity) {
+            super(entity);
+        }
+
         @Override
         public EntityModel<T> setIsChangable(boolean value) {
             if (!isVmAttachedToPool()) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
index d556d57..fbd4752 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
@@ -1291,7 +1291,7 @@
         }
     }
 
-    public void postNameUniqueCheck()
+    private void postNameUniqueCheck()
     {
         UnitVmModel model = (UnitVmModel) getWindow();
         VM vm = (VM) getSelectedItem();
@@ -1352,6 +1352,10 @@
         
addVmTemplateParameters.setCopyVmPermissions(model.getCopyPermissions().getEntity());
         model.startProgress(null);
         
addVmTemplateParameters.setConsoleEnabled(model.getIsConsoleDeviceEnabled().getEntity());
+        if (model.getIsSubTemplate().getEntity()) {
+            
addVmTemplateParameters.setbaseTemplateId(model.getRootTemplate().getSelectedItem().getId());
+            
addVmTemplateParameters.setTemplateVersionName(model.getTemplateSubversionName().getEntity());
+        }
 
         Frontend.getInstance().runAction(VdcActionType.AddVmTemplate, 
addVmTemplateParameters,
                 new IFrontendActionAsyncCallback() {
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 99458e4..7694706 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
@@ -128,6 +128,17 @@
 
     }
 
+    protected List<VmTemplate> getBaseTemplates(List<VmTemplate> templates) {
+        List<VmTemplate> baseTemplates = new ArrayList<VmTemplate>();
+        for (VmTemplate template : templates) {
+            if (template.getId().equals(template.getBaseTemplateId())) {
+                baseTemplates.add(template);
+            }
+        }
+
+        return baseTemplates;
+    }
+
     public boolean validate()
     {
         return true;
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 2dff146..c06d1cd 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), "460px", "510px"); //$NON-NLS-1$ //$NON-NLS-2$
+        super(eventBus, resources, new VmMakeTemplatePopupWidget(constants, 
applicationTemplates), "470px", "560px"); //$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/vm/VmMakeTemplatePopupView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/popup/vm/VmMakeTemplatePopupView.java
index 4855df5..f36408a 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), "460px", "510px"); //$NON-NLS-1$ //$NON-NLS-2$
+        super(eventBus, resources, new VmMakeTemplatePopupWidget(constants, 
applicationTemplates), "470px", "560px"); //$NON-NLS-1$ //$NON-NLS-2$
         ViewIdHandler.idHandler.generateAndSetIds(this);
     }
 


-- 
To view, visit http://gerrit.ovirt.org/23327
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic35174ac6736b96e8854885a711830c93a4b79ad
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to