Martin Mucha has uploaded a new change for review.

Change subject: use UpdateAndReorderVmNicsCommand
......................................................................

use UpdateAndReorderVmNicsCommand

Change-Id: Ide74e4a620e4d6175cbcdeccf72403991b0077b8
https://bugzilla.redhat.com/show_bug.cgi?id=999969
Signed-off-by: Martin Mucha <mmu...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
D 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseInterfaceCreatingManager.java
D 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallback.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UpdateAndReorderVmNicsAsyncCallback.java
D 
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
D 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/instancetypes/InstanceTypeInterfaceCreatingManager.java
8 files changed, 198 insertions(+), 413 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/35193/1

diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
index 51bb1ba..bdb38a6 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/configure/instancetypes/InstanceTypeListModel.java
@@ -1,5 +1,10 @@
 package org.ovirt.engine.ui.uicommonweb.models.configure.instancetypes;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
 import org.ovirt.engine.core.common.action.AddVmTemplateParameters;
 import org.ovirt.engine.core.common.action.UpdateVmTemplateParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
@@ -33,23 +38,16 @@
 import org.ovirt.engine.ui.uicommonweb.models.ConfirmationModel;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListWithDetailsModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.BaseInterfaceCreatingManager;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallback;
+import 
org.ovirt.engine.ui.uicommonweb.models.vms.UpdateAndReorderVmNicsAsyncCallback;
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.VmBasedWidgetSwitchModeCommand;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmModelBehaviorBase;
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.ExistingInstanceTypeModelBehavior;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.InstanceTypeInterfaceCreatingManager;
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes.NewInstanceTypeModelBehavior;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
 import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
 import org.ovirt.engine.ui.uicompat.ObservableCollection;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
 
 public class InstanceTypeListModel extends ListWithDetailsModel {
 
@@ -59,21 +57,27 @@
 
     private UICommand deleteInstanceTypeCommand;
 
-    private InstanceTypeInterfaceCreatingManager addInstanceTypeNetworkManager 
=
-            new InstanceTypeInterfaceCreatingManager(new 
BaseInterfaceCreatingManager.PostVnicCreatedCallback() {
-                @Override
-                public void vnicCreated(Guid vmId) {
-                    getWindow().stopProgress();
-                    cancel();
-                    updateActionAvailability();
-                }
+    //TODO MM: !!!VALIDITY PROBLEM!!! ~ need to either subclass 
UpdateAndReorderVmNicsCommad or add parameter — for this class this command 
must not calculate default type and supported interface types.
+    //TODO MM: remove subclass creation.
+    private UpdateAndReorderVmNicsAsyncCallback 
createUpdateAndReorderVmNicsAsyncCallback(UnitVmModel model,
+            Guid vmId) {
 
-                @Override
-                public void queryFailed() {
-                    getWindow().stopProgress();
-                    cancel();
-                }
-            });
+        return new UpdateAndReorderVmNicsAsyncCallback(model, vmId, false) {
+            @Override
+            protected void failed() {
+                getWindow().stopProgress();
+                cancel();
+            }
+
+            @Override
+            protected void updateDone(Guid vmIdToUpdate) {
+                getWindow().stopProgress();
+                cancel();
+                updateActionAvailability();
+            }
+        };
+
+    }
 
     public InstanceTypeListModel() {
         setDefaultSearchString("Instancetypes:"); //$NON-NLS-1$
@@ -237,7 +241,7 @@
         Frontend.getInstance().runAction(
                 VdcActionType.AddVmTemplate,
                 addInstanceTypeParameters,
-                new UnitVmModelNetworkAsyncCallback(model, 
addInstanceTypeNetworkManager),
+                createUpdateAndReorderVmNicsAsyncCallback(model, null),
                 this
         );
     }
@@ -269,7 +273,7 @@
         Frontend.getInstance().runAction(
                 VdcActionType.UpdateVmTemplate,
                 updateInstanceTypeParameters,
-                new UnitVmModelNetworkAsyncCallback(model, 
addInstanceTypeNetworkManager, instanceType.getId()),
+                createUpdateAndReorderVmNicsAsyncCallback(model, 
instanceType.getId()),
                 this
         );
     }
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 eec8c7a..915b1c1 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
@@ -64,7 +64,7 @@
 import org.ovirt.engine.ui.uicommonweb.models.vms.DataCenterWithCluster;
 import org.ovirt.engine.ui.uicommonweb.models.vms.RunOnceModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallback;
