Daniel Erez has uploaded a new change for review. Change subject: webadmin: correlate models to move multiple disks API ......................................................................
webadmin: correlate models to move multiple disks API Using MoveDisks command for concurrent multiple disks move / migration (separating execution implementation for MoveDiskModel and CopyDiskModel). Change-Id: I43fea7e0f1550ab497598852ae903f97cf35e219 Bug-Url: https://bugzilla.redhat.com/874080 Signed-off-by: Daniel Erez <de...@redhat.com> --- M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java M frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java 5 files changed, 55 insertions(+), 36 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/10155/1 diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java index 0cdaf41..b394f1a 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/MoveOrCopyDiskModel.java @@ -18,18 +18,14 @@ import org.ovirt.engine.core.compat.PropertyChangedEventArgs; import org.ovirt.engine.core.compat.StringHelper; 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.ICommandTarget; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; -import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.vms.DiskModel; import org.ovirt.engine.ui.uicommonweb.validation.IValidation; import org.ovirt.engine.ui.uicommonweb.validation.SelectedQuotaValidation; -import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; -import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; public abstract class MoveOrCopyDiskModel extends DisksAllocationModel implements ICommandTarget { @@ -248,15 +244,7 @@ return null; } - private void OnMove() { - OnMoveOrCopy(); - } - - private void OnCopy() { - OnMoveOrCopy(); - } - - protected void OnMoveOrCopy() { + protected void OnExecute() { if (this.getProgress() != null) { return; @@ -266,6 +254,10 @@ return; } + StartProgress(null); + } + + protected ArrayList<VdcActionParametersBase> getParameters() { boolean iSingleStorageDomain = (Boolean) getIsSingleStorageDomain().getEntity(); ArrayList<VdcActionParametersBase> parameters = new ArrayList<VdcActionParametersBase>(); @@ -305,18 +297,7 @@ } } - StartProgress(null); - - Frontend.RunMultipleAction(getActionType(), parameters, - new IFrontendMultipleActionAsyncCallback() { - @Override - public void Executed(FrontendMultipleActionAsyncResult result) { - MoveOrCopyDiskModel localModel = (MoveOrCopyDiskModel) result.getState(); - localModel.StopProgress(); - ListModel listModel = (ListModel) localModel.getEntity(); - listModel.setWindow(null); - } - }, this); + return parameters; } protected void addMoveOrCopyParameters(ArrayList<VdcActionParametersBase> parameters, @@ -335,13 +316,10 @@ { super.ExecuteCommand(command); - if (StringHelper.stringsEqual(command.getName(), "OnMove")) //$NON-NLS-1$ + if (StringHelper.stringsEqual(command.getName(), "OnMove") || //$NON-NLS-1$ + StringHelper.stringsEqual(command.getName(), "OnCopy")) //$NON-NLS-1$ { - OnMove(); - } - else if (StringHelper.stringsEqual(command.getName(), "OnCopy")) //$NON-NLS-1$ - { - OnCopy(); + OnExecute(); } } @@ -353,11 +331,10 @@ boolean isValid = true; for (DiskModel diskModel : getDisks()) { - diskModel.getQuota().ValidateSelectedItem(new IValidation[]{new SelectedQuotaValidation()}); + diskModel.getQuota().ValidateSelectedItem(new IValidation[] { new SelectedQuotaValidation() }); isValid &= diskModel.getQuota().getIsValid(); } return isValid; } } - diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java index bf7709d..46409ff 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/templates/CopyDiskModel.java @@ -12,13 +12,17 @@ import org.ovirt.engine.core.common.businessentities.storage_domains; 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.ICommandTarget; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.MoveOrCopyDiskModel; import org.ovirt.engine.ui.uicommonweb.models.vms.DiskModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.FrontendMultipleActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendMultipleActionAsyncCallback; public class CopyDiskModel extends MoveOrCopyDiskModel { @@ -134,4 +138,20 @@ ImageOperation.Copy); } + @Override + protected void OnExecute() { + super.OnExecute(); + + Frontend.RunMultipleAction(getActionType(), getParameters(), + new IFrontendMultipleActionAsyncCallback() { + @Override + public void Executed(FrontendMultipleActionAsyncResult result) { + CopyDiskModel localModel = (CopyDiskModel) result.getState(); + localModel.StopProgress(); + ListModel listModel = (ListModel) localModel.getEntity(); + listModel.setWindow(null); + } + }, this); + } + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java index f910864..e4f2d0f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/MoveDiskModel.java @@ -1,8 +1,10 @@ package org.ovirt.engine.ui.uicommonweb.models.vms; import java.util.ArrayList; +import java.util.List; import org.ovirt.engine.core.common.action.MoveDiskParameters; +import org.ovirt.engine.core.common.action.MoveDisksParameters; import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; @@ -12,12 +14,16 @@ import org.ovirt.engine.core.common.businessentities.storage_domains; 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.ICommandTarget; import org.ovirt.engine.ui.uicommonweb.UICommand; import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; +import org.ovirt.engine.ui.uicommonweb.models.ListModel; import org.ovirt.engine.ui.uicommonweb.models.storage.MoveOrCopyDiskModel; import org.ovirt.engine.ui.uicompat.ConstantsManager; +import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; +import org.ovirt.engine.ui.uicompat.IFrontendActionAsyncCallback; public class MoveDiskModel extends MoveOrCopyDiskModel { @@ -103,7 +109,7 @@ @Override protected VdcActionType getActionType() { - return VdcActionType.MoveDisk; + return VdcActionType.MoveDisks; } @Override @@ -115,4 +121,20 @@ destStorageDomainGuid); } + @Override + protected void OnExecute() { + super.OnExecute(); + + MoveDisksParameters parameters = new MoveDisksParameters((List) getParameters()); + Frontend.RunAction(getActionType(), parameters, + new IFrontendActionAsyncCallback() { + @Override + public void Executed(FrontendActionAsyncResult result) { + MoveDiskModel localModel = (MoveDiskModel) result.getState(); + localModel.StopProgress(); + ListModel listModel = (ListModel) localModel.getEntity(); + listModel.setWindow(null); + } + }, this); + } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java index 832a83c..9c7de0d 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmDiskListModel.java @@ -1011,7 +1011,7 @@ Linq.<Disk> Cast(getSelectedItems()) : new ArrayList<Disk>(); for (Disk disk : disks) { - if (!isImageDiskOK(disk) || !disk.getPlugged()) { + if (!isImageDiskOK(disk)) { return false; } } diff --git a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java index 88b25bc..ef0294c 100644 --- a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java +++ b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/Constants.java @@ -1509,7 +1509,7 @@ @DefaultStringValue("Shareable Disk is not supported by the selected configuration") String shareableDiskNotSupportedByConfiguration(); - @DefaultStringValue("Note: Moving the disk while the VM is running") + @DefaultStringValue("Note: Moving the disk(s) while the VM is running") String liveStorageMigrationWarning(); @DefaultStringValue("Cannot remove more than one brick from a Replicate volume at a time") -- To view, visit http://gerrit.ovirt.org/10155 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I43fea7e0f1550ab497598852ae903f97cf35e219 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Daniel Erez <de...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches