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

Reply via email to