package org.ovirt.engine.core.vdsbroker.irsbroker; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.errors.EngineError; import org.ovirt.engine.core.common.vdscommands.ResetIrsVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.SpmStopVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.dbbroker.DbFacade; public class ResetIrsVDSCommand<P extends ResetIrsVDSCommandParameters> extends IrsBrokerCommand<P> { public ResetIrsVDSCommand(P parameters) { super(parameters); } @Override protected void executeVDSCommand() { P parameters = getParameters(); Guid vdsId = parameters.getVdsId(); if (getParameters().isVdsAlreadyRebooted() || resourceManager .runVdsCommand(VDSCommandType.SpmStop, new SpmStopVDSCommandParameters(vdsId, parameters.getStoragePoolId())).getSucceeded() || parameters.getIgnoreStopFailed()) { if (getParameters().getPreferredSPMId() != null) { getCurrentIrsProxy().setPreferredHostId(getParameters().getPreferredSPMId()); } if (getParameters().isVdsAlreadyRebooted()) { getCurrentIrsProxy().setFencedIrs(vdsId); } getCurrentIrsProxy().resetIrs(); StoragePool pool = DbFacade.getInstance().getStoragePoolDao().get(parameters.getStoragePoolId()); if (pool != null && (pool.getStatus() == StoragePoolStatus.NotOperational)) { resourceManager .getEventListener() .storagePoolStatusChange(parameters.getStoragePoolId(), StoragePoolStatus.NonResponsive, AuditLogType.SYSTEM_CHANGE_STORAGE_POOL_STATUS_RESET_IRS, EngineError.ENGINE); } } else { getVDSReturnValue().setSucceeded(false); } } }