package org.ovirt.engine.core.vdsbroker; import javax.inject.Inject; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmDynamic; import org.ovirt.engine.core.common.vdscommands.HibernateVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.dao.VmDynamicDao; public class HibernateVDSCommand<P extends HibernateVDSCommandParameters> extends ManagingVmCommand<P> { @Inject private VmDynamicDao vmDynamicDao; public HibernateVDSCommand(P parameters) { super(parameters); } @Override protected void executeVmCommand() { VDSReturnValue vdsReturnValue = resourceManager.runVdsCommand( VDSCommandType.HibernateBroker, getParameters()); if (vdsReturnValue.getSucceeded()) { VmDynamic vmDynamic = vmDynamicDao.get(getParameters().getVmId()); vmDynamic.setStatus(VMStatus.SavingState); vmManager.update(vmDynamic); } else { log.error("Failed to hibernate VM '{}' in VDS = '{}' : error = '{}'", getParameters().getVmId(), getParameters().getVdsId(), vdsReturnValue.getExceptionString()); getVDSReturnValue().setSucceeded(false); getVDSReturnValue().setExceptionString(vdsReturnValue.getExceptionString()); getVDSReturnValue().setExceptionObject(vdsReturnValue.getExceptionObject()); getVDSReturnValue().setVdsError(vdsReturnValue.getVdsError()); } } }