package org.ovirt.engine.core.bll.network.host;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.VdsCommand;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.bll.validator.VfsConfigValidator;
import org.ovirt.engine.core.common.action.VfsConfigBaseParameters;
import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig;
import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
import org.ovirt.engine.core.dao.network.HostNicVfsConfigDao;
import org.ovirt.engine.core.dao.network.InterfaceDao;
public abstract class VfsConfigCommandBase<T extends VfsConfigBaseParameters> extends VdsCommand<T> {
private VdsNetworkInterface nic;
private HostNicVfsConfig oldVfsConfig;
private VfsConfigValidator vfsConfigValidator;
@Inject
private HostNicVfsConfigDao hostNicVfsConfigDao;
@Inject
private InterfaceDao interfaceDao;
public VfsConfigCommandBase(T parameters, CommandContext commandContext) {
super(parameters, commandContext);
}
@Override
protected void executeCommand() {
setVdsId(getNic() == null ? null : getNic().getVdsId());
}
@Override
protected boolean validate() {
return validate(getVfsConfigValidator().nicExists()) && validate(getVfsConfigValidator().nicSriovEnabled());
}
protected HostNicVfsConfigDao getVfsConfigDao() {
return hostNicVfsConfigDao;
}
public VfsConfigValidator getVfsConfigValidator() {
if (vfsConfigValidator == null) {
vfsConfigValidator = new VfsConfigValidator(getParameters().getNicId(), getVfsConfig());
}
return vfsConfigValidator;
}
public HostNicVfsConfig getVfsConfig() {
if (oldVfsConfig == null) {
oldVfsConfig = getVfsConfigDao().getByNicId(getParameters().getNicId());
}
return oldVfsConfig;
}
public VdsNetworkInterface getNic() {
if (nic == null) {
nic = interfaceDao.get(getVfsConfig().getNicId());
}
return nic;
}
public String getNicName() {
return getNic().getName();
}
@Override
protected String getDescription() {
return getNic() == null ? getParameters().getNicId().toString() : getNicName();
}
}