Arik Hadas has uploaded a new change for review.

Change subject: core: filter duplicate requests to migrate the same vm
......................................................................

core: filter duplicate requests to migrate the same vm

Because of a bug in the UI, we might get several requests together to
migrate the same VM. It produces an error message to the user saying the
VM is already been migrated although it is actually being migrated
because of his request.

The solution is to override the hashCode and equals method in the
parameters of migration so duplicate requests will be filtered by
MultipleActionRunner.

Change-Id: Idda26210b9cf4f2746e27a3291bab20b10aaf103
Signed-off-by: Arik Hadas <[email protected]>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmToServerParameters.java
2 files changed, 50 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/36155/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmParameters.java
index 13f97cc..a981664 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmParameters.java
@@ -2,6 +2,8 @@
 
 import java.util.ArrayList;
 import java.util.Date;
+
+import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.compat.Guid;
 
 /**
@@ -40,6 +42,30 @@
         setParentCommand(internalMigrateVmParameters.getParentCommand());
     }
 
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = super.hashCode();
+        result = prime * result + (forceMigrationForNonMigratableVm ? 1231 : 
1237);
+        result = prime * result + ((targetVdsGroupId == null) ? 0 : 
targetVdsGroupId.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (!(obj instanceof MigrateVmParameters)) {
+            return false;
+        }
+
+        MigrateVmParameters other = (MigrateVmParameters) obj;
+        return forceMigrationForNonMigratableVm == 
other.forceMigrationForNonMigratableVm
+                && ObjectUtils.objectsEqual(targetVdsGroupId, 
other.targetVdsGroupId);
+    }
+
     public boolean isForceMigrationForNonMigratableVm() {
         return forceMigrationForNonMigratableVm;
     }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmToServerParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmToServerParameters.java
index b2a9382..ac7dcff 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmToServerParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MigrateVmToServerParameters.java
@@ -1,10 +1,14 @@
 package org.ovirt.engine.core.common.action;
 
+import org.ovirt.engine.core.common.utils.ObjectUtils;
 import org.ovirt.engine.core.compat.Guid;
 
 public class MigrateVmToServerParameters extends MigrateVmParameters {
     private static final long serialVersionUID = 2378358850714143232L;
     private Guid vdsId;
+
+    public MigrateVmToServerParameters() {
+    }
 
     public MigrateVmToServerParameters(boolean forceMigration, Guid vmId, Guid 
serverId, Guid targetVdsGroupId) {
         super(forceMigration, vmId, targetVdsGroupId);
@@ -19,6 +23,25 @@
         return vdsId;
     }
 
-    public MigrateVmToServerParameters() {
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = super.hashCode();
+        result = prime * result + ((vdsId == null) ? 0 : vdsId.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+
+        if (!(obj instanceof MigrateVmToServerParameters)) {
+            return false;
+        }
+
+        MigrateVmToServerParameters other = (MigrateVmToServerParameters) obj;
+        return ObjectUtils.objectsEqual(vdsId, other.vdsId);
     }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Idda26210b9cf4f2746e27a3291bab20b10aaf103
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to