Tomas Jelinek has uploaded a new change for review. Change subject: frontend: do not update nics which did not changed ......................................................................
frontend: do not update nics which did not changed Edit VM dialog -> if the nic->network assignment did not change do not send the UpdateVmInterface - do it only for the changed nics. This logic has already been present for the create VM from template, so generalized it. Change-Id: I11e32d013acf9fbf8dd3623d051403721786690b Signed-off-by: Tomas Jelinek <[email protected]> Bug-Url: https://bugzilla.redhat.com/988043 --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java 1 file changed, 57 insertions(+), 40 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/14/17314/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java index 05210b4..a232c82 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmNetworkCreatingManager.java @@ -52,45 +52,13 @@ */ public void updateOrCreateIfNothingToUpdate(final Guid vmId, final List<NicWithLogicalNetworks> nicsWithLogicalNetworks) { - AsyncQuery getVmNicsQuery = new AsyncQuery(); - getVmNicsQuery.asyncCallback = new INewAsyncCallback() { - @Override - public void onSuccess(Object model, Object result) { - List<VmNetworkInterface> createdNics = (List<VmNetworkInterface>) result; - - if (createdNics == null || createdNics.size() == 0) { - // there are no networks created - create according to the setup - createNetworks(vmId, nicsWithLogicalNetworks); - } else { - // there are some networks created - update according to the setup in the window - ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); - - for (VmNetworkInterface created : createdNics) { - for (NicWithLogicalNetworks edited : nicsWithLogicalNetworks) { - // 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 bothNetworksNull = created.getNetworkName() == null && edited.getNetworkInterface().getNetworkName() == null; - - boolean sameNetworkNames = created.getNetworkName() != null && created.getNetworkName().equals(edited.getNetworkInterface().getNetworkName()); - - boolean assignedNetworkChanged = !(bothNetworksNull || sameNetworkNames); - - if (sameNic && assignedNetworkChanged) { - created.setNetworkName(edited.getNetworkInterface().getNetworkName()); - parameters.add(new AddVmInterfaceParameters(vmId, created)); - break; - } - } - - } - - updateNetworksFromParams(vmId, parameters); - } - } - }; - AsyncDataProvider.getVmNicList(getVmNicsQuery, vmId); + new UpdatedNicsUpdater() { + @Override + protected void onNoNicsDefinedOnVm() { + // there are no networks created - create according to the setup + createNetworks(vmId, nicsWithLogicalNetworks); + } + }.execute(vmId, nicsWithLogicalNetworks); } /** @@ -100,7 +68,7 @@ * @param nicsWithLogicalNetworks list of nics as edited in the window */ public void updateNetworks(final Guid vmId, final List<NicWithLogicalNetworks> nicsWithLogicalNetworks) { - updateNetworksFromParams(vmId, createAddVmInterfaceParams(vmId, nicsWithLogicalNetworks)); + new UpdatedNicsUpdater().execute(vmId, nicsWithLogicalNetworks); } /** @@ -153,4 +121,53 @@ void queryFailed(); } + + class UpdatedNicsUpdater { + + public void execute(final Guid vmId, final List<NicWithLogicalNetworks> nicsWithLogicalNetworks) { + AsyncQuery getVmNicsQuery = new AsyncQuery(); + getVmNicsQuery.asyncCallback = new INewAsyncCallback() { + @Override + public void onSuccess(Object model, Object result) { + List<VmNetworkInterface> createdNics = (List<VmNetworkInterface>) result; + + if (createdNics == null || createdNics.size() == 0) { + onNoNicsDefinedOnVm(); + } else { + // there are some networks created - update according to the setup in the window + ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); + + for (VmNetworkInterface created : createdNics) { + for (NicWithLogicalNetworks edited : nicsWithLogicalNetworks) { + // 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 bothNetworksNull = created.getNetworkName() == null && edited.getNetworkInterface().getNetworkName() == null; + + boolean sameNetworkNames = created.getNetworkName() != null && created.getNetworkName().equals(edited.getNetworkInterface().getNetworkName()); + + boolean assignedNetworkChanged = !(bothNetworksNull || sameNetworkNames); + + if (sameNic && assignedNetworkChanged) { + created.setNetworkName(edited.getNetworkInterface().getNetworkName()); + parameters.add(new AddVmInterfaceParameters(vmId, created)); + break; + } + } + + } + + updateNetworksFromParams(vmId, parameters); + } + } + }; + AsyncDataProvider.getVmNicList(getVmNicsQuery, vmId); + } + + protected void onNoNicsDefinedOnVm() { + // do nothing by default + } + + } } -- To view, visit http://gerrit.ovirt.org/17314 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I11e32d013acf9fbf8dd3623d051403721786690b Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tomas Jelinek <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
