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