package org.ovirt.engine.core.bll; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.DetachUserFromTimeLeasedPoolParameters; import org.ovirt.engine.core.common.businessentities.time_lease_vm_pool_map; import org.ovirt.engine.core.dal.dbbroker.DbFacade; public class DetachUserFromTimeLeasedPoolCommand<T extends DetachUserFromTimeLeasedPoolParameters> extends VmPoolSimpleUserCommandBase<T> { public DetachUserFromTimeLeasedPoolCommand(T parameters) { super(parameters); } /** * 1. Check if there is time leased pool and vm attached to it. 2. For all * vms attached to user: If vm running - stop it. Detach user from this vm. * 3. Detach user from vm */ @Override protected void executeCommand() { time_lease_vm_pool_map map = DbFacade.getInstance().getVmPoolDAO().getTimeLeasedVmPoolMapByIdForVmPool(getAdUserId(), getVmPoolId()); if (map != null) { // java.util.ArrayList<tags_vm_map> tagsVmMap = // DbFacade.getInstance().GetTagVmMapByAdElementId(getAdUserId()); // // if (tagsVmMap.size() != 0) { // for (tags_vm_map tagVm : tagsVmMap) { // // VM vm = // DbFacade.getInstance().GetvmsBy_vm_guid(tagVm.getvm_id()); // if (getVmPoolId().equals(vm.getVmPoolId())) { // if (vm.isStatusUp()) { // StopVmParameters tempVar = new StopVmParameters(tagVm.getvm_id(), // StopVmTypeEnum.NORMAL); // tempVar.setShouldBeLogged(false); // Backend.getInstance().runInternalAction(VdcActionType.StopVm, // tempVar); // } // // VmPoolSimpleUserParameters tempVar2 = new // VmPoolSimpleUserParameters(map.getvm_pool_id(), // getAdUserId()); // tempVar2.setShouldBeLogged(false); // Backend.getInstance().runInternalAction(VdcActionType.DetachUserFromVmFromPool, // tempVar2); // } // } // } // old time-leased pool implementation // should be re-implemented, don't remove comments below // VmPoolSimpleUserParameters tempVar3 = new // VmPoolSimpleUserParameters(map.getvm_pool_id(), map.getid()); // tempVar3.setShouldBeLogged(false); // Backend.getInstance().runInternalAction(VdcActionType.DetachVmPoolFromUser, // tempVar3); DbFacade.getInstance().getVmPoolDAO().removeTimeLeasedVmPoolMap(map.getid(), map.getvm_pool_id()); if (!getParameters().getIsInternal()) { TimeLeasedVmPoolManager.getInstance().RemoveAction(map); } } setSucceeded(true); } @Override public AuditLogType getAuditLogTypeValue() { AuditLogType auditLogType; if (getParameters().getIsInternal()) { auditLogType = (getSucceeded()) ? AuditLogType.USER_DETACH_USER_FROM_TIME_LEASED_POOL_INTERNAL : AuditLogType.USER_DETACH_USER_FROM_TIME_LEASED_POOL_FAILED_INTERNAL; } else { auditLogType = (getSucceeded()) ? AuditLogType.USER_DETACH_USER_FROM_TIME_LEASED_POOL : AuditLogType.USER_DETACH_USER_FROM_TIME_LEASED_POOL_FAILED; } return auditLogType; } }