+import 
org.ovirt.engine.ui.uicommonweb.models.vms.UpdateAndReorderVmNicsAsyncCallback;
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalExistingVmModelBehavior;
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalNewTemplateVmModelBehavior;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalNewVmModelBehavior;
@@ -75,7 +75,6 @@
 import 
org.ovirt.engine.ui.uicommonweb.models.vms.VmBasedWidgetSwitchModeCommand;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmDiskListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmGeneralModel;
-import org.ovirt.engine.ui.uicommonweb.models.vms.VmInterfaceCreatingManager;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmInterfaceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmMonitorModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmNextRunConfigurationModel;
@@ -102,22 +101,27 @@
      *  when the VM has next-run configuration */
     private VM editedVm;
 
-    VmInterfaceCreatingManager defaultNetworkCreatingManager = new 
VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
-        @Override
-        public void vnicCreated(Guid vmId) {
-            if (getWindow() != null) {
-                getWindow().stopProgress();
-            }
-            cancel();
-            updateActionAvailability();
-        }
+    //TODO MM: remove subclass creation.
+    private UpdateAndReorderVmNicsAsyncCallback 
createUpdateAndReorderVmNicsAsyncCallback(UnitVmModel model,
+            Guid vmId) {
+        return new UpdateAndReorderVmNicsAsyncCallback(model, vmId) {
 
-        @Override
-        public void queryFailed() {
-            stopProgress(UserPortalListModel.this);
-            cancel();
-        }
-    });
+            @Override
+            protected void failed() {
+                stopProgress(UserPortalListModel.this);
+                cancel();
+            }
+
+            @Override
+            protected void updateDone(Guid vmIdToUpdate) {
+                if (getWindow() != null) {
+                    getWindow().stopProgress();
+                }
+                cancel();
+                updateActionAvailability();
+            }
+        };
+    }
 
     public Event<EventArgs> getSearchCompletedEvent()
     {
@@ -1151,7 +1155,7 @@
         Frontend.getInstance().runAction(
                 model.getProvisioning().getEntity() ? 
VdcActionType.AddVmFromTemplate : VdcActionType.AddVm,
                         parameters,
-                        new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager),
+                        createUpdateAndReorderVmNicsAsyncCallback(model, null),
                         this);
     }
 
@@ -1170,14 +1174,16 @@
                         public void executed(FrontendActionAsyncResult result) 
{
                             VmManagementParametersBase param = 
getUpdateVmParameters(applyCpuChangesLater);
 
-                            
Frontend.getInstance().runAction(VdcActionType.UpdateVm, param, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
gettempVm().getId()), this);
+                            UpdateAndReorderVmNicsAsyncCallback callback = 
createUpdateAndReorderVmNicsAsyncCallback(model, gettempVm().getId());
+                            
Frontend.getInstance().runAction(VdcActionType.UpdateVm, param, callback, this);
                         }
                     }, this);
         }
         else
         {
             VmManagementParametersBase param = 
getUpdateVmParameters(applyCpuChangesLater);
-            Frontend.getInstance().runAction(VdcActionType.UpdateVm, param, 
new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
gettempVm().getId()), this);
+            UpdateAndReorderVmNicsAsyncCallback callback = 
createUpdateAndReorderVmNicsAsyncCallback(model, gettempVm().getId());
+            Frontend.getInstance().runAction(VdcActionType.UpdateVm, param, 
callback, this);
         }
     }
 
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
deleted file mode 100644
index a21da7f..0000000
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/BaseInterfaceCreatingManager.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package org.ovirt.engine.ui.uicommonweb.models.vms;
-
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
-import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
-import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.ui.frontend.AsyncQuery;
-import org.ovirt.engine.ui.frontend.INewAsyncCallback;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-public abstract class BaseInterfaceCreatingManager {
-
-    protected VmInterfaceType defaultType;
-    protected Collection<VmInterfaceType> supportedInterfaceTypes;
-    private PostVnicCreatedCallback callback;
-
-    public BaseInterfaceCreatingManager(PostVnicCreatedCallback callback) {
-        this.callback = callback;
-    }
-
-    public PostVnicCreatedCallback getCallback() {
-        return callback;
-    }
-
-    public static interface PostVnicCreatedCallback {
-        void vnicCreated(Guid vmId);
-
-        void queryFailed();
-    }
-
-    public void updateVnics(final Guid vmId,
-            final Iterable<VnicInstanceType> vnicsWithProfiles,
-            final UnitVmModel unitVmModel) {
-        AsyncQuery getNicsQuery = new AsyncQuery();
-        getNicsQuery.asyncCallback = new INewAsyncCallback() {
-            @Override
-            public void onSuccess(Object model, Object result) {
-                Iterable<VmNetworkInterface> existingVnics = 
(Iterable<VmNetworkInterface>) result;
-                if (existingVnics == null) {
-                    existingVnics = new ArrayList<VmNetworkInterface>();
-                }
-
-                Map<String, VmNetworkInterface> existingVnicForName = new 
HashMap<String, VmNetworkInterface>();
-                for (VmNetworkInterface vnic : existingVnics) {
-                    existingVnicForName.put(vnic.getName(), vnic);
-                }
-
-                final ArrayList<VdcActionParametersBase> createVnicParameters =
-                        new ArrayList<VdcActionParametersBase>();
-                final ArrayList<VdcActionParametersBase> updateVnicParameters =
-                        new ArrayList<VdcActionParametersBase>();
-                final ArrayList<VdcActionParametersBase> removeVnicParameters =
-                        new ArrayList<VdcActionParametersBase>();
-                final Set<String> vnicsEncountered = new HashSet<String>();
-
-                // iterate over edited VNICs, see if any need to be added or 
have been assigned a different profile
-                for (VnicInstanceType vnicWithProfile : vnicsWithProfiles) {
-                    VmNetworkInterface editedVnic = 
vnicWithProfile.getNetworkInterface();
-                    String vnicName = editedVnic.getName();
-                    VmNetworkInterface existingVnic = 
existingVnicForName.get(vnicName);
-                    if (existingVnic == null) {
-                        editedVnic.setType(defaultType == null ? null : 
defaultType.getValue());
-                        
createVnicParameters.add(createAddInterfaceParameter(vmId, editedVnic));
-                    } else {
-                        vnicsEncountered.add(vnicName);
-                        Guid existingProfileId = 
existingVnic.getVnicProfileId();
-                        Guid editedProfileId = editedVnic.getVnicProfileId();
-                        if (supportedInterfaceTypes != null && 
!supportedInterfaceTypes.contains(VmInterfaceType.forValue(existingVnic.getType())))
 {
-                            existingVnic.setType(defaultType == null ? null : 
defaultType.getValue());
-                        } else if (supportedInterfaceTypes == null) {
-                            existingVnic.setType(defaultType == null ? null : 
defaultType.getValue());
-                        }
-
-                        if ((editedProfileId == null && existingProfileId != 
null)
-                                || (editedProfileId != null && 
!editedProfileId.equals(existingProfileId))) {
-                            existingVnic.setVnicProfileId(editedProfileId);
-                            
existingVnic.setNetworkName(editedVnic.getNetworkName());
-                            
updateVnicParameters.add(createAddInterfaceParameter(vmId, existingVnic));
-                        }
-                    }
-                }
-
-                // iterate over existing VNICs, see if any have not been 
encountered and thus removed in editing
-                for (VmNetworkInterface existingVnic : existingVnics) {
-                    if (!vnicsEncountered.contains(existingVnic.getName())) {
-                        
removeVnicParameters.add(createRemoveInterfaceParameter(vmId, 
existingVnic.getId()));
-                    }
-                }
-
-                doNicManipulation(createVnicParameters, updateVnicParameters, 
removeVnicParameters, unitVmModel.getIsNew(), vmId);
-            }
-
-        };
-
-        getNics(getNicsQuery, vmId, unitVmModel);
-    }
-
-    protected abstract VdcActionParametersBase 
createAddInterfaceParameter(Guid id, VmNetworkInterface editedVnic);
-
-    protected abstract VdcActionParametersBase 
createRemoveInterfaceParameter(Guid id, Guid nicId);
-
-    protected abstract void getNics(AsyncQuery getNicsQuery, Guid id, 
UnitVmModel unitVmModel);
-
-    protected abstract void doNicManipulation(
-            ArrayList<VdcActionParametersBase> createVnicParameters,
-            final ArrayList<VdcActionParametersBase> updateVnicParameters,
-            final ArrayList<VdcActionParametersBase> removeVnicParameters,
-            final boolean isAddingNewVm,
-            final Guid id);
-}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallback.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallback.java
deleted file mode 100644
index a17cdcd..0000000
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallback.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.ovirt.engine.ui.uicommonweb.models.vms;
-
-import org.ovirt.engine.core.common.action.VdcReturnValueBase;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
-import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
-
-public class UnitVmModelNetworkAsyncCallback implements 
IFrontendActionAsyncCallback {
-
-    private final UnitVmModel unitVmModel;
-    private final BaseInterfaceCreatingManager networkCreatingManager;
-    private final Guid idToUpdate;
-
-    public UnitVmModelNetworkAsyncCallback(final UnitVmModel unitVmModel,
-            final BaseInterfaceCreatingManager networkCreatingManager) {
-
-        this(unitVmModel, networkCreatingManager, null);
-    }
-
-    public UnitVmModelNetworkAsyncCallback(final UnitVmModel unitVmModel,
-            final BaseInterfaceCreatingManager networkCreatingManager,
-            final Guid idToUpdate) {
-
-        this.unitVmModel = unitVmModel;
-        this.networkCreatingManager = networkCreatingManager;
-        this.idToUpdate = idToUpdate;
-    }
-
-    @Override
-    public void executed(FrontendActionAsyncResult result) {
-        VdcReturnValueBase returnValue = result.getReturnValue();
-        if (returnValue != null && returnValue.getSucceeded()) {
-            networkCreatingManager.updateVnics((idToUpdate == null) ? (Guid) 
returnValue.getActionReturnValue()
-                    : idToUpdate, 
unitVmModel.getNicsWithLogicalNetworks().getItems(), unitVmModel);
-        } else {
-            networkCreatingManager.getCallback().queryFailed();
-        }
-    }
-
-}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UpdateAndReorderVmNicsAsyncCallback.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UpdateAndReorderVmNicsAsyncCallback.java
new file mode 100644
index 0000000..9050639
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UpdateAndReorderVmNicsAsyncCallback.java
@@ -0,0 +1,97 @@
+package org.ovirt.engine.ui.uicommonweb.models.vms;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.ovirt.engine.core.common.action.UpdateAndReorderVmNicsParam;
+import org.ovirt.engine.core.common.action.VdcActionType;
+import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.ui.frontend.Frontend;
+import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
+import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
+
+public abstract class UpdateAndReorderVmNicsAsyncCallback implements 
IFrontendActionAsyncCallback {
+
+    private final UnitVmModel unitVmModel;
+    private final Guid vmId;
+    private boolean reorderNics;
+
+    /**
+     * creates callback from given unitVmModel, with vmId taken from 
VdcReturnValueBase
+     * and with nics reordering enabled for new VMs.
+     */
+    public UpdateAndReorderVmNicsAsyncCallback(UnitVmModel unitVmModel) {
+        this(unitVmModel, null);
+    }
+
+    //TODO MM: check vmId /returnValue.getAcionReturnValue inconsistency.
+
+    /**
+     * creates callback from given unitVmModel, with given vmId
+     * and with nics reordering enabled for new VMs.
+     */
+    public UpdateAndReorderVmNicsAsyncCallback(UnitVmModel unitVmModel, Guid 
vmId) {
+        //reordering occur only for new VMs.
+        this(unitVmModel, vmId, unitVmModel.getIsNew());
+    }
+
+    public UpdateAndReorderVmNicsAsyncCallback(UnitVmModel unitVmModel, Guid 
vmId, boolean reorderNics) {
+        this.reorderNics = reorderNics;
+        this.vmId = vmId;
+        this.unitVmModel = unitVmModel;
+    }
+
+    @Override
+    public void executed(FrontendActionAsyncResult result) {
+        VdcReturnValueBase returnValue = result.getReturnValue();
+        boolean succeeded = returnValue != null && returnValue.getSucceeded();
+        if (succeeded) {
+            succeeded(returnValue);
+        } else {
+            //TODO MM: add return value as a parameter.
+            failed();
+        }
+    }
+
+    protected void succeeded(VdcReturnValueBase returnValue) {
+        final Guid vmIdToUpdate = (vmId == null) ? (Guid) 
returnValue.getActionReturnValue() : vmId;
+        UpdateAndReorderVmNicsParam parameters = 
createUpdateAndReorderVmNicsParam(vmIdToUpdate);
+
+        Frontend.getInstance().runAction(VdcActionType.UpdateAndReorderVmNics, 
parameters, new IFrontendActionAsyncCallback(){
+            @Override
+            public void executed(FrontendActionAsyncResult result) {
+                updateDone(vmIdToUpdate);
+            }
+        });
+    }
+
+    private UpdateAndReorderVmNicsParam createUpdateAndReorderVmNicsParam(Guid 
vmIdToUpdate) {
+        UpdateAndReorderVmNicsParam parameters = new 
UpdateAndReorderVmNicsParam();
+        parameters.vmId = vmIdToUpdate;
+        parameters.osType = unitVmModel.getOSType().getSelectedItem();
+        parameters.version = 
unitVmModel.getDataCenterWithClustersList().getSelectedItem().getCluster().getcompatibility_version();
+        Collection<VnicInstanceType> vnicsWithProfiles = 
unitVmModel.getNicsWithLogicalNetworks().getItems();
+        parameters.updatedVmNetworkInterfaces = 
vnicsWithProfilesToNetworkInterfaces(vnicsWithProfiles);
+        parameters.reorderNics = reorderNics;
+        return parameters;
+    }
+
+    protected void updateDone(Guid vmIdToUpdate) {
+
+    }
+
+    private List<VmNetworkInterface> 
vnicsWithProfilesToNetworkInterfaces(Collection<VnicInstanceType> 
vnicsWithProfiles) {
+        List<VmNetworkInterface> result = new 
ArrayList<>(vnicsWithProfiles.size());
+        for (VnicInstanceType vnicsWithProfile : vnicsWithProfiles) {
+            result.add(vnicsWithProfile.getNetworkInterface());
+        }
+        return result;
+    }
+
+    protected void failed() {
+        //do nothing.
+    }
+}
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
deleted file mode 100644
index 9c7952e..0000000
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmInterfaceCreatingManager.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.ovirt.engine.ui.uicommonweb.models.vms;
-
-import org.ovirt.engine.core.common.action.AddVmInterfaceParameters;
-import org.ovirt.engine.core.common.action.RemoveVmInterfaceParameters;
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
-import org.ovirt.engine.core.common.action.VdcActionType;
-import org.ovirt.engine.core.common.action.VmOperationParameterBase;
-import org.ovirt.engine.core.common.businessentities.network.VmInterfaceType;
-import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.ui.frontend.AsyncQuery;
-import org.ovirt.engine.ui.frontend.Frontend;
-import org.ovirt.engine.ui.frontend.INewAsyncCallback;
-import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
-import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
-import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-public class VmInterfaceCreatingManager extends BaseInterfaceCreatingManager {
-
-    public VmInterfaceCreatingManager(PostVnicCreatedCallback callback) {
-        super(callback);
-    }
-
-    @Override
-    protected VdcActionParametersBase createAddInterfaceParameter(Guid id, 
VmNetworkInterface editedVnic) {
-        editedVnic.setVmTemplateId(null);
-        return new AddVmInterfaceParameters(id, editedVnic);
-    }
-
-    @Override
-    protected VdcActionParametersBase createRemoveInterfaceParameter(Guid id, 
Guid nicId) {
-        return new RemoveVmInterfaceParameters(id, nicId);
-    }
-
-    protected void getNics(final AsyncQuery getNicsQuery, final Guid vmId, 
final UnitVmModel unitVmModel) {
-        AsyncQuery osInfoQuery = new AsyncQuery(new INewAsyncCallback() {
-               @Override
-               public void onSuccess(Object model, Object returnValue) {
-                   defaultType = 
AsyncDataProvider.getInstance().getDefaultNicType((Collection<VmInterfaceType>) 
returnValue);
-                       supportedInterfaceTypes = (Collection<VmInterfaceType>) 
returnValue;
-                       
AsyncDataProvider.getInstance().getVmNicList(getNicsQuery, vmId);
-                   }
-           });
-       
AsyncDataProvider.getInstance().getNicTypeList(unitVmModel.getOSType().getSelectedItem(),
-                       
unitVmModel.getDataCenterWithClustersList().getSelectedItem().getCluster().getcompatibility_version(),
-                       osInfoQuery);
-    }
-
-    @Override
-    protected void doNicManipulation(
-            final ArrayList<VdcActionParametersBase> createVnicParameters,
-            final ArrayList<VdcActionParametersBase> updateVnicParameters,
-            final ArrayList<VdcActionParametersBase> removeVnicParameters,
-            final boolean isAddingNewVm,
-            final Guid id) {
-        Frontend.getInstance().runMultipleActions(VdcActionType.AddVmInterface,
-                createVnicParameters,
-                new IFrontendActionAsyncCallback() {
-
-                    @Override
-                    public void executed(FrontendActionAsyncResult result) {
-                        
Frontend.getInstance().runMultipleActions(VdcActionType.UpdateVmInterface,
-                                updateVnicParameters,
-                                new IFrontendActionAsyncCallback() {
-
-                                    @Override
-                                    public void 
executed(FrontendActionAsyncResult result) {
-                                        
Frontend.getInstance().runMultipleActions(VdcActionType.RemoveVmInterface,
-                                                removeVnicParameters,
-                                                new 
IFrontendActionAsyncCallback() {
-
-                                                    @Override
-                                                    public void 
executed(FrontendActionAsyncResult result) {
-                                                        if (isAddingNewVm) {
-                                                            
VmOperationParameterBase reorderParams = new VmOperationParameterBase(id);
-                                                            
Frontend.getInstance().runAction(VdcActionType.ReorderVmNics, reorderParams, 
new IFrontendActionAsyncCallback() {
-                                                                public void 
executed(FrontendActionAsyncResult result) {
-                                                                    
getCallback().vnicCreated(id);
-                                                                }
-                                                            });
-                                                        } else {
-                                                            
getCallback().vnicCreated(id);
-                                                        }
-                                                    }
-                                                }, this);
-                                    }
-                                }, this);
-                    }
-                }, 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 6be5647..b44f9c8 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
@@ -423,35 +423,6 @@
      *  when the VM has next-run configuration */
     private VM editedVm;
 
-    VmInterfaceCreatingManager defaultNetworkCreatingManager =
-            new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
-                @Override
-                public void vnicCreated(Guid vmId) {
-                    getWindow().stopProgress();
-                    cancel();
-                    updateActionAvailability();
-                }
-
-                @Override
-                public void queryFailed() {
-                    getWindow().stopProgress();
-                    cancel();
-                }
-            });
-
-    VmInterfaceCreatingManager addVmFromBlankTemplateNetworkManager =
-            new VmInterfaceCreatingManager(new 
VmInterfaceCreatingManager.PostVnicCreatedCallback() {
-                @Override
-                public void vnicCreated(Guid vmId) {
-                    // do nothing
-                }
-
-                @Override
-                public void queryFailed() {
-                    // do nothing
-                }
-            });
-
     public VmListModel()
     {
         
setTitle(ConstantsManager.getInstance().getConstants().virtualMachinesTitle());
@@ -2029,7 +2000,9 @@
                                 VmManagementParametersBase updateVmParams = 
vmListModel.getUpdateVmParameters(applyCpuChangesLater);
 
                                 
Frontend.getInstance().runAction(VdcActionType.UpdateVm,
-                                        updateVmParams, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
vm.getId()), vmListModel);
+                                        updateVmParams,
+                                        
createUpdateAndReorderVmNicsAsyncCallback( model, vm.getId()),
+                                        vmListModel);
                             }
                             else
                             {
@@ -2046,8 +2019,31 @@
 
             VmManagementParametersBase updateVmParams = 
getUpdateVmParameters(applyCpuChangesLater);
 
-            Frontend.getInstance().runAction(VdcActionType.UpdateVm, 
updateVmParams, new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager, getcurrentVm().getId()), this);
+            Frontend.getInstance().runAction(VdcActionType.UpdateVm,
+                    updateVmParams,
+                    createUpdateAndReorderVmNicsAsyncCallback(model, 
getcurrentVm().getId()),
+                    this);
         }
