Martin Mucha has uploaded a new change for review.

Change subject: core: added missing logging + refactoring
......................................................................

core: added missing logging + refactoring

org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector#saveToDb
was missing logging in situation, when 'bundles/AuditLogMessages'
resource bundle does not contain specific translation. In that case
AuditLog was silently not created and nothing was logged.

- added missing logging
- overgrown method saveToDb split into few smaller ones.
- removed coding smell when dealing with variables 'message' and
'resolvedMessage'
- simplified test for empty string.

Change-Id: Ic737ace1808e1f242d0eb08ee458869a89be500e
Signed-off-by: Martin Mucha <mmu...@redhat.com>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
1 file changed, 69 insertions(+), 47 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/29244/1

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 0c78641..caeecee 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
@@ -109,40 +109,19 @@
     }
 
     private static void saveToDb(AuditLogableBase auditLogable, AuditLogType 
logType, String loggerString) {
-        String message = null;
-        String resolvedMessage = null;
         AuditLogSeverity severity = logType.getSeverity();
+
+        //TODO MM: shouldn't this be rather warning? This assumption is hardly 
valid.
+        //TODO MM: there's NO such situation when this can happen; and since 
we find this invalid anyway, it should be 'blocked' in AuditLogType constructor.
         if (severity == null) {
             severity = AuditLogSeverity.NORMAL;
             log.infoFormat("No severity for {0} audit log type, assuming 
Normal severity", logType);
         }
-        AuditLog auditLog = null;
-        // 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,
-                    severity,
-                    resolvedMessage,
-                    auditLogable.getUserId(),
-                    auditLogable.getUserId() != null ? 
getDbFacadeInstance().getDbUserDao().get(auditLogable.getUserId()).getLoginName()
 : null,
-                    auditLogable.getVmIdRef(),
-                    auditLogable.getVmIdRef() != null ? 
getDbFacadeInstance().getVmDao().get(auditLogable.getVmIdRef()).getName() : 
null,
-                    auditLogable.getVdsIdRef(),
-                    auditLogable.getVdsIdRef() != null ? 
getDbFacadeInstance().getVdsDao().get(auditLogable.getVdsIdRef()).getName() : 
null,
-                    auditLogable.getVmTemplateIdRef(),
-                    auditLogable.getVmTemplateIdRef() != null ? 
getDbFacadeInstance().getVmTemplateDao().get(auditLogable.getVmTemplateIdRef()).getName()
 : null,
-                    auditLogable.getOrigin(),
-                    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(),
-                    auditLogable.getUserName(), auditLogable.getVmIdRef(), 
auditLogable.getVmName(),
-                    auditLogable.getVdsIdRef(), auditLogable.getVdsName(), 
auditLogable.getVmTemplateIdRef(),
-                    auditLogable.getVmTemplateName());
-        }
-        if (auditLog != null) {
+        AuditLog auditLog = createAuditLog(auditLogable, logType, 
loggerString, severity);
+
+        if (auditLog == null) {
+            log.warn("Unable to create AuditLog");
+        } else {
             auditLog.setstorage_domain_id(auditLogable.getStorageDomainId());
             
auditLog.setstorage_domain_name(auditLogable.getStorageDomainName());
             auditLog.setstorage_pool_id(auditLogable.getStoragePoolId());
@@ -159,27 +138,70 @@
             auditLog.setCallStack(auditLogable.getCallStack());
             auditLog.setMacPoolId(auditLogable.getMacPoolIdForLog());
             auditLog.setMacPoolName(auditLogable.getMacPoolNameForLog());
+
             getDbFacadeInstance().getAuditLogDao().save(auditLog);
-            String logMessage;
-            if (!"".equals(loggerString)) {
-                logMessage = log.transform(loggerString, resolvedMessage);
-            } else {
-                logMessage = auditLog.toStringForLogging();
-            }
+            logMessage(severity, getMessageToLog(loggerString, auditLog));
+        }
+    }
 
-            switch (severity) {
-            case NORMAL:
-                log.info(logMessage);
-                break;
-            case ERROR:
-                log.error(logMessage);
-                break;
-            case ALERT:
-            case WARNING:
-                log.warn(logMessage);
-                break;
-            }
+    private static void logMessage(AuditLogSeverity severity, String 
logMessage) {
+        //TODO MM: rather than this, there could(should?) be OO approach: 
introducing 'log' method on AuditLogSeverity.
+        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()) {
+            String resolvedMessage = loggerString; // message is sent as an 
argument, no need to resolve.
+            return new AuditLog(logType,
+                    severity,
+                    resolvedMessage,
+                    auditLogable.getUserId(),
+                    auditLogable.getUserId() != null ? 
getDbFacadeInstance().getDbUserDao().get(auditLogable.getUserId()).getLoginName()
 : null,
+                    auditLogable.getVmIdRef(),
+                    auditLogable.getVmIdRef() != null ? 
getDbFacadeInstance().getVmDao().get(auditLogable.getVmIdRef()).getName() : 
null,
+                    auditLogable.getVdsIdRef(),
+                    auditLogable.getVdsIdRef() != null ? 
getDbFacadeInstance().getVdsDao().get(auditLogable.getVdsIdRef()).getName() : 
null,
+                    auditLogable.getVmTemplateIdRef(),
+                    auditLogable.getVmTemplateIdRef() != null ? 
getDbFacadeInstance().getVmTemplateDao().get(auditLogable.getVmTemplateIdRef()).getName()
 : null,
+                    auditLogable.getOrigin(),
+                    auditLogable.getCustomEventId(),
+                    auditLogable.getEventFloodInSec(),
+                    auditLogable.getCustomData());
+        }
+
+        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());
         }
     }
 


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic737ace1808e1f242d0eb08ee458869a89be500e
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