diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditingManager.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditingManager.java | 228 |
1 files changed, 129 insertions, 99 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditingManager.java b/catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditingManager.java index aa5afa4a8e..19eab0a409 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditingManager.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/auditing/impl/AuditingManager.java @@ -20,12 +20,7 @@ package org.openecomp.sdc.be.auditing.impl; -import java.util.EnumMap; -import java.util.Map.Entry; - -import javax.annotation.Resource; - -import org.openecomp.sdc.be.auditing.api.IAuditingManager; +import org.openecomp.sdc.be.auditing.api.AuditEventFactory; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.dao.api.ActionStatus; import org.openecomp.sdc.be.dao.cassandra.AuditCassandraDao; @@ -39,99 +34,134 @@ import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum; import org.openecomp.sdc.common.util.ThreadLocalsHolder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -@Component("auditingManager") -public class AuditingManager implements IAuditingManager { - - private static Logger log = LoggerFactory.getLogger(AuditingManager.class.getName()); - - @Resource - private AuditingDao auditingDao; - @Autowired - private AuditCassandraDao cassandraDao; - - @Override - public void auditEvent(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) { - try { - boolean disableAudit = ConfigurationManager.getConfigurationManager().getConfiguration().isDisableAudit(); - if (disableAudit) { - return; - } - // Adding UUID from thread local - auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, ThreadLocalsHolder.getUuid()); - - Object status = auditingFields.get(AuditingFieldsKeysEnum.AUDIT_STATUS); - auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, String.valueOf(status)); - - // normalizing empty string values - US471661 - normalizeEmptyAuditStringValues(auditingFields); - - // Format modifier - formatModifier(auditingFields); - - // Format user - formatUser(auditingFields); - - // Logging the event - AuditingLogFormatUtil.logAuditEvent(auditingFields); - - // Determining the type of the auditing data object - AuditingActionEnum actionEnum = AuditingActionEnum.getActionByName((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_ACTION)); - log.info("audit event {} of type {}", actionEnum.getName(), actionEnum.getAuditingEsType()); - ActionStatus addRecordStatus = auditingDao.addRecord(auditingFields, actionEnum.getAuditingEsType()); - if (!addRecordStatus.equals(ActionStatus.OK)) { - log.warn("Failed to persist auditing event: {}", addRecordStatus.name()); - } - - AuditingGenericEvent recordForCassandra = AuditRecordFactory.createAuditRecord(auditingFields); - if (recordForCassandra != null) { - CassandraOperationStatus result = cassandraDao.saveRecord(recordForCassandra); - if (!result.equals(CassandraOperationStatus.OK)) { - log.warn("Failed to persist to cassandra auditing event: {}", addRecordStatus.name()); - } - } - - } catch (Exception e) { - // Error during auditing shouldn't terminate flow - log.warn("Error during auditEvent: {}", e); - } - } - - private void formatUser(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) { - if (auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID) != null) { - String userDetails = (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID); - - String user = AuditingLogFormatUtil.getUser(userDetails); - auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_UID, user); - } - } - - private void formatModifier(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) { - String modifier = AuditingLogFormatUtil.getModifier((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME), (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID)); - auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier); - auditingFields.remove(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME); - } - - private void normalizeEmptyAuditStringValues(EnumMap<AuditingFieldsKeysEnum, Object> auditingFields) { - for (Entry<AuditingFieldsKeysEnum, Object> auditingEntry : auditingFields.entrySet()) { - if (auditingEntry.getKey().getValueClass().equals(String.class)) { - String auditingValue = (String) auditingEntry.getValue(); - boolean isEmpty = false; - if (auditingValue != null) { - String trimmedValue = auditingValue.trim(); - if ((trimmedValue.equals(Constants.EMPTY_STRING)) || trimmedValue.equals(Constants.NULL_STRING) || trimmedValue.equals(Constants.DOUBLE_NULL_STRING)) { - isEmpty = true; - } - } else {// is null - isEmpty = true; - } - // Normalizing to "" - if (isEmpty) { - auditingEntry.setValue(Constants.EMPTY_STRING); - } - } - } - } +import java.util.Map; +import java.util.Map.Entry; + +@Component +public class AuditingManager { + + private static final Logger log = LoggerFactory.getLogger(AuditingManager.class); + private final AuditingDao auditingDao; + private final AuditCassandraDao cassandraDao; + + public AuditingManager(AuditingDao auditingDao, AuditCassandraDao cassandraDao) { + this.auditingDao = auditingDao; + this.cassandraDao = cassandraDao; + } + + // TODO remove after completing refactoring + public String auditEvent(Map<AuditingFieldsKeysEnum, Object> auditingFields) { + String msg = ""; + try { + boolean disableAudit = ConfigurationManager.getConfigurationManager().getConfiguration().isDisableAudit(); + if (disableAudit) { + return null; + } + // Adding UUID from thread local + auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, ThreadLocalsHolder.getUuid()); + + Object status = auditingFields.get(AuditingFieldsKeysEnum.AUDIT_STATUS); + auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, String.valueOf(status)); + + // normalizing empty string values - US471661 + normalizeEmptyAuditStringValues(auditingFields); + + // Format modifier + formatModifier(auditingFields); + + // Format user + formatUser(auditingFields); + + // Logging the event + msg = AuditingLogFormatUtil.logAuditEvent(auditingFields); + + // Determining the type of the auditing data object + AuditingActionEnum actionEnum = AuditingActionEnum.getActionByName((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_ACTION)); + log.info("audit event {} of type {}", actionEnum.getName(), actionEnum.getAuditingEsType()); + ActionStatus addRecordStatus = auditingDao.addRecord(auditingFields, actionEnum.getAuditingEsType()); + if (!addRecordStatus.equals(ActionStatus.OK)) { + log.warn("Failed to persist auditing event: {}", addRecordStatus); + } + + AuditingGenericEvent recordForCassandra = AuditRecordFactory.createAuditRecord(auditingFields); + if (recordForCassandra != null) { + saveEventToCassandra(recordForCassandra); + } + + } catch (Exception e) { + // Error during auditing shouldn't terminate flow + log.warn("Error during auditEvent: {}", e); + } + return msg; + } + + + public String auditEvent(AuditEventFactory factory) { + if (ConfigurationManager.getConfigurationManager().getConfiguration().isDisableAudit()) { + return null; + } + AuditingGenericEvent event = factory.getDbEvent(); + // Logging the event + //TODO - change this call after EELF Audit stuff merge + String msg = factory.getLogMessage(); + AuditingLogFormatUtil.logAuditEvent(msg); + + //TODO - remove this method after we got rid of ES + saveEventToElasticSearch(factory, event); + saveEventToCassandra(event); + return msg; + } + + private void saveEventToCassandra(AuditingGenericEvent event) { + CassandraOperationStatus result = cassandraDao.saveRecord(event); + if (!result.equals(CassandraOperationStatus.OK)) { + log.warn("Failed to persist to cassandra auditing event: {}", result.name()); + } + } + + private void saveEventToElasticSearch(AuditEventFactory factory, AuditingGenericEvent event) { + ActionStatus addRecordStatus = auditingDao.addRecord(event, factory.getAuditingEsType()); + if (!addRecordStatus.equals(ActionStatus.OK)) { + log.warn("Failed to persist auditing event: {}", addRecordStatus.name()); + } + } + + + private void formatUser(Map<AuditingFieldsKeysEnum, Object> auditingFields) { + if (auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID) != null) { + String userDetails = (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_USER_UID); + + String user = AuditingLogFormatUtil.getUser(userDetails); + auditingFields.put(AuditingFieldsKeysEnum.AUDIT_USER_UID, user); + } + } + + private void formatModifier(Map<AuditingFieldsKeysEnum, Object> auditingFields) { + String modifier = AuditingLogFormatUtil.getModifier((String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME), (String) auditingFields.get(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID)); + auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier); + auditingFields.remove(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME); + } + + private void normalizeEmptyAuditStringValues(Map<AuditingFieldsKeysEnum, Object> auditingFields) { + for (Entry<AuditingFieldsKeysEnum, Object> auditingEntry : auditingFields.entrySet()) { + if (auditingEntry.getKey().getValueClass().equals(String.class)) { + String auditingValue = (String) auditingEntry.getValue(); + boolean isEmpty = false; + if (auditingValue != null) { + String trimmedValue = auditingValue.trim(); + if ((trimmedValue.equals(Constants.EMPTY_STRING)) || trimmedValue.equals(Constants.NULL_STRING) || trimmedValue.equals(Constants.DOUBLE_NULL_STRING)) { + isEmpty = true; + } + } else {// is null + isEmpty = true; + } + // Normalizing to "" + if (isEmpty) { + auditingEntry.setValue(Constants.EMPTY_STRING); + } + } + } + } } |