Martin Mucha has uploaded a new change for review.

Change subject: core: AuditLogType.UNASSIGNED should not be logged
......................................................................

core: AuditLogType.UNASSIGNED should not be logged

instead of depending on missing translation & failing AuditLog
instance creation, express that using one simple method.

Change-Id: I97bf90264d1a1b3d8ea571daa9346d1f6b6d18d1
Signed-off-by: Martin Mucha <mmu...@redhat.com>
---
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
2 files changed, 93 insertions(+), 87 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/59/33359/1

diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
index 7719bf3..d5a7e38 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
@@ -1085,6 +1085,10 @@
         return severity;
     }
 
+    public boolean shouldBeLogged() {
+        return this != AuditLogType.UNASSIGNED;
+    }
+
     public static AuditLogType forValue(int value) {
         return mappings.get(value);
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
index b579e87..2a0e132 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
@@ -29,7 +29,7 @@
     static final String UNKNOWN_VARIABLE_VALUE = "<UNKNOWN>";
     static final String UNKNOWN_REASON_VALUE = "Not Specified";
     static final String REASON_TOKEN = "reason";
-    private static final String APP_ERRORS_MESSAGES_FILE_NAME = 
"bundles/AuditLogMessages";
+    static final String APP_ERRORS_MESSAGES_FILE_NAME = 
"bundles/AuditLogMessages";
 
     static {
         initMessages();
@@ -38,57 +38,32 @@
     private static void initMessages() {
         ResourceBundle bundle = readMessagesFromBundle();
 
-        for (String key : bundle.keySet()) {
-            try {
-                AuditLogType type = AuditLogType.valueOf(key);
-                if (!messages.containsKey(type)) {
-                    messages.put(type, bundle.getString(key));
-                } else {
-                    log.errorFormat("The type {0} appears more then once in 
audit log messages bundle with the values '{1}' and '{2}'",
-                            type,
-                            messages.get(type),
-                            bundle.getString(key));
-                }
-            } catch (Exception e) {
-                log.errorFormat("Cannot convert the string {0} to 
AuditLogType, the key does not exist in the AuditLogType declared types",
-                        bundle.getString(key));
-            }
+        for (AuditLogType auditLogType : AuditLogType.values()) {
+            messages.put(auditLogType, getMessage(bundle, auditLogType));
         }
-        checkMessages();
     }
 
-    private static ResourceBundle readMessagesFromBundle() {
+    public static String getMessage(ResourceBundle bundle, AuditLogType 
logType) {
+        final String key = logType.name();
+        try {
+            return bundle.getString(key);
+        } catch (Exception e) {
+            log.error("Key '" + key + "' is not translated in '" + 
APP_ERRORS_MESSAGES_FILE_NAME + "'");
+            return "";
+        }
+    }
+
+    static ResourceBundle readMessagesFromBundle() {
         try {
             return ResourceBundle.getBundle(APP_ERRORS_MESSAGES_FILE_NAME);
         } catch (MissingResourceException e) {
-            log.error("Could not load audit log messages from the file " + 
APP_ERRORS_MESSAGES_FILE_NAME);
-            throw e;
+            throw new RuntimeException("Could not load audit log messages from 
the file " +
+                    APP_ERRORS_MESSAGES_FILE_NAME);
         }
     }
 
-    private static void checkMessages() {
-        AuditLogType[] values = AuditLogType.values();
-        if (values.length != messages.size()) {
-            for (AuditLogType value : values) {
-                if (!messages.containsKey(value)) {
-                    log.infoFormat("AuditLogType: {0} not exist in string 
table", value.toString());
-                }
-            }
-        }
-    }
-
-    /**
-     * Gets the message.
-     * @param logType
-     *            Type of the log.
-     * @return
-     */
     public static String getMessage(AuditLogType logType) {
-        String value = "";
-        if (messages.containsKey(logType)) {
-            value = messages.get(logType);
-        }
-        return value;
+        return messages.get(logType);
     }
 
     public static void log(AuditLogableBase auditLogable) {
@@ -101,6 +76,10 @@
     }
 
     public static void log(AuditLogableBase auditLogable, AuditLogType 
logType, String loggerString) {
+        if (!logType.shouldBeLogged()) {
+            return;
+        }
+
         updateTimeoutLogableObject(auditLogable, logType);
 
         if (auditLogable.getLegal()) {
@@ -109,18 +88,72 @@
     }
 
     private static void saveToDb(AuditLogableBase auditLogable, AuditLogType 
logType, String loggerString) {
-        String message = null;
-        String resolvedMessage = null;
         AuditLogSeverity severity = logType.getSeverity();
+
         if (severity == null) {
             severity = AuditLogSeverity.NORMAL;
             log.infoFormat("No severity for {0} audit log type, assuming 
Normal severity", logType);
         }
-        AuditLog auditLog = null;
+        AuditLog auditLog = createAuditLog(auditLogable, logType, 
loggerString, severity);
+
+        if (auditLog == null) {
+            log.warn("Unable to create AuditLog");
+        } else {
+            setPropertiesFromAuditLogableBase(auditLogable, auditLog);
+
+            getDbFacadeInstance().getAuditLogDao().save(auditLog);
+            logMessage(severity, getMessageToLog(loggerString, auditLog));
+        }
+    }
+
+    private static void setPropertiesFromAuditLogableBase(AuditLogableBase 
auditLogable, AuditLog auditLog) {
+        auditLog.setstorage_domain_id(auditLogable.getStorageDomainId());
+        auditLog.setstorage_domain_name(auditLogable.getStorageDomainName());
+        auditLog.setstorage_pool_id(auditLogable.getStoragePoolId());
+        auditLog.setstorage_pool_name(auditLogable.getStoragePoolName());
+        auditLog.setvds_group_id(auditLogable.getVdsGroupId());
+        auditLog.setvds_group_name(auditLogable.getVdsGroupName());
+        auditLog.setCorrelationId(auditLogable.getCorrelationId());
+        auditLog.setJobId(auditLogable.getJobId());
+        auditLog.setGlusterVolumeId(auditLogable.getGlusterVolumeId());
+        auditLog.setGlusterVolumeName(auditLogable.getGlusterVolumeName());
+        auditLog.setExternal(auditLogable.isExternal());
+        auditLog.setQuotaId(auditLogable.getQuotaIdForLog());
+        auditLog.setQuotaName(auditLogable.getQuotaNameForLog());
+        auditLog.setCallStack(auditLogable.getCallStack());
+    }
+
+    private static void logMessage(AuditLogSeverity severity, String 
logMessage) {
+        switch (severity) {
+        case NORMAL:
+            log.info(logMessage);
+            break;
+        case ERROR:
+            log.error(logMessage);
+            break;
+        case ALERT:
+        case WARNING:
+        default:
+            log.warn(logMessage);
+            break;
+        }
+    }
+
+    private static String getMessageToLog(String loggerString, AuditLog 
auditLog) {
+        String logMessage;
+        if (loggerString.isEmpty()) {
+            logMessage = auditLog.toStringForLogging();
+        } else {
+            logMessage = log.transform(loggerString, auditLog.getmessage());
+        }
+        return logMessage;
+    }
+
+    private static AuditLog createAuditLog(AuditLogableBase auditLogable, 
AuditLogType logType, String loggerString, AuditLogSeverity severity) {
         // handle external log messages invoked by plugins via the API
         if (auditLogable.isExternal()) {
-            resolvedMessage = message = loggerString; // message is sent as an 
argument, no need to resolve.
-            auditLog = new AuditLog(logType,
+            String resolvedMessage = loggerString; // message is sent as an 
argument, no need to resolve.
+            return new AuditLog(logType,
                     severity,
                     resolvedMessage,
                     auditLogable.getUserId(),
@@ -135,49 +168,18 @@
                     auditLogable.getCustomEventId(),
                     auditLogable.getEventFloodInSec(),
                     auditLogable.getCustomData());
-        } else if ((message = messages.get(logType)) != null) { // Application 
log message from AuditLogMessages
-            resolvedMessage = resolveMessage(message, auditLogable);
-            auditLog = new AuditLog(logType, severity, resolvedMessage, 
auditLogable.getUserId(),
+        }
+
+        final String messageByType = messages.get(logType);
+        if (messageByType == null) {
+            return null;
+        } else {
+            // Application log message from AuditLogMessages
+            String resolvedMessage = resolveMessage(messageByType, 
auditLogable);
+            return new AuditLog(logType, severity, resolvedMessage, 
auditLogable.getUserId(),
                     auditLogable.getUserName(), auditLogable.getVmIdRef(), 
auditLogable.getVmName(),
                     auditLogable.getVdsIdRef(), auditLogable.getVdsName(), 
auditLogable.getVmTemplateIdRef(),
                     auditLogable.getVmTemplateName());
-        }
-        if (auditLog != null) {
-            auditLog.setstorage_domain_id(auditLogable.getStorageDomainId());
-            
auditLog.setstorage_domain_name(auditLogable.getStorageDomainName());
-            auditLog.setstorage_pool_id(auditLogable.getStoragePoolId());
-            auditLog.setstorage_pool_name(auditLogable.getStoragePoolName());
-            auditLog.setvds_group_id(auditLogable.getVdsGroupId());
-            auditLog.setvds_group_name(auditLogable.getVdsGroupName());
-            auditLog.setCorrelationId(auditLogable.getCorrelationId());
-            auditLog.setJobId(auditLogable.getJobId());
-            auditLog.setGlusterVolumeId(auditLogable.getGlusterVolumeId());
-            auditLog.setGlusterVolumeName(auditLogable.getGlusterVolumeName());
-            auditLog.setExternal(auditLogable.isExternal());
-            auditLog.setQuotaId(auditLogable.getQuotaIdForLog());
-            auditLog.setQuotaName(auditLogable.getQuotaNameForLog());
-            auditLog.setCallStack(auditLogable.getCallStack());
-            getDbFacadeInstance().getAuditLogDao().save(auditLog);
-            String logMessage;
-            if (!"".equals(loggerString)) {
-                logMessage = log.transform(loggerString, resolvedMessage);
-            } else {
-                logMessage = auditLog.toStringForLogging();
-            }
-
-            switch (severity) {
-            case NORMAL:
-                log.info(logMessage);
-                break;
-            case ERROR:
-                log.error(logMessage);
-                break;
-            case ALERT:
-            case WARNING:
-                log.warn(logMessage);
-                break;
-            }
-
         }
     }
 


-- 
To view, visit http://gerrit.ovirt.org/33359
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I97bf90264d1a1b3d8ea571daa9346d1f6b6d18d1
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Mucha <mmu...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to