Oved Ourfali has uploaded a new change for review.

Change subject: core: allowing to remove external VMs from the engine
......................................................................

core: allowing to remove external VMs from the engine

This patch splits the commands allowed on non engine-managed VMs to two 
different
sets:
1. Commands for external VMs
2. Commands for hosted engine VMs

A difference, for example, is that we allow to stop and remove external VMs, 
but not hosted
engine VMs.

Change-Id: I69eeeaaa933f8b8eeb9a984c91cba06d8d05ebe1
Bug-Url: https://bugzilla.redhat.com/978678
Signed-off-by: Oved Ourfali <oourf...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
1 file changed, 21 insertions(+), 11 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/63/18963/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
index 2adbd1d..0d225e4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
@@ -64,7 +64,8 @@
     private static OsRepository osRepository = 
SimpleDependecyInjector.getInstance().get(OsRepository.class);
     private static final Log log = LogFactory.getLog(VmHandler.class);
 
-    private static Set<VdcActionType> COMMANDS_ALLOWED_ON_NON_MANAGED_VMS = 
new HashSet<>();
+    private static Set<VdcActionType> COMMANDS_ALLOWED_ON_EXTERNAL_VMS = new 
HashSet<>();
+    private static Set<VdcActionType> COMMANDS_ALLOWED_ON_HOSTED_ENGINE = new 
HashSet<>();
     /**
      * Initialize static list containers, for identity and permission check. 
The initialization should be executed
      * before calling ObjectIdentityChecker.
@@ -90,12 +91,21 @@
                 inspectedClassNames)) {
             
mUpdateVmsStatic.AddField(Arrays.asList(pair.getFirst().statuses()), 
pair.getSecond());
         }
-        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.MigrateVm);
-        
COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.MigrateVmToServer);
-        
COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.InternalMigrateVm);
-        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.CancelMigrateVm);
-        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.SetVmTicket);
-        COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.add(VdcActionType.VmLogon);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.MigrateVm);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.MigrateVmToServer);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.InternalMigrateVm);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.CancelMigrateVm);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.SetVmTicket);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.VmLogon);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.StopVm);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.ShutdownVm);
+        COMMANDS_ALLOWED_ON_EXTERNAL_VMS.add(VdcActionType.RemoveVm);
+        COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.MigrateVm);
+        COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.MigrateVmToServer);
+        COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.InternalMigrateVm);
+        COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.CancelMigrateVm);
+        COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.SetVmTicket);
+        COMMANDS_ALLOWED_ON_HOSTED_ENGINE.add(VdcActionType.VmLogon);
     }
 
     public static boolean isUpdateValid(VmStatic source, VmStatic destination, 
VMStatus status) {
@@ -573,11 +583,11 @@
     public static ValidationResult canRunActionOnNonManagedVm(VM vm, 
VdcActionType actionType) {
         ValidationResult validationResult = ValidationResult.VALID;
 
-        if (!vm.isManagedVm()) {
-            if (!COMMANDS_ALLOWED_ON_NON_MANAGED_VMS.contains(actionType)) {
-                validationResult = new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM);
-            }
+        if ((vm.isHostedEngine() && 
!COMMANDS_ALLOWED_ON_HOSTED_ENGINE.contains(actionType)) ||
+            (vm.isExternalVm() && 
!COMMANDS_ALLOWED_ON_EXTERNAL_VMS.contains(actionType))) {
+            validationResult = new 
ValidationResult(VdcBllMessages.ACTION_TYPE_FAILED_CANNOT_RUN_ACTION_ON_NON_MANAGED_VM);
         }
+
         return validationResult;
     }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I69eeeaaa933f8b8eeb9a984c91cba06d8d05ebe1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Oved Ourfali <oourf...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to