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