Tomas Jelinek has uploaded a new change for review.

Change subject: webadmin: added the instance images widget to new/edit VM
......................................................................

webadmin: added the instance images widget to new/edit VM

Change-Id: I792340b0bfb632f956961959f36f79d841cad50a
Bug-Url: https://bugzilla.redhat.com/1117489
Signed-off-by: Tomas Jelinek <tjeli...@redhat.com>
---
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/VmPopupWidget.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
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/BaseInterfaceCreatingManager.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/UnitVmModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceCreatingManager.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/instancetypes/InstanceTypeInterfaceCreatingManager.java
M 
frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmModelBehaviorTest.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
14 files changed, 103 insertions(+), 35 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/64/36064/1

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 1f2dad9..41ff430 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
@@ -1,6 +1,7 @@
 
 package org.ovirt.engine.ui.common.widget.uicommon.popup;
 
+import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.hiddenField;
 import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField;
 
 import java.util.ArrayList;
@@ -73,6 +74,7 @@
 import org.ovirt.engine.ui.common.widget.renderer.MemorySizeRenderer;
 import org.ovirt.engine.ui.common.widget.renderer.NullSafeRenderer;
 import org.ovirt.engine.ui.common.widget.table.column.TextColumnWithTooltip;
+import 
org.ovirt.engine.ui.common.widget.uicommon.instanceimages.InstanceImagesEditor;
 import org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfigMap;
 import 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.SerialNumberPolicyWidget;
@@ -233,6 +235,11 @@
 
     @UiField
     public Panel logicalNetworksEditorPanel;
+
+    @UiField
+    @Ignore
+    @WithElementId("instanceImages")
+    public InstanceImagesEditor instanceImagesEditor;
 
     @UiField
     @Ignore
@@ -1433,6 +1440,7 @@
         priorityEditor.asEditor().edit(model.getPriority());
         driver.edit(model);
         profilesInstanceTypeEditor.edit(model.getNicsWithLogicalNetworks());
+        instanceImagesEditor.edit(model.getInstanceImages());
         customPropertiesSheetEditor.edit(model.getCustomPropertySheet());
         vmInitEditor.edit(model.getVmInitModel());
         serialNumberPolicyEditor.edit(model.getSerialNumberPolicy());
@@ -1919,7 +1927,8 @@
                 putOne(isSoundcardEnabledEditor, 
simpleField().visibleInAdvancedModeOnly()).
                 putOne(isConsoleDeviceEnabledEditor, 
simpleField().visibleInAdvancedModeOnly()).
                 putOne(spiceFileTransferEnabledEditor, 
simpleField().visibleInAdvancedModeOnly()).
-                putOne(spiceCopyPasteEnabledEditor, 
simpleField().visibleInAdvancedModeOnly());
+                putOne(spiceCopyPasteEnabledEditor, 
simpleField().visibleInAdvancedModeOnly()).
+                putOne(instanceImagesEditor, hiddenField());
     }
 
     protected List<Widget> consoleTabWidgets() {
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 91e40ab..5a9bbc5 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
@@ -9,7 +9,8 @@
              
xmlns:s="urn:import:org.ovirt.engine.ui.common.widget.uicommon.storage"
              
xmlns:k="urn:import:org.ovirt.engine.ui.common.widget.form.key_value"
              xmlns:p="urn:import:org.ovirt.engine.ui.common.widget.profile"
-             
xmlns:vm="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.vm">
+             
xmlns:vm="urn:import:org.ovirt.engine.ui.common.widget.uicommon.popup.vm"
+             
xmlns:ii="urn:import:org.ovirt.engine.ui.common.widget.uicommon.instanceimages">
 
     <ui:with field='resources' 
type='org.ovirt.engine.ui.common.CommonApplicationResources' />
     <ui:with field='constants' 
type='org.ovirt.engine.ui.common.CommonApplicationConstants'/>
@@ -498,6 +499,9 @@
                             <ge:EntityModelCheckBoxEditor 
ui:field="isDeleteProtectedEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
                             <ge:EntityModelCheckBoxEditor 
ui:field="copyTemplatePermissionsEditor" 
contentWidgetStyleName="{style.horizontallyAlignedCheckBoxContent}" 
addStyleNames="{style.horizontallyAlignedCheckBox}" />
                         </g:FlowPanel>
+                        <g:FlowPanel addStyleNames="{style.sectionPanel}">
+                            <ii:InstanceImagesEditor 
ui:field="instanceImagesEditor"/>
+                        </g:FlowPanel>
                         <g:FlowPanel ui:field="logicalNetworksEditorPanel" 
addStyleNames="{style.sectionPanel}">
                             <p:ProfilesInstanceTypeEditor 
ui:field="profilesInstanceTypeEditor" />
                          </g:FlowPanel>
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java
index 3372f61..5d67bc6 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/uicommon/popup/vm/VmPopupWidget.java
@@ -11,6 +11,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
 
 import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.hiddenField;
+import static 
org.ovirt.engine.ui.common.widget.uicommon.popup.vm.PopupWidgetConfig.simpleField;
 
 public class VmPopupWidget extends AbstractVmPopupWidget {
 
@@ -47,7 +48,8 @@
     protected PopupWidgetConfigMap createWidgetConfiguration() {
         PopupWidgetConfigMap widgetConfiguration = 
super.createWidgetConfiguration().
                 putAll(poolSpecificFields(), hiddenField()).
-                update(templateVersionNameEditor, hiddenField());
+                update(templateVersionNameEditor, hiddenField()).
+                update(instanceImagesEditor, simpleField());
 
         updateOrAddToWidgetConfiguration(widgetConfiguration, 
detachableWidgets(), UpdateToDetachable.INSTANCE);
         updateOrAddToWidgetConfiguration(widgetConfiguration, 
adminOnlyWidgets(), UpdateToAdminOnly.INSTANCE);
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolModel.java
index d1b137b..79022f2 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/pools/PoolModel.java
@@ -12,7 +12,7 @@
 public class PoolModel extends UnitVmModel {
 
     public PoolModel(VmModelBehaviorBase behavior) {
-        super(behavior);
+        super(behavior, null);
 
         ArrayList<EntityModel<VmPoolType>> poolTypeItems = new 
ArrayList<EntityModel<VmPoolType>>();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
index d09af3b..2adcb36 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/TemplateListModel.java
@@ -464,7 +464,7 @@
     }
 
     private void vmInitLoaded(VmTemplate template) {
-        UnitVmModel model = new UnitVmModel(createBehavior(template));
+        UnitVmModel model = new UnitVmModel(createBehavior(template), this);
         
model.setIsAdvancedModeLocalStorageKey(getEditTemplateAdvancedModelKey());
         setWindow(model);
         
model.setTitle(ConstantsManager.getInstance().getConstants().editTemplateTitle());
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 13e5850..e2c73f0 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
@@ -104,7 +104,7 @@
 
     VmInterfaceCreatingManager defaultNetworkCreatingManager = new 
VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
         @Override
-        public void vnicCreated(Guid vmId) {
+        public void vnicCreated(Guid vmId, UnitVmModel unitVmModel) {
             if (getWindow() != null) {
                 getWindow().stopProgress();
             }
@@ -563,7 +563,7 @@
         }
 
         VM vm = (VM) selectedItem.getEntity();
-        UnitVmModel windowModel = new UnitVmModel(new 
UserPortalNewTemplateVmModelBehavior(vm));
+        UnitVmModel windowModel = new UnitVmModel(new 
UserPortalNewTemplateVmModelBehavior(vm), this);
         setWindow(windowModel);
         
windowModel.setTitle(ConstantsManager.getInstance().getConstants().newTemplateTitle());
         windowModel.setHelpTag(HelpTag.new_template);
@@ -761,7 +761,7 @@
 
     private void newInternal()
     {
-        UnitVmModel model = new UnitVmModel(new 
UserPortalNewVmModelBehavior());
+        UnitVmModel model = new UnitVmModel(new 
UserPortalNewVmModelBehavior(), this);
         model.getVmType().setSelectedItem(VmType.Server);
         model.setTitle(ConstantsManager.getInstance()
                 .getConstants().newVmTitle());
@@ -822,7 +822,7 @@
     }
 
     private void vmInitLoaded(VM vm) {
-        UnitVmModel model = new UnitVmModel(new 
UserPortalExistingVmModelBehavior(vm));
+        UnitVmModel model = new UnitVmModel(new 
UserPortalExistingVmModelBehavior(vm), this);
 
         model.setTitle(ConstantsManager.getInstance()
                                .getConstants().editVmTitle());
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseInterfaceCreatingManager.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseInterfaceCreatingManager.java
index a21da7f..5eadf24 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseInterfaceCreatingManager.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseInterfaceCreatingManager.java
@@ -29,7 +29,7 @@
     }
 
     public static interface PostVnicCreatedCallback {
-        void vnicCreated(Guid vmId);
+        void vnicCreated(Guid vmId, UnitVmModel unitVmModel);
 
         void queryFailed();
     }
@@ -93,7 +93,7 @@
                     }
                 }
 
-                doNicManipulation(createVnicParameters, updateVnicParameters, 
removeVnicParameters, unitVmModel.getIsNew(), vmId);
+                doNicManipulation(createVnicParameters, updateVnicParameters, 
removeVnicParameters, unitVmModel.getIsNew(), vmId, unitVmModel);
             }
 
         };
@@ -112,5 +112,6 @@
             final ArrayList<VdcActionParametersBase> updateVnicParameters,
             final ArrayList<VdcActionParametersBase> removeVnicParameters,
             final boolean isAddingNewVm,
-            final Guid id);
+            final Guid id,
+            final UnitVmModel unitVmModel);
 }
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 768136f..3078b339 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
@@ -5,6 +5,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
@@ -229,10 +230,29 @@
         updateCpuSharesAvailability();
         updateVirtioScsiAvailability();
         updateOSValues();
+        updateInstanceImages();
 
         instanceTypeManager.updateAll();
     }
 
+    private void updateInstanceImages() {
+        AsyncDataProvider.getInstance().getVmDiskList(new 
AsyncQuery(getModel(), new INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object returnValue) {
+                List<InstanceImageLineModel> imageLineModels = new 
ArrayList<>();
+
+                for (Disk disk : ((ArrayList<Disk>) returnValue)) {
+                    InstanceImageLineModel lineModel = new 
InstanceImageLineModel(getModel().getInstanceImages());
+                    lineModel.initialize(disk, getVm());
+                    imageLineModels.add(lineModel);
+                }
+
+                getModel().getInstanceImages().setItems(imageLineModels);
+                getModel().getInstanceImages().setVm(getVm());
+            }
+        }), getVm().getId());
+    }
+
     @Override
     protected void changeDefualtHost() {
         super.changeDefualtHost();
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 e20561e..b12eef3 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
@@ -416,6 +416,16 @@
         return instanceTypes;
     }
 
+    private InstanceImagesModel instanceImages;
+
+    public InstanceImagesModel getInstanceImages() {
+        return instanceImages;
+    }
+
+    public void setInstanceImages(InstanceImagesModel instanceImages) {
+        this.instanceImages = instanceImages;
+    }
+
     private NotChangableForVmInPoolListModel<VmType> vmType;
 
     public void setVmType(NotChangableForVmInPoolListModel<VmType> vmType) {
@@ -1343,7 +1353,7 @@
 
     private boolean numaChanged = false;
 
-    public UnitVmModel(VmModelBehaviorBase behavior) {
+    public UnitVmModel(VmModelBehaviorBase behavior, ListModel parentModel) {
         Frontend.getInstance().getQueryStartedEvent().addListener(this);
         Frontend.getInstance().getQueryCompleteEvent().addListener(this);
 
@@ -1453,6 +1463,7 @@
         getTemplate().getSelectedItemChangedEvent().addListener(this);
 
         setInstanceTypes(new NotChangableForVmInPoolListModel<InstanceType>());
+        setInstanceImages(new InstanceImagesModel(this, parentModel));
 
         setQuota(new NotChangableForVmInPoolListModel<Quota>());
         getQuota().setIsAvailable(false);
@@ -2072,6 +2083,7 @@
 
         updateWatchdogModels();
         updateBootMenu();
+        getInstanceImages().updateActionsAvailability();
     }
 
     private void updateBootMenu() {
@@ -2165,6 +2177,7 @@
         updateWatchdogModels(osType);
 
         vmInitEnabledChanged();
+        getInstanceImages().updateActionsAvailability();
     }
 
     private void updateWatchdogModels() {
@@ -2621,7 +2634,6 @@
                 }
             }
         }
-
 
         setValidTab(TabName.GENERAL_TAB, isValidTab(TabName.GENERAL_TAB)
                 && getDataCenterWithClustersList().getIsValid()
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceCreatingManager.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceCreatingManager.java
index 9c7952e..6db9738 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceCreatingManager.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceCreatingManager.java
@@ -55,7 +55,8 @@
             final ArrayList<VdcActionParametersBase> updateVnicParameters,
             final ArrayList<VdcActionParametersBase> removeVnicParameters,
             final boolean isAddingNewVm,
-            final Guid id) {
+            final Guid id,
+            final UnitVmModel unitVmModel) {
         Frontend.getInstance().runMultipleActions(VdcActionType.AddVmInterface,
                 createVnicParameters,
                 new IFrontendActionAsyncCallback() {
@@ -78,11 +79,11 @@
                                                             
VmOperationParameterBase reorderParams = new VmOperationParameterBase(id);
                                                             
Frontend.getInstance().runAction(VdcActionType.ReorderVmNics, reorderParams, 
new IFrontendActionAsyncCallback() {
                                                                 public void 
executed(FrontendActionAsyncResult result) {
-                                                                    
getCallback().vnicCreated(id);
+                                                                    
getCallback().vnicCreated(id, unitVmModel);
                                                                 }
                                                             });
                                                         } else {
-                                                            
getCallback().vnicCreated(id);
+                                                            
getCallback().vnicCreated(id, unitVmModel);
                                                         }
                                                     }
                                                 }, this);
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 955ccfd..49ed9da 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
@@ -428,10 +428,11 @@
     VmInterfaceCreatingManager defaultNetworkCreatingManager =
             new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
                 @Override
-                public void vnicCreated(Guid vmId) {
+                public void vnicCreated(Guid vmId, UnitVmModel unitVmModel) {
                     getWindow().stopProgress();
                     cancel();
                     updateActionAvailability();
+                    executeDiskModifications(vmId, unitVmModel);
                 }
 
                 @Override
@@ -444,8 +445,8 @@
     VmInterfaceCreatingManager addVmFromBlankTemplateNetworkManager =
             new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
                 @Override
-                public void vnicCreated(Guid vmId) {
-                    // do nothing
+                public void vnicCreated(Guid vmId, UnitVmModel unitVmModel) {
+                    executeDiskModifications(vmId, unitVmModel);
                 }
 
                 @Override
@@ -732,7 +733,7 @@
             return;
         }
 
-        UnitVmModel model = new UnitVmModel(new NewVmModelBehavior());
+        UnitVmModel model = new UnitVmModel(new NewVmModelBehavior(), this);
         
model.setTitle(ConstantsManager.getInstance().getConstants().newVmTitle());
         model.setHelpTag(HelpTag.new_vm);
         model.setHashName("new_vm"); //$NON-NLS-1$
@@ -814,7 +815,7 @@
     }
 
     private void vmInitLoaded(VM vm) {
-        UnitVmModel model = new UnitVmModel(new ExistingVmModelBehavior(vm));
+        UnitVmModel model = new UnitVmModel(new ExistingVmModelBehavior(vm), 
this);
         model.getVmType().setSelectedItem(vm.getVmType());
         model.setVmAttachedToPool(vm.getVmPoolId() != null);
         model.setIsAdvancedModeLocalStorageKey("wa_vm_dialog");  //$NON-NLS-1$
@@ -1319,7 +1320,7 @@
             return;
         }
 
-        UnitVmModel model = new UnitVmModel(new 
NewTemplateVmModelBehavior(vm));
+        UnitVmModel model = new UnitVmModel(new 
NewTemplateVmModelBehavior(vm), this);
 
         setWindow(model);
         
model.setTitle(ConstantsManager.getInstance().getConstants().newTemplateTitle());
@@ -2080,7 +2081,7 @@
 
         model.startProgress(null);
 
-        VM vm = getcurrentVm();
+        final VM vm = getcurrentVm();
         
vm.setUseLatestVersion(constants.latestTemplateVersionName().equals(model.getTemplate().getSelectedItem().getTemplateVersionName()));
 
         AddVmParameters parameters = new AddVmParameters(vm);
@@ -2097,7 +2098,13 @@
                 model.getProvisioning().getEntity() ? 
VdcActionType.AddVmFromTemplate : VdcActionType.AddVm,
                 parameters,
                 createUnitVmModelNetworkAsyncCallback(vm, model),
-                this);
+        this);
+    }
+
+    private void executeDiskModifications(Guid vmId, UnitVmModel model) {
+        // this is done on the background - the window is not visible anymore
+        getcurrentVm().setId(vmId);
+        model.getInstanceImages().executeDiskModifications(getcurrentVm());
     }
 
     private UnitVmModelNetworkAsyncCallback 
createUnitVmModelNetworkAsyncCallback(VM vm, UnitVmModel model) {
@@ -2109,9 +2116,7 @@
                     VdcReturnValueBase returnValue = result.getReturnValue();
                     if (returnValue != null && returnValue.getSucceeded()) {
                         setWindow(null);
-                        setGuideContext(returnValue.getActionReturnValue());
                         updateActionAvailability();
-                        getGuideCommand().execute();
                     } else {
                         cancel();
                     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/instancetypes/InstanceTypeInterfaceCreatingManager.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/instancetypes/InstanceTypeInterfaceCreatingManager.java
index df4b2c5..7eb71ae 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/instancetypes/InstanceTypeInterfaceCreatingManager.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/instancetypes/InstanceTypeInterfaceCreatingManager.java
@@ -43,7 +43,8 @@
             final ArrayList<VdcActionParametersBase> updateVnicParameters,
             final ArrayList<VdcActionParametersBase> removeVnicParameters,
             final boolean isAddingNewVm,
-            final Guid id) {
+            final Guid id,
+            final UnitVmModel unitVmModel) {
         
Frontend.getInstance().runMultipleActions(VdcActionType.AddVmTemplateInterface,
                 createVnicParameters,
                 new IFrontendActionAsyncCallback() {
@@ -63,7 +64,7 @@
                                                     @Override
                                                     public void 
executed(FrontendActionAsyncResult result) {
                                                         // no need to reorder 
- it will be done for the VMs when creating from instance type
-                                                        
getCallback().vnicCreated(id);
+                                                        
getCallback().vnicCreated(id, unitVmModel);
                                                     }
                                                 }, this);
                                     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmModelBehaviorTest.java
 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmModelBehaviorTest.java
index 74e7a32..ecd1f51 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmModelBehaviorTest.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/test/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseVmModelBehaviorTest.java
@@ -69,7 +69,7 @@
         final VDSGroup cluster = new VDSGroup();
         cluster.setcompatibility_version(Version.v3_5);
 
-        UnitVmModel model = new UnitVmModel(behavior) {
+        UnitVmModel model = new UnitVmModel(behavior, null) {
             @Override
             public EntityModel<Boolean> getIsSingleQxlEnabled() {
                 return new EntityModel<Boolean>(true);
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
index cdeb851..8db8caa 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/gin/uicommon/VirtualMachineModule.java
@@ -25,6 +25,9 @@
 import org.ovirt.engine.ui.uicommonweb.models.Model;
 import org.ovirt.engine.ui.uicommonweb.models.configure.PermissionListModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.configure.scheduling.affinity_groups.list.VmAffinityGroupListModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.AttachDiskModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.EditDiskModel;
+import org.ovirt.engine.ui.uicommonweb.models.vms.NewDiskModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmAppListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmEventListModel;
@@ -42,6 +45,7 @@
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.scheduling.AffinityGroupPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.storage.DisksAllocationPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.CloneVmPopupPresenterWidget;
+import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.SingleSelectionVmDiskAttachPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmChangeCDPopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmClonePopupPresenterWidget;
 import 
org.ovirt.engine.ui.webadmin.section.main.presenter.popup.vm.VmDiskAttachPopupPresenterWidget;
@@ -93,7 +97,10 @@
             final Provider<VmNextRunConfigurationPresenterWidget> 
nextRunProvider,
             final Provider<CloneVmPopupPresenterWidget> cloneVmProvider,
             final Provider<VmListModel> modelProvider,
-            final Provider<CommonModel> commonModelProvider) {
+            final Provider<CommonModel> commonModelProvider,
+            final Provider<VmDiskPopupPresenterWidget> newDiskPopupProvider,
+            final Provider<SingleSelectionVmDiskAttachPopupPresenterWidget> 
attachDiskPopupProvider,
+            final Provider<VmDiskRemovePopupPresenterWidget> 
removeDiskConfirmPopupProvider) {
         MainTabModelProvider<VM, VmListModel> result =
                 new MainTabModelProvider<VM, VmListModel>(eventBus, 
defaultConfirmPopupProvider, commonModelProvider) {
                     @Override
@@ -113,10 +120,14 @@
                             return createSnapshotPopupProvider.get();
                         } else if (lastExecutedCommand == 
getModel().getMigrateCommand()) {
                             return migratePopupProvider.get();
-                        } else if (lastExecutedCommand == 
getModel().getNewVmCommand()) {
-                            return newVmPopupProvider.get();
-                        } else if (lastExecutedCommand == 
getModel().getEditCommand()) {
-                            return newVmPopupProvider.get();
+                        } else if (lastExecutedCommand == 
getModel().getEditCommand() || lastExecutedCommand == 
getModel().getNewVmCommand() || "OnSave".equals(lastExecutedCommand.getName())) 
{ //$NON-NLS-1$
+                            if (windowModel instanceof AttachDiskModel) {
+                                return attachDiskPopupProvider.get();
+                            } else if ((windowModel instanceof NewDiskModel) 
|| (windowModel instanceof EditDiskModel)) {
+                                return newDiskPopupProvider.get();
+                            } else {
+                                return newVmPopupProvider.get();
+                            }
                         } else if (lastExecutedCommand == 
getModel().getGuideCommand()) {
                             return guidePopupProvider.get();
                         } else if (windowModel instanceof VncInfoModel) {
@@ -140,6 +151,8 @@
                             return removeConfirmPopupProvider.get();
                         } else if 
("OnSave".equals(lastExecutedCommand.getName())) { //$NON-NLS-1$
                             return nextRunProvider.get();
+                        } else if (lastExecutedCommand == 
getModel().getEditCommand()) {
+                            return removeDiskConfirmPopupProvider.get();
                         } else {
                             return super.getConfirmModelPopup(source, 
lastExecutedCommand);
                         }


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

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

Reply via email to