package org.ovirt.engine.core.bll;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.context.EngineContext;
import org.ovirt.engine.core.bll.snapshots.SnapshotVmConfigurationHelper;
import org.ovirt.engine.core.common.businessentities.Snapshot;
import org.ovirt.engine.core.common.businessentities.VM;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.dao.SnapshotDao;
public class GetVmNextRunConfigurationQuery<P extends IdQueryParameters> extends GetVmByVmIdQuery<P> {
@Inject
protected SnapshotVmConfigurationHelper snapshotVmConfigurationHelper;
@Inject
private SnapshotDao snapshotDao;
public GetVmNextRunConfigurationQuery(P parameters) {
super(parameters);
}
public GetVmNextRunConfigurationQuery(P parameters, EngineContext engineContext) {
super(parameters, engineContext);
}
@Override
protected void executeQueryCommand() {
Snapshot snapshot = snapshotDao.get(getParameters().getId(), Snapshot.SnapshotType.NEXT_RUN, getUserID(), getParameters().isFiltered());
if (snapshot != null) {
VM vm = snapshotVmConfigurationHelper.getVmFromConfiguration(
snapshot.getVmConfiguration(), snapshot.getVmId(), snapshot.getId());
// update information that is not saved in the config
vmHandler.updateDisksFromDb(vm);
vmHandler.updateVmGuestAgentVersion(vm);
vmHandler.updateNetworkInterfacesFromDb(vm);
vmHandler.updateVmStatistics(vm);
getQueryReturnValue().setReturnValue(vm);
} else {
// in case no next_run return static configuration
super.executeQueryCommand();
}
}
}