Libor Spevak has uploaded a new change for review.

Change subject: engine: Do not add disk in snapshot preview
......................................................................

engine: Do not add disk in snapshot preview

Do not allow to add image disk, sharable disk or LUN to a VM
in snapshot preview mode (in shutdown or up states).

The condition is indicated by the error dialog message:
"Cannot add Virtual Machine Disk. VM is previewing a Snapshot."

Change-Id: Ibfde0540f1d77456ed1412b015a0963f4682039f
Bug-Url: https://bugzilla.redhat.com/909708
Signed-off-by: Libor Spevak <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
3 files changed, 23 insertions(+), 4 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/27/13327/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
index 2e4438b..1efe0a3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddDiskCommand.java
@@ -130,7 +130,10 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_DISK_LUN_IS_ALREADY_IN_USE);
         }
 
-        return true;
+        return
+                
validate(getSnapshotValidator().vmNotDuringSnapshot(getVmId())) &&
+                validate(getSnapshotValidator().vmNotInPreview(getVmId())) &&
+                validate(new VmValidator(getVm()).vmNotLocked());
     }
 
     private boolean checkIfImageDiskCanBeAdded(VM vm) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
index 8c5a503..15c1228 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachDiskToVmCommand.java
@@ -96,7 +96,11 @@
             return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NOT_MATCH);
         }
 
-        if (isImageDisk && !validate(new 
SnapshotsValidator().vmNotDuringSnapshot(getVm().getId()))) {
+        final boolean isNotDuringSnapshot =
+                
validate(getSnapshotsValidator().vmNotDuringSnapshot(getVmId())) &&
+                validate(getSnapshotsValidator().vmNotInPreview(getVmId()));
+
+        if (isImageDisk && !isNotDuringSnapshot) {
             return false;
         }
 
@@ -196,4 +200,9 @@
     public String getDiskAlias() {
         return disk.getDiskAlias();
     }
+
+    protected SnapshotsValidator getSnapshotsValidator() {
+        return new SnapshotsValidator();
+    }
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
index 9919893..ac5de9a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HotPlugDiskToVmCommand.java
@@ -6,6 +6,7 @@
 
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
+import org.ovirt.engine.core.bll.validator.VmValidator;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.HotPlugDiskToVmParameters;
 import org.ovirt.engine.core.common.businessentities.Disk;
@@ -40,8 +41,14 @@
     @Override
     protected boolean canDoAction() {
         disk = getDiskDao().get(getParameters().getDiskId());
-        return isVmExist() && isVmUpOrDown() && isDiskExist(disk) && 
checkCanPerformPlugUnPlugDisk()
-                && 
validate(getSnapshotsValidator().vmNotDuringSnapshot(getVmId()));
+        return
+                isVmExist() &&
+                isVmUpOrDown() &&
+                isDiskExist(disk) &&
+                checkCanPerformPlugUnPlugDisk() &&
+                
validate(getSnapshotsValidator().vmNotDuringSnapshot(getVmId())) &&
+                validate(getSnapshotsValidator().vmNotInPreview(getVmId())) &&
+                validate(new VmValidator(getVm()).vmNotLocked());
     }
 
     private boolean checkCanPerformPlugUnPlugDisk() {


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

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

Reply via email to