package org.ovirt.engine.core.common.businessentities;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.errors.EngineError;
import org.ovirt.engine.core.common.eventqueue.EventResult;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.TransactionScopeOption;
public interface IVdsEventListener {
void vdsNotResponding(VDS vds); // BLL
void vdsNonOperational(Guid vdsId, NonOperationalReason type, boolean logCommand, Guid domainId); // BLL
void vdsNonOperational(Guid vdsId, NonOperationalReason type, boolean logCommand, Guid domainId,
Map<String, String> customLogValues); // BLL
void vdsMovedToMaintenance(VDS vds); // BLL
EventResult storageDomainNotOperational(Guid storageDomainId, Guid storagePoolId); // BLL
EventResult masterDomainNotOperational(Guid storageDomainId, Guid storagePoolId, boolean isReconstructToInactiveDomains, boolean canReconstructToCurrentMaster); // BLL
void processOnVmStop(Collection<Guid> vmIds, Guid hostId);
boolean vdsUpEvent(VDS vds);
boolean connectHostToDomainsInActiveOrUnknownStatus(VDS vds);
void processOnCpuFlagsChange(Guid vdsId);
void processOnVmPoweringUp(Guid vmId);
void handleVdsVersion(Guid vdsId);
void rerun(Guid vmId);
void runningSucceded(Guid vmId);
void actualDowntimeReported(Guid vmId, int actualDowntime);
void removeAsyncRunningCommand(Guid vmId);
void storagePoolUpEvent(StoragePool storagePool);
void storagePoolStatusChange(Guid storagePoolId, StoragePoolStatus status, AuditLogType auditLogType,
EngineError error);
void storagePoolStatusChange(Guid storagePoolId, StoragePoolStatus status, AuditLogType auditLogType,
EngineError error, TransactionScopeOption transactionScopeOption);
void storagePoolStatusChanged(Guid storagePoolId, StoragePoolStatus status);
void runFailedAutoStartVMs(List<Guid> vmIds);
void runColdRebootVms(List<Guid> vmIds);
void addUnmanagedVms(Guid hostId, List<Guid> unmanagedVmIds);
void handleVdsMaintenanceTimeout(Guid vdsId);
/**
* update host's scheduling related properties
*/
void updateSchedulingStats(VDS vds); // BLL
void syncLunsInfoForBlockStorageDomain(final Guid storageDomainId, final Guid vdsId);
/**
* Updates VMs QoS
*/
void updateSlaPolicies(List<Guid> vmIds, Guid vdsId);
void refreshHostIfAnyVmHasHostDevices(List<Guid> vmIds, Guid hostId);
void refreshHostCapabilities(Guid hostId);
void importHostedEngineVm(VM vm);
void restartVmsWithLease(List<Guid> vmIds);
}