Lior Vernia has uploaded a new change for review.

Change subject: webadmin: Unified VNIC update logic on VM creation
......................................................................

webadmin: Unified VNIC update logic on VM creation

Towards adding the ability to add and remove VNICs in the add/edit VM
dialogs, the VNIC logic is unified so it is the same for all kinds of
VM creation flows (e.g. from scratch, from template...); VNICs may
always be added, edited or removed.

Change-Id: Ifbd61031572a3462af46f24c64fb5bb80343f086
Signed-off-by: Lior Vernia <lver...@redhat.com>
---
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/UserPortalListModel.java
A 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallback.java
D 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallbacks.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
5 files changed, 129 insertions(+), 241 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/19529/1

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 b04f57e..02ede92 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
@@ -54,13 +54,11 @@
 import org.ovirt.engine.ui.uicommonweb.models.pools.PoolInterfaceListModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.ConsoleModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.DataCenterWithCluster;
-import static 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallbacks.NetworkCreateFrontendAsyncCallback;
-import static 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallbacks.NetworkCreateOrUpdateFrontendActionAsyncCallback;
-import static 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallbacks.NetworkUpdateFrontendAsyncCallback;
 import org.ovirt.engine.ui.uicommonweb.models.vms.NewTemplateVmModelBehavior;
 import org.ovirt.engine.ui.uicommonweb.models.vms.RunOnceModel;
 import org.ovirt.engine.ui.uicommonweb.models.vms.TimeZoneModel;
 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.UserPortalExistingVmModelBehavior;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalNewVmModelBehavior;
 import org.ovirt.engine.ui.uicommonweb.models.vms.UserPortalRunOnceModel;
@@ -1093,7 +1091,7 @@
                 parameters.setMakeCreatorExplicitOwner(true);
                 parameters.setSoundDeviceEnabled((Boolean) 
model.getIsSoundcardEnabled().getEntity());
                 parameters.setConsoleEnabled((Boolean) 
model.getIsConsoleDeviceEnabled().getEntity());
-                Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, 
new NetworkCreateFrontendAsyncCallback(model, defaultNetworkCreatingManager), 
this);
+                Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, 
new UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), 
this);
             }
             else
             {
@@ -1118,7 +1116,7 @@
 
                             param.setSoundDeviceEnabled((Boolean) 
unitVmModel.getIsSoundcardEnabled().getEntity());
                             param.setConsoleEnabled((Boolean) 
unitVmModel.getIsConsoleDeviceEnabled().getEntity());
-                            
Frontend.RunAction(VdcActionType.AddVmFromTemplate, param, new 
NetworkCreateOrUpdateFrontendActionAsyncCallback(unitVmModel, 
defaultNetworkCreatingManager), this);
+                            
Frontend.RunAction(VdcActionType.AddVmFromTemplate, param, new 
UnitVmModelNetworkAsyncCallback(unitVmModel, defaultNetworkCreatingManager), 
this);
                         }
                     };
                     AsyncDataProvider.getTemplateDiskList(_asyncQuery, 
template.getId());
@@ -1132,7 +1130,7 @@
 
                     param.setSoundDeviceEnabled((Boolean) 
model.getIsSoundcardEnabled().getEntity());
                     param.setConsoleEnabled((Boolean) 
model.getIsConsoleDeviceEnabled().getEntity());
-                    Frontend.RunAction(VdcActionType.AddVm, param, new 
NetworkCreateOrUpdateFrontendActionAsyncCallback(model, 
defaultNetworkCreatingManager), this);
+                    Frontend.RunAction(VdcActionType.AddVm, param, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), this);
                 }
             }
         }
@@ -1150,7 +1148,7 @@
                                 param.setSoundDeviceEnabled((Boolean) 
model.getIsSoundcardEnabled().getEntity());
                                 param.setConsoleEnabled((Boolean) 
model.getIsConsoleDeviceEnabled().getEntity());
 
-                                Frontend.RunAction(VdcActionType.UpdateVm, 
param, new NetworkUpdateFrontendAsyncCallback(model, 
defaultNetworkCreatingManager, gettempVm().getId()), this);
+                                Frontend.RunAction(VdcActionType.UpdateVm, 
param, new UnitVmModelNetworkAsyncCallback(model, 
defaultNetworkCreatingManager, gettempVm().getId()), this);
                             }
                         }, this);
             }
@@ -1159,7 +1157,7 @@
                 VmManagementParametersBase param = new 
