package org.ovirt.engine.core.bll.qos;
import java.util.List;
import java.util.Map;
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.QosValidator;
import org.ovirt.engine.core.bll.validator.storage.StorageQosValidator;
import org.ovirt.engine.core.common.action.QosParametersBase;
import org.ovirt.engine.core.common.businessentities.qos.StorageQos;
import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dao.qos.QosDao;
public class RemoveStorageQosCommand extends RemoveQosCommandBase<StorageQos, QosValidator<StorageQos>> {
@Inject
VmSlaPolicyUtils vmSlaPolicyUtils;
public RemoveStorageQosCommand(QosParametersBase<StorageQos> parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected QosDao<StorageQos> getQosDao() {
return getDbFacade().getStorageQosDao();
}
@Override
protected QosValidator<StorageQos> getQosValidator(StorageQos qos) {
return new StorageQosValidator(qos);
}
@Override
protected void executeCommand() {
Map<Guid, List<DiskImage>> vmDisksMap = vmSlaPolicyUtils.getRunningVmDiskImageMapWithQos(getQosId());
super.executeCommand();
// After successful command, set everything to unlimited
if (getSucceeded()) {
vmSlaPolicyUtils.refreshVmsStorageQos(vmDisksMap, new StorageQos());
}
}
}