+    }
+
+    //TODO MM: remove subclass creation.
+    private UpdateAndReorderVmNicsAsyncCallback 
createUpdateAndReorderVmNicsAsyncCallback(UnitVmModel model,
+            Guid vmId) {
+        return new UpdateAndReorderVmNicsAsyncCallback(model, vmId) {
+
+            @Override
+            protected void failed() {
+                getWindow().stopProgress();
+                cancel();
+            }
+
+            @Override
+            protected void updateDone(Guid vmIdToUpdate) {
+                getWindow().stopProgress();
+                cancel();
+                updateActionAvailability();
+            }
+        };
     }
 
     public VmManagementParametersBase getUpdateVmParameters(boolean 
applyCpuChangesLater) {
@@ -2093,27 +2089,35 @@
                 this);
     }
 
-    private UnitVmModelNetworkAsyncCallback 
createUnitVmModelNetworkAsyncCallback(VM vm, UnitVmModel model) {
+    private UpdateAndReorderVmNicsAsyncCallback 
createUnitVmModelNetworkAsyncCallback(VM vm, UnitVmModel model) {
         if (vm.getVmtGuid().equals(Guid.Empty)) {
-            return new UnitVmModelNetworkAsyncCallback(model, 
addVmFromBlankTemplateNetworkManager) {
+            return new UpdateAndReorderVmNicsAsyncCallback(model) {
                 @Override
                 public void executed(FrontendActionAsyncResult result) {
                     getWindow().stopProgress();
-                    VdcReturnValueBase returnValue = result.getReturnValue();
-                    if (returnValue != null && returnValue.getSucceeded()) {
-                        setWindow(null);
-                        setGuideContext(returnValue.getActionReturnValue());
-                        updateActionAvailability();
-                        getGuideCommand().execute();
-                    } else {
-                        cancel();
-                    }
                     super.executed(result);
+                }
+
+                @Override
+                protected void succeeded(final VdcReturnValueBase returnValue) 
{
+                    setWindow(null);
+                    setGuideContext(returnValue.getActionReturnValue());
+                    updateActionAvailability();
+                    getGuideCommand().execute();
+
+                    super.succeeded(returnValue);
+                }
+
+                @Override
+                protected void failed() {
+                    cancel();
+
+                    super.failed();
                 }
             };
         }
 
-        return new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager);
+        return createUpdateAndReorderVmNicsAsyncCallback(model, null);
     }
 
     protected static void buildVmOnSave(UnitVmModel model, VM vm) {
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
deleted file mode 100644
index df4b2c5..0000000
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/instancetypes/InstanceTypeInterfaceCreatingManager.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.ovirt.engine.ui.uicommonweb.models.vms.instancetypes;
-
-import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters;
-import org.ovirt.engine.core.common.action.RemoveVmTemplateInterfaceParameters;
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
-import org.ovirt.engine.core.common.action.VdcActionType;
-import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.ui.frontend.AsyncQuery;
-import org.ovirt.engine.ui.frontend.Frontend;
-import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
-import org.ovirt.engine.ui.uicommonweb.models.vms.BaseInterfaceCreatingManager;
-import org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModel;
-import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult;
-import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback;
-
-import java.util.ArrayList;
-
-public class InstanceTypeInterfaceCreatingManager extends 
BaseInterfaceCreatingManager {
-
-    public InstanceTypeInterfaceCreatingManager(PostVnicCreatedCallback 
callback) {
-        super(callback);
-    }
-
-    @Override
-    protected VdcActionParametersBase createAddInterfaceParameter(Guid id, 
VmNetworkInterface editedVnic) {
-        return new AddVmTemplateInterfaceParameters(id, editedVnic);
-    }
-
-    @Override
-    protected VdcActionParametersBase createRemoveInterfaceParameter(Guid id, 
Guid nicId) {
-        return new RemoveVmTemplateInterfaceParameters(id, nicId);
-    }
-
-    @Override
-    protected void getNics(final AsyncQuery getNicsQuery, final Guid vmId, 
final UnitVmModel unitVmModel) {
-        AsyncDataProvider.getInstance().getTemplateNicList(getNicsQuery, vmId);
-    }
-
-    @Override
-    protected void doNicManipulation(
-            final ArrayList<VdcActionParametersBase> createVnicParameters,
-            final ArrayList<VdcActionParametersBase> updateVnicParameters,
-            final ArrayList<VdcActionParametersBase> removeVnicParameters,
-            final boolean isAddingNewVm,
-            final Guid id) {
-        
Frontend.getInstance().runMultipleActions(VdcActionType.AddVmTemplateInterface,
-                createVnicParameters,
-                new IFrontendActionAsyncCallback() {
-
-                    @Override
-                    public void executed(FrontendActionAsyncResult result) {
-                        
Frontend.getInstance().runMultipleActions(VdcActionType.UpdateVmTemplateInterface,
-                                updateVnicParameters,
-                                new IFrontendActionAsyncCallback() {
-
-                                    @Override
-                                    public void 
executed(FrontendActionAsyncResult result) {
-                                        
Frontend.getInstance().runMultipleActions(VdcActionType.RemoveVmTemplateInterface,
-                                                removeVnicParameters,
-                                                new 
IFrontendActionAsyncCallback() {
-
-                                                    @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);
-                                                    }
-                                                }, this);
-                                    }
-                                }, this);
-                    }
-                }, this);
-    }
-
-}


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

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

Reply via email to