VmManagementParametersBase(gettempVm());
                 param.setSoundDeviceEnabled((Boolean) 
model.getIsSoundcardEnabled().getEntity());
                 param.setConsoleEnabled((Boolean) 
model.getIsConsoleDeviceEnabled().getEntity());
-                Frontend.RunAction(VdcActionType.UpdateVm, param, new 
NetworkUpdateFrontendAsyncCallback(model, defaultNetworkCreatingManager, 
gettempVm().getId()), this);
+                Frontend.RunAction(VdcActionType.UpdateVm, param, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
gettempVm().getId()), this);
             }
         }
     }
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
new file mode 100644
index 0000000..ca74b46
--- /dev/null
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallback.java
@@ -0,0 +1,40 @@
+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 VmInterfaceCreatingManager networkCreatingManager;
+    private final Guid idToUpdate;
+
+    public UnitVmModelNetworkAsyncCallback(final UnitVmModel unitVmModel,
+            final VmInterfaceCreatingManager networkCreatingManager) {
+
+        this(unitVmModel, networkCreatingManager, null);
+    }
+
+    public UnitVmModelNetworkAsyncCallback(final UnitVmModel unitVmModel,
+            final VmInterfaceCreatingManager 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, (Iterable<VnicInstanceType>) 
unitVmModel.getNicsWithLogicalNetworks().getItems());
+        } else {
+            networkCreatingManager.getCallback().queryFailed();
+        }
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallbacks.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallbacks.java
deleted file mode 100644
index cbaf792..0000000
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/UnitVmModelNetworkAsyncCallbacks.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package org.ovirt.engine.ui.uicommonweb.models.vms;
-
-import java.util.ArrayList;
-import java.util.List;
-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 UnitVmModelNetworkAsyncCallbacks {
-
-    public static abstract class BaseNetworkFrontendActionAsyncCallback 
implements IFrontendActionAsyncCallback {
-
-        private final UnitVmModel unitVmModel;
-        protected final VmInterfaceCreatingManager networkCreatingManager;
-
-        public BaseNetworkFrontendActionAsyncCallback(final UnitVmModel 
unitVmModel,
-                                                      final 
VmInterfaceCreatingManager networkCreatingManager) {
-            this.unitVmModel = unitVmModel;
-            this.networkCreatingManager = networkCreatingManager;
-        }
-
-        @Override
-        public void executed(FrontendActionAsyncResult result) {
-            VdcReturnValueBase returnValue = result.getReturnValue();
-            if (returnValue != null && returnValue.getSucceeded()) {
-                List<VnicInstanceType> nicWithLogicalNetworks = 
(List<VnicInstanceType>)
-                        unitVmModel.getNicsWithLogicalNetworks().getItems();
-                if (nicWithLogicalNetworks == null) {
-                    // enter the opertation with null object if nothing has 
been edited by the user
-                    nicWithLogicalNetworks = new ArrayList<VnicInstanceType>();
-                }
-
-                doNetworkOperation(returnValue, nicWithLogicalNetworks);
-            } else {
-                networkCreatingManager.getCallback().queryFailed();
-            }
-        }
-
-        protected  abstract void doNetworkOperation(VdcReturnValueBase 
returnValue, List<VnicInstanceType> nicWithLogicalNetworks);
-    }
-
-    public static class NetworkCreateOrUpdateFrontendActionAsyncCallback 
extends BaseNetworkFrontendActionAsyncCallback {
-
-        public NetworkCreateOrUpdateFrontendActionAsyncCallback(final 
UnitVmModel unitVmModel,
-                                                                final 
VmInterfaceCreatingManager networkCreatingManager) {
-            super(unitVmModel, networkCreatingManager);
-        }
-
-        @Override
-        protected void doNetworkOperation(VdcReturnValueBase returnValue, 
List<VnicInstanceType> nicWithLogicalNetworks) {
-            networkCreatingManager.updateOrCreateIfNothingToUpdate((Guid) 
returnValue.getActionReturnValue(), nicWithLogicalNetworks);
-        }
-
-    }
-
-    public static class NetworkCreateFrontendAsyncCallback extends 
BaseNetworkFrontendActionAsyncCallback {
-        public NetworkCreateFrontendAsyncCallback(final UnitVmModel 
unitVmModel,
-                                                  final 
VmInterfaceCreatingManager networkCreatingManager) {
-            super(unitVmModel, networkCreatingManager);
-        }
-
-        @Override
-        protected void doNetworkOperation(VdcReturnValueBase returnValue, 
List<VnicInstanceType> nicWithLogicalNetworks) {
-            networkCreatingManager.createVnics((Guid) 
returnValue.getActionReturnValue(), nicWithLogicalNetworks);
-        }
-    }
-
-    public static class NetworkUpdateFrontendAsyncCallback extends 
BaseNetworkFrontendActionAsyncCallback {
-
-        private final Guid idToUpdate;
-
-        public NetworkUpdateFrontendAsyncCallback(final UnitVmModel 
unitVmModel,
-                                                  final 
VmInterfaceCreatingManager networkCreatingManager,
-                                                  final Guid idToUpdate) {
-            super(unitVmModel, networkCreatingManager);
-            this.idToUpdate = idToUpdate;
-        }
-
-        @Override
-        protected void doNetworkOperation(VdcReturnValueBase returnValue, 
List<VnicInstanceType> nicWithLogicalNetworks) {
-            networkCreatingManager.updateVnics(idToUpdate, 
nicWithLogicalNetworks);
-        }
-    }
-
-}
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 ba0ed05..75b201a 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
@@ -1,8 +1,13 @@
 package org.ovirt.engine.ui.uicommonweb.models.vms;
 
 import java.util.ArrayList;
-import java.util.List;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
 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.businessentities.network.VmNetworkInterface;
@@ -22,101 +27,6 @@
         this.callback = callback;
     }
 
-    private void updateVnicsFromParams(final Guid vmId, 
ArrayList<VdcActionParametersBase> parameters) {
-        if (parameters.size() == 0) {
-            callback.vnicCreated(vmId);
-            return;
-        }
-
-        Frontend.RunMultipleAction(
-                VdcActionType.UpdateVmInterface,
-                parameters,
-                new IFrontendMultipleActionAsyncCallback() {
-
-                    @Override
-                    public void executed(FrontendMultipleActionAsyncResult 
result) {
-                        callback.vnicCreated(vmId);
-                    }
-                },
-                this
-                );
-    }
-
-    /**
-     * Used mainly when the VM is created from the template. If the Vm has 
been created but without NICs, new
-     * ones are created according to the vnicInstanceTypes. If the VM is 
created with nics - e.g. by copying from template update their profiles
-     * as edited by the user (again, according to the vnicInstanceTypes).
-     *
-     * @param vmId The ID of the VM
-     * @param vnicInstanceTypes list of nics as edited in the window
-     */
-    public void updateOrCreateIfNothingToUpdate(final Guid vmId,
-            final List<VnicInstanceType> vnicInstanceTypes) {
-        new UpdatedNicsUpdater() {
-            @Override
-            protected void onNoNicsDefinedOnVm() {
-                // there are no vnics created - create according to the setup
-                createVnics(vmId, vnicInstanceTypes);
-            }
-        }.execute(vmId, vnicInstanceTypes);
-    }
-
-    /**
-     * Update the nic->profile assignment on the VM which already has the NICs 
created. Used when editing a VM.
-     *
-     * @param vmId The ID of the VM
-     * @param vnicInstanceTypes list of nics as edited in the window
-     */
-    public void updateVnics(final Guid vmId, final List<VnicInstanceType> 
vnicInstanceTypes) {
-        new UpdatedNicsUpdater() {
-            @Override
-            protected void onNoNicsDefinedOnVm() {
-                callback.vnicCreated(vmId);
-            }
-        }.execute(vmId, vnicInstanceTypes);
-    }
-
-    /**
-     * Create new NICs with profiles assignment according to the config in the 
window.
-     *
-     * @param vmId The ID of the VM
-     * @param vnicInstanceTypes list of nics as edited in the window
-     */
-    public void createVnics(final Guid vmId,
-            final List<VnicInstanceType> vnicInstanceTypes) {
-        ArrayList<VdcActionParametersBase> parameters = 
createAddVmInterfaceParams(vmId, vnicInstanceTypes);
-
-        if (parameters.size() == 0) {
-            callback.vnicCreated(vmId);
-            return;
-        }
-
-        Frontend.RunMultipleAction(
-                VdcActionType.AddVmInterface,
-                parameters,
-                new IFrontendMultipleActionAsyncCallback() {
-
-                    @Override
-                    public void executed(FrontendMultipleActionAsyncResult 
result) {
-                        callback.vnicCreated(vmId);
-                    }
-
-                },
-                this
-                );
-
-    }
-
-    private ArrayList<VdcActionParametersBase> 
createAddVmInterfaceParams(final Guid vmId,
-            final List<VnicInstanceType> vnicInstanceTypes) {
-        ArrayList<VdcActionParametersBase> parameters = new 
ArrayList<VdcActionParametersBase>();
-
-        for (VnicInstanceType vnicInstanceType : vnicInstanceTypes) {
-            parameters.add(new AddVmInterfaceParameters(vmId, 
vnicInstanceType.getNetworkInterface()));
-        }
-        return parameters;
-    }
-
     public PostVnicCreatedCallback getCallback() {
         return callback;
     }
@@ -127,55 +37,84 @@
         void queryFailed();
     }
 
-    abstract class UpdatedNicsUpdater {
-        public void execute(final Guid vmId, final List<VnicInstanceType> 
vnicInstanceTypes) {
-            AsyncQuery getVmNicsQuery = new AsyncQuery();
-            getVmNicsQuery.asyncCallback = new INewAsyncCallback() {
-                @Override
-                public void onSuccess(Object model, Object result) {
-                    List<VmNetworkInterface> createdNics = 
(List<VmNetworkInterface>) result;
+    public void updateVnics(final Guid vmId, final Iterable<VnicInstanceType> 
vnicsWithProfiles) {
+        AsyncQuery getVmNicsQuery = new AsyncQuery();
+        getVmNicsQuery.asyncCallback = new INewAsyncCallback() {
+            @Override
+            public void onSuccess(Object model, Object result) {
+                Iterable<VmNetworkInterface> existingVnics = 
(Iterable<VmNetworkInterface>) result;
+                if (existingVnics == null) {
+                    existingVnics = new ArrayList<VmNetworkInterface>();
+                }
 
-                    if (createdNics == null || createdNics.size() == 0) {
-                        onNoNicsDefinedOnVm();
+                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) {
+                        createVnicParameters.add(new 
AddVmInterfaceParameters(vmId, editedVnic));
                     } else {
-                        // there are some vnics created - update according to 
the setup in the window
-                        ArrayList<VdcActionParametersBase> parameters = new 
ArrayList<VdcActionParametersBase>();
-
-                        for (VmNetworkInterface created : createdNics) {
-                            for (VnicInstanceType edited : vnicInstanceTypes) {
-                                // can not use getId() because they have 
different IDs - one is already created, one is not
-                                // yet
-                                boolean sameNic = 
edited.getNetworkInterface().getName().equals(created.getName());
-
-                                boolean bothProfilesNull =
-                                        created.getVnicProfileId() == null
-                                                && 
edited.getNetworkInterface().getVnicProfileId() == null;
-
-                                boolean sameProfiles =
-                                        created.getVnicProfileId() != null
-                                                && 
created.getVnicProfileId().equals(edited.getNetworkInterface()
-                                                .getVnicProfileId());
-
-                                boolean assignedProfileChanged = 
!(bothProfilesNull || sameProfiles);
-
-                                if (sameNic && assignedProfileChanged) {
-                                    
created.setVnicProfileId(edited.getNetworkInterface().getVnicProfileId());
-                                    
created.setNetworkName(edited.getNetworkInterface().getNetworkName());
-                                    parameters.add(new 
AddVmInterfaceParameters(vmId, created));
-                                    break;
-                                }
-                            }
-
+                        vnicsEncountered.add(vnicName);
+                        Guid existingProfileId = 
existingVnic.getVnicProfileId();
+                        Guid editedProfileId = editedVnic.getVnicProfileId();
+                        if ((editedProfileId == null && existingProfileId != 
null)
+                                || (editedProfileId != null && 
!editedProfileId.equals(existingProfileId))) {
+                            existingVnic.setVnicProfileId(editedProfileId);
+                            
existingVnic.setNetworkName(editedVnic.getNetworkName());
+                            updateVnicParameters.add(new 
AddVmInterfaceParameters(vmId, existingVnic));
                         }
-
-                        updateVnicsFromParams(vmId, parameters);
                     }
                 }
-            };
-            AsyncDataProvider.getVmNicList(getVmNicsQuery, vmId);
-        }
 
-        protected abstract void onNoNicsDefinedOnVm();
+                // 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(new 
RemoveVmInterfaceParameters(vmId, existingVnic.getId()));
+                    }
+                }
+
+                Frontend.RunMultipleAction(VdcActionType.AddVmInterface,
+                        createVnicParameters,
+                        new IFrontendMultipleActionAsyncCallback() {
+
+                    @Override
+                    public void executed(FrontendMultipleActionAsyncResult 
result) {
+                                
Frontend.RunMultipleAction(VdcActionType.UpdateVmInterface,
+                                        updateVnicParameters,
+                                        new 
IFrontendMultipleActionAsyncCallback() {
+
+                            @Override
+                            public void 
executed(FrontendMultipleActionAsyncResult result) {
+                                                
Frontend.RunMultipleAction(VdcActionType.RemoveVmInterface,
+                                                        removeVnicParameters,
+                                                        new 
IFrontendMultipleActionAsyncCallback() {
+
+                                    @Override
+                                    public void 
executed(FrontendMultipleActionAsyncResult result) {
+                                        callback.vnicCreated(vmId);
+                                    }
+                                }, this);
+                            }
+                        }, this);
+                    }
+                }, this);
+            }
+        };
+        AsyncDataProvider.getVmNicList(getVmNicsQuery, vmId);
     }
 
 }
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 8e30c52..5e1ce6e 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
@@ -81,9 +81,6 @@
 import org.ovirt.engine.ui.uicommonweb.models.templates.VmBaseListModel;
 import org.ovirt.engine.ui.uicommonweb.models.userportal.AttachCdModel;
 import 
org.ovirt.engine.ui.uicommonweb.models.userportal.UserSelectedDisplayProtocolManager;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallbacks.NetworkCreateFrontendAsyncCallback;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallbacks.NetworkCreateOrUpdateFrontendActionAsyncCallback;
-import 
org.ovirt.engine.ui.uicommonweb.models.vms.UnitVmModelNetworkAsyncCallbacks.NetworkUpdateFrontendAsyncCallback;
 import org.ovirt.engine.ui.uicompat.ConstantsManager;
 import org.ovirt.engine.ui.uicompat.Event;
 import org.ovirt.engine.ui.uicompat.EventArgs;
@@ -2042,7 +2039,7 @@
 
                 setVmWatchdogToParams(model, parameters);
 
-                Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, 
new NetworkCreateFrontendAsyncCallback(model, addVmFromScratchNetworkManager), 
this);
+                Frontend.RunAction(VdcActionType.AddVmFromScratch, parameters, 
new UnitVmModelNetworkAsyncCallback(model, addVmFromScratchNetworkManager), 
this);
             }
             else
             {
@@ -2074,7 +2071,7 @@
                             param.setBalloonEnabled(balloonEnabled(model));
                             param.setCopyTemplatePermissions((Boolean) 
model.getCopyPermissions().getEntity());
 
-                            
Frontend.RunAction(VdcActionType.AddVmFromTemplate, param, new 
NetworkCreateOrUpdateFrontendActionAsyncCallback(model, 
defaultNetworkCreatingManager), vmListModel);
+                            
Frontend.RunAction(VdcActionType.AddVmFromTemplate, param, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), 
vmListModel);
                         }
                     };
                     AsyncDataProvider.getTemplateDiskList(_asyncQuery, 
template.getId());
@@ -2100,7 +2097,7 @@
                     params.setVirtioScsiEnabled((Boolean) 
model.getIsVirtioScsiEnabled().getEntity());
                     setVmWatchdogToParams(model, params);
 
-                    Frontend.RunAction(VdcActionType.AddVm, params, new 
NetworkCreateOrUpdateFrontendActionAsyncCallback(model, 
defaultNetworkCreatingManager), this);
+                    Frontend.RunAction(VdcActionType.AddVm, params, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager), this);
                 }
             }
         }
@@ -2142,7 +2139,7 @@
                                     
updateVmParams.setVirtioScsiEnabled((Boolean) 
model.getIsVirtioScsiEnabled().getEntity());
 
                                     Frontend.RunAction(VdcActionType.UpdateVm,
-                                            updateVmParams, new 
NetworkUpdateFrontendAsyncCallback(model, defaultNetworkCreatingManager, 
vmListModel.getcurrentVm().getId()), vmListModel);
+                                            updateVmParams, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
vmListModel.getcurrentVm().getId()), vmListModel);
                                 }
                                 else
                                 {
@@ -2168,7 +2165,7 @@
                 updateVmParams.setConsoleEnabled((Boolean) 
model.getIsConsoleDeviceEnabled().getEntity());
                 updateVmParams.setBalloonEnabled(balloonEnabled(model));
                 updateVmParams.setVirtioScsiEnabled((Boolean) 
model.getIsVirtioScsiEnabled().getEntity());
-                Frontend.RunAction(VdcActionType.UpdateVm, updateVmParams, new 
NetworkUpdateFrontendAsyncCallback(model, defaultNetworkCreatingManager, 
getcurrentVm().getId()), this);
+                Frontend.RunAction(VdcActionType.UpdateVm, updateVmParams, new 
UnitVmModelNetworkAsyncCallback(model, defaultNetworkCreatingManager, 
getcurrentVm().getId()), this);
             }
         }
     }


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

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

Reply via email to