package org.ovirt.engine.core.bll.numa.vm; import java.util.List; import javax.inject.Inject; import org.ovirt.engine.core.bll.VmCommand; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.action.VmNumaNodeOperationParameters; import org.ovirt.engine.core.common.businessentities.VmNumaNode; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.dao.VdsNumaNodeDao; import org.ovirt.engine.core.dao.VmNumaNodeDao; public abstract class AbstractVmNumaNodeCommand<T extends VmNumaNodeOperationParameters> extends VmCommand<T> { @Inject private VdsNumaNodeDao vdsNumaNodeDao; @Inject private NumaValidator numaValidator; @Inject private VmNumaNodeDao vmNumaNodeDao; private List<VmNumaNode> vmNumaNodesForValidation; public AbstractVmNumaNodeCommand(T parameters, CommandContext cmdContext) { super(parameters, cmdContext); } @Override protected final void init() { super.init(); if (getParameters().getVmId() != null) { setVmId(getParameters().getVmId()); } else { setVm(getParameters().getVm()); } if (getVm() != null) { setVmNumaNodesForValidation(vmNumaNodeDao.getAllVmNumaNodeByVmId(getVm().getId())); doInit(); } } protected abstract void doInit(); @Override protected boolean validate() { if (getVm() == null) { return failValidation(EngineMessage.ACTION_TYPE_FAILED_VM_NOT_FOUND); } if (!validate(getNumaValidator().checkVmNumaIndexDuplicates(getParameters().getVmNumaNodeList()))) { return false; } return validate(getNumaValidator().checkVmNumaNodesIntegrity(getVm(), getVmNumaNodesForValidation())); } protected List<VmNumaNode> getVmNumaNodesForValidation() { return vmNumaNodesForValidation; } protected void setVmNumaNodesForValidation(List<VmNumaNode> vmNumaNodesForValidation) { this.vmNumaNodesForValidation = vmNumaNodesForValidation; } protected NumaValidator getNumaValidator() { return numaValidator; } }