package org.ovirt.engine.core.bll.qos;
import java.util.List;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.VmSlaPolicyUtils;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.validator.CpuQosValidator;
import org.ovirt.engine.core.bll.validator.QosValidator;
import org.ovirt.engine.core.common.action.QosParametersBase;
import org.ovirt.engine.core.common.businessentities.qos.CpuQos;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.qos.QosDao;
public class RemoveCpuQosCommand extends RemoveQosCommandBase<CpuQos, QosValidator<CpuQos>> {
@Inject
VmSlaPolicyUtils vmSlaPolicyUtils;
public RemoveCpuQosCommand(QosParametersBase<CpuQos> parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected QosDao<CpuQos> getQosDao() {
return getDbFacade().getCpuQosDao();
}
@Override
protected QosValidator<CpuQos> getQosValidator(CpuQos qos) {
return new CpuQosValidator(qos);
}
@Override
protected void executeCommand() {
List<Guid> vmIds = vmSlaPolicyUtils.getRunningVmsWithCpuQos(getQosId());
super.executeCommand();
// After successful command, refresh qos
CpuQos unlimitedQos = new CpuQos();
unlimitedQos.setCpuLimit(100);
vmSlaPolicyUtils.refreshVmsCpuQos(vmIds, unlimitedQos);
}
}