package org.ovirt.engine.core.bll.host;
import java.util.EnumSet;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.ovirt.engine.core.bll.interfaces.BackendInternal;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.HostUpgradeManagerResult;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.VDSType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
import org.ovirt.engine.core.common.queries.VdcQueryType;
import org.ovirt.engine.core.common.utils.RpmVersionUtils;
import org.ovirt.engine.core.compat.RpmVersion;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
@Singleton
public class OvirtNodeUpgradeManager implements UpdateAvailable {
@Inject
private AuditLogDirector auditLogDirector;
@Inject
private BackendInternal backendInternal;
@Override
public HostUpgradeManagerResult checkForUpdates(VDS host) {
VdcQueryReturnValue returnValue =
backendInternal.runInternalQuery(VdcQueryType.GetoVirtISOs, new IdQueryParameters(host.getId()));
List<RpmVersion> isos = returnValue.getReturnValue();
boolean updateAvailable = RpmVersionUtils.isUpdateAvailable(isos, host.getHostOs());
HostUpgradeManagerResult hostUpgradeManagerResult = new HostUpgradeManagerResult();
hostUpgradeManagerResult.setUpdatesAvailable(updateAvailable);
if (updateAvailable) {
AuditLogableBase auditLog = new AuditLogableBase();
auditLog.setVdsName(host.getName());
auditLogDirector.log(auditLog, AuditLogType.HOST_UPDATES_ARE_AVAILABLE);
}
return hostUpgradeManagerResult;
}
@Override
public EnumSet<VDSType> getHostTypes() {
return EnumSet.of(VDSType.oVirtVintageNode);
}
}