package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.AddVmPoolWithVmsParameters;
import org.ovirt.engine.core.common.businessentities.vm_pools;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.VdcBllMessages;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@NonTransactiveCommandAttribute(forceCompensation = true)
public class UpdateVmPoolWithVmsCommand<T extends AddVmPoolWithVmsParameters> extends CommonVmPoolWithVmsCommand<T> {
/**
* Constructor for command creation when compensation is applied on startup
*
* @param commandId
*/
protected UpdateVmPoolWithVmsCommand(Guid commandId) {
super(commandId);
}
public UpdateVmPoolWithVmsCommand(T parameters) {
super(parameters);
}
@Override
protected Guid GetPoolId() {
// List<vm_pool_map> list =
// DbFacade.Instance.GetVmPoolsMapByVmPoolId(VmPool.vm_pool_id);
// AddVmPoolWithVmsParametersData.VmStaticData =
// DbFacade.Instance.GetVmStaticById(list[0].vm_guid);
DbFacade.getInstance().getVmPoolDAO().update(getVmPool());
return getVmPool().getvm_pool_id();
}
@Override
protected boolean canDoAction() {
boolean returnValue = super.canDoAction();
vm_pools oldPool = DbFacade.getInstance().getVmPoolDAO().get(getVmPool().getvm_pool_id());
if (returnValue && oldPool == null) {
addCanDoActionMessage(VdcBllMessages.VM_POOL_CANNOT_UPDATE_POOL_NOT_FOUND);
returnValue = false;
} else if (returnValue && getParameters().getVmsCount() < 0) {
addCanDoActionMessage(VdcBllMessages.VM_POOL_CANNOT_DECREASE_VMS_FROM_POOL);
returnValue = false;
}
if (!returnValue) {
addCanDoActionMessage(VdcBllMessages.VAR__ACTION__UPDATE);
}
return returnValue;
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getAddVmsSucceded() ? AuditLogType.USER_UPDATE_VM_POOL_WITH_VMS
: AuditLogType.USER_UPDATE_VM_POOL_WITH_VMS_FAILED;
}
}