@Override public Object getQueryableId() { return getAuditLogId(); }
private void logMessage(AuditLog auditLog) { String logMessage = getMessageToLog(auditLog); switch (auditLog.getSeverity()) { case NORMAL: log.info(logMessage); break; case ERROR: log.error(logMessage); break; case ALERT: case WARNING: default: log.warn(logMessage); break; } }
public AuditLogableBase(final AuditLog auditLog) { this(auditLog.getVdsId(), auditLog.getVmId()); this.storageDomainId = auditLog.getStorageDomainId(); this.storagePoolId = auditLog.getStoragePoolId(); this.correlationId = auditLog.getCorrelationId(); this.customData = auditLog.getCustomData(); this.customEventId = auditLog.getCustomEventId(); this.eventFloodInSec = auditLog.getEventFloodInSec(); this.glusterVolumeId = auditLog.getGlusterVolumeId(); this.glusterVolumeName = auditLog.getGlusterVolumeName(); this.jobId = auditLog.getJobId(); this.userId = auditLog.getUserId(); this.userName = auditLog.getUserName(); this.clusterId = auditLog.getClusterId(); this.vdsName = auditLog.getVdsName(); this.vmName = auditLog.getVmName(); this.vmTemplateId = auditLog.getVmTemplateId(); this.vmTemplateName = auditLog.getVmTemplateName(); this.origin = auditLog.getOrigin(); this.external = auditLog.isExternal(); this.callStack = auditLog.getCallStack(); this.brickId = auditLog.getBrickId(); this.brickPath = auditLog.getBrickPath(); }
private String getMessageToLog(AuditLog auditLog) { return MessageFormat.format("EVENT_ID: {0}({1}), {2}", auditLog.getLogType(), auditLog.getLogType().getValue(), auditLog.getMessage()); }
private MapSqlParameterSource getSqlMapper(AuditLog event) { return getCustomMapSqlParameterSource() .addValue("audit_log_id", event.getAuditLogId()) .addValue("log_time", event.getLogTime()) .addValue("log_type", event.getLogType()) .addValue("log_type_name", event.getLogTypeName()) .addValue("severity", event.getSeverity()) .addValue("message", event.getMessage()) .addValue("user_id", event.getUserId()) .addValue("user_name", event.getUserName()) .addValue("vds_id", event.getVdsId()) .addValue("vds_name", event.getVdsName()) .addValue("vm_id", event.getVmId()) .addValue("vm_name", event.getVmName()) .addValue("vm_template_id", event.getVmTemplateId()) .addValue("vm_template_name", event.getVmTemplateName()) .addValue("storage_pool_id", event.getStoragePoolId()) .addValue("storage_pool_name", event.getStoragePoolName()) .addValue("storage_domain_id", event.getStorageDomainId()) .addValue("storage_domain_name", event.getStorageDomainName()) .addValue("cluster_id", event.getClusterId()) .addValue("cluster_name", event.getClusterName()) .addValue("correlation_id", event.getCorrelationId()) .addValue("job_id", event.getJobId()) .addValue("quota_id", event.getQuotaId()) .addValue("quota_name", event.getQuotaName()) .addValue("gluster_volume_id", event.getGlusterVolumeId()) .addValue("gluster_volume_name", event.getGlusterVolumeName()) .addValue("call_stack", event.getCallStack()) .addValue("repeatable", event.isRepeatable())
@Mapping(from = AuditLog.class, to = Event.class) public static Event map(AuditLog entity, Event event) { Event model = event != null ? event : new Event(); model.setId(String.valueOf(entity.getAuditLogId())); model.setIndex((int) entity.getAuditLogId()); model.setCode(entity.getLogType().getValue()); model.setSeverity(map(entity.getSeverity(), null)); model.setTime(TypeConversionHelper.toXMLGregorianCalendar(entity .getLogTime(), null)); model.setDescription(entity.getMessage()); boolean idValid = entity.getUserId()!=null && !entity.getUserId().equals(Guid.Empty); boolean nameValid = !StringUtils.isEmpty(entity.getUserName()); user.setId(entity.getUserId().toString()); user.setName(entity.getUserName()); idValid = entity.getVmId()!=null && !entity.getVmId().equals(Guid.Empty); nameValid = !StringUtils.isEmpty(entity.getVmName()); vm.setId(entity.getVmId().toString()); vm.setName(entity.getVmName()); idValid = entity.getStorageDomainId()!=null && !entity.getStorageDomainId().equals(Guid.Empty); nameValid = !StringUtils.isEmpty(entity.getStorageDomainName()); sd.setId(entity.getStorageDomainId().toString());
@BeforeEach @Override public void setUp() throws Exception { super.setUp(); // create some test data newAuditLog = new AuditLog(); newAuditLog.setAuditLogId(44000); newAuditLog.setUserId(new Guid("9bf7c640-b620-456f-a550-0348f366544b")); newAuditLog.setUserName("userportal3"); newAuditLog.setVmId(VM_ID); newAuditLog.setVmName(VM_NAME); newAuditLog.setVmTemplateId(VM_TEMPLATE_ID); newAuditLog.setVmTemplateName(VM_TEMPLATE_NAME); newAuditLog.setVdsId(FixturesTool.VDS_RHEL6_NFS_SPM); newAuditLog.setVdsName(FixturesTool.GLUSTER_SERVER_NAME3); newAuditLog.setLogTime(EXPECTED_DATE_FORMAT.parse("2010-12-22 14:00:00")); newAuditLog.setLogType(AuditLogType.IRS_DISK_SPACE_LOW_ERROR); newAuditLog.setSeverity(AuditLogSeverity.ERROR); newAuditLog.setMessage("Critical, Low disk space. domain has 1 GB of free space"); newAuditLog.setStoragePoolId(FixturesTool.DATA_CENTER); newAuditLog.setStoragePoolName("rhel6.iscsi"); newAuditLog.setStorageDomainId(FixturesTool.STORAGE_DOMAIN_SCALE_SD5); newAuditLog.setStorageDomainName("fDMzhE-wx3s-zo3q-Qcxd-T0li-yoYU-QvVePk"); newAuditLog.setQuotaId(FixturesTool.DEFAULT_QUOTA_GENERAL); newAuditLog.setQuotaName("General Quota"); newAuditLog.setGlusterVolumeId(new Guid("0e0abdbc-2a0f-4df0-8b99-cc577a7a9bb5")); newAuditLog.setGlusterVolumeName("gluster_volume_name-1"); existingAuditLog = dao.get(EXISTING_ENTRY_ID); externalAuditLog = dao.get(EXTERNAL_ENTRY_ID); }
@Test public void testSaveExternalEvent() { AuditLog newExternalEvent = new AuditLog(); newExternalEvent.setLogType(AuditLogType.EXTERNAL_EVENT_NORMAL); newExternalEvent.setExternal(true); newExternalEvent.setOrigin("XYZ"); newExternalEvent.setCustomEventId(123123123); newExternalEvent.setCustomData("Some text here"); newExternalEvent.setMessage("And here"); newExternalEvent.setEventFloodInSec(100); dao.save(newExternalEvent); AuditLog result = dao.get(newExternalEvent.getAuditLogId()); assertNotNull(result); assertTrue(result.getAuditLogId() > 0); assertEquals(newExternalEvent.getOrigin(), result.getOrigin()); assertEquals(newExternalEvent.getCustomEventId(), result.getCustomEventId()); assertEquals(newExternalEvent.getCustomData(), result.getCustomData()); assertEquals(newExternalEvent.getMessage(), result.getMessage()); assertEquals(newExternalEvent.getEventFloodInSec(), result.getEventFloodInSec()); }
protected org.ovirt.engine.core.common.businessentities.AuditLog getEntity(int index) { AuditLog auditLogMock = mock(org.ovirt.engine.core.common.businessentities.AuditLog.class); when(auditLogMock.getAuditLogId()).thenReturn(LOG_IDS[index]); when(auditLogMock.getSeverity()).thenReturn(AuditLogSeverity.ALERT); when(auditLogMock.getMessage()).thenReturn(MESSAGES[index]); when(auditLogMock.getOrigin()).thenReturn(ORIGIN_NAMES[index]); when(auditLogMock.getCustomEventId()).thenReturn(CUSTOMER_EVENT_IDS[index]); when(auditLogMock.getLogType()).thenReturn(AuditLogType.EXTERNAL_ALERT); when(auditLogMock.getLogTime()).thenReturn(new Date()); return auditLogMock; }
@Mapping(from = Event.class, to = AuditLog.class) public static AuditLog map(Event event, AuditLog entity) { AuditLog auditLog = (entity != null) ? entity : new AuditLog(); AuditLogSeverity severity = map(event.getSeverity(), null); if (severity != null) { auditLog.setSeverity(severity); auditLog.setLogTime(event.isSetTime() ? event.getTime().toGregorianCalendar().getTime() : new Date(Calendar.getInstance().getTimeInMillis())); auditLog.setMessage(event.getDescription()); if (event.isSetUser() && event.getUser().isSetId()) { Guid guid = GuidUtils.asGuid(event.getUser().getId()); if (!Guid.isNullOrEmpty(guid)) { auditLog.setUserId(guid); Guid guid = GuidUtils.asGuid(event.getVm().getId()); if (!Guid.isNullOrEmpty(guid)) { auditLog.setVmId(guid); Guid guid = GuidUtils.asGuid(event.getStorageDomain().getId()); if (!Guid.isNullOrEmpty(guid)) { auditLog.setStorageDomainId(guid); Guid guid = GuidUtils.asGuid(event.getHost().getId()); if (!Guid.isNullOrEmpty(guid)) { auditLog.setVdsId(guid); Guid guid = GuidUtils.asGuid(event.getTemplate().getId()); if (!Guid.isNullOrEmpty(guid)) { auditLog.setVmTemplateId(guid);
/** * Checks if multiple alerts of the same type for the same host are saved if repeatable is set to {@code true} */ @Test public void testMultipleAlertsWithSameTypeAndHostAreSavedIfRepeatableTrue() { AuditLog entry = new AuditLog(AuditLogType.VDS_ALERT_FENCE_DISABLED_BY_CLUSTER_POLICY, AuditLogSeverity.ALERT); entry.setVdsId(FixturesTool.VDS_RHEL6_NFS_SPM); entry.setVdsName(FixturesTool.GLUSTER_SERVER_NAME3); entry.setMessage("Testing alert"); entry.setRepeatable(true); // test if no alert of the same type for the same host exists assertEquals(0L, getAlertCount(entry, dao.getAll(null, false))); dao.save(entry); AuditLog savedAlert = dao.get(entry.getAuditLogId()); assertNotNull(savedAlert); // test if 1st alert was stored in db assertEquals(1L, getAlertCount(entry, dao.getAll(null, false))); // try to save 2nd alert entry.setLogTime(new Date()); dao.save(entry); savedAlert = dao.get(entry.getAuditLogId()); assertNotNull(savedAlert); // test if 2nd alert was also stored in db assertEquals(2L, getAlertCount(entry, dao.getAll(null, false))); }
@Override protected AuditLog getEntity(int index) { AuditLog auditLog = mock(AuditLog.class); when(auditLog.getAuditLogId()).thenReturn(LOG_IDS[index]); when(auditLog.getLogType()).thenReturn(AuditLogType.EXTERNAL_ALERT); when(auditLog.getSeverity()).thenReturn(AuditLogSeverity.ALERT); when(auditLog.getLogTime()).thenReturn(new Date()); return auditLog; } }
private long getAlertCount(AuditLog entry, List<AuditLog> results) { return results.stream() .filter(a -> a.getSeverity() == entry.getSeverity() && entry.getVdsId().equals(a.getVdsId()) && a.getLogType() == entry.getLogType()) .count(); }
public String getLogTypeName() { return getLogType().name(); }
/** * Ensures that removing an AuditLog works as expected. */ @Test public void testRemove() { dao.remove(existingAuditLog.getAuditLogId()); AuditLog result = dao.get(existingAuditLog.getAuditLogId()); assertTrue(result.isDeleted()); }
protected void refreshModel() { AsyncQuery<QueryReturnValue> query = new AsyncQuery<>(returnValue -> { List<AuditLog> newEvents = returnValue.getReturnValue(); List<AuditLog> currentEvents = (List<AuditLog>) getItems(); if (isDisplayEventsOnly()) { newEvents = newEvents.stream() .filter(e -> e.getSeverity() != AuditLogSeverity.ALERT) .collect(Collectors.toList()); } if (!newEvents.isEmpty() && currentEvents != null && (currentEvents.isEmpty() || !currentEvents.get(0).equals(newEvents.get(0)))) { //We received some new events, tell the active models to update. RefreshActiveModelEvent.fire(EventListModel.this, false); } EventListModel.this.setItems(newEvents); EventListModel.this.setLastEvent(Linq.firstOrNull(newEvents)); }); SearchParameters params = new SearchParameters(applySortOptions(getSearchString()), SearchType.AuditLog, isCaseSensitiveSearch()); params.setMaxCount(getSearchPageSize()); params.setRefresh(false); Frontend.getInstance().runQuery(QueryType.Search, params, query); }
@Override public String getValue(AuditLog object) { return object.getMessage(); } };
@Override public String getValue(AuditLog object) { return object.getOrigin(); } };
@Override public String getValue(AuditLog object) { int id = object.getCustomEventId(); return id >= 0 ? String.valueOf(id) : ""; //$NON-NLS-1$ } };
@Override protected Date getRawValue(AuditLog object) { return object.getLogTime(); } };