package org.ovirt.engine.core.bll.utils;
import java.util.Collections;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
import org.ovirt.engine.core.di.Injector;
/**
* Log Helper for gluster related audit logs. Provides convenience methods to create audit logs related to a gluster
* cluster, volume, or server. While the AuditLogDirector is sufficient for logging from regular BLL commands, this
* class can be used for creating audit logs from other places, e.g. GlusterManager
*/
@Singleton
public class GlusterAuditLogUtil {
@Inject
private AuditLogDirector auditLogDirector;
public void logVolumeMessage(final GlusterVolumeEntity volume, final AuditLogType logType) {
logAuditMessage(volume.getClusterId(), volume, null, logType, Collections.emptyMap());
}
public void logServerMessage(final VDS server, final AuditLogType logType) {
logAuditMessage(server == null ? Guid.Empty : server.getClusterId(),
null,
server,
logType,
Collections.emptyMap());
}
public void logAuditMessage(final Guid clusterId,
final GlusterVolumeEntity volume,
final VDS server,
final AuditLogType logType,
final Map<String, String> customValues) {
AuditLogableBase logable = Injector.injectMembers(new AuditLogableBase());
logable.setVds(server);
logable.setGlusterVolume(volume);
logable.setClusterId(clusterId);
if (customValues != null) {
customValues.entrySet().forEach(e -> logable.addCustomValue(e.getKey(), e.getValue()));
}
auditLogDirector.log(logable, logType);
}
public void logAuditMessage(final Guid clusterId,
final GlusterVolumeEntity volume,
final VDS server,
final AuditLogType logType,
final Guid brickId,
final String brickPath) {
AuditLogableBase logable = Injector.injectMembers(new AuditLogableBase());
logable.setVds(server);
logable.setGlusterVolume(volume);
logable.setClusterId(clusterId);
logable.setBrickId(brickId);
logable.setBrickPath(brickPath);
auditLogDirector.log(logable, logType);
}
}