Oved Ourfali has uploaded a new change for review.

Change subject: Add new column to audit_log SQL table for stack trace
......................................................................

Add new column to audit_log SQL table for stack trace

This patch adds a call stack column to the audit_log table.

Change-Id: I9c61ab5e1efff01d26594bbddb43060a86641de3
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=966198
Signed-off-by: Oved Ourfali <[email protected]>
---
M backend/manager/dbscripts/audit_log_sp.sql
A backend/manager/dbscripts/upgrade/03_03_0220_add_stack_trace_to_audit_log.sql
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AuditLog.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogDirector.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAODbFacadeImpl.java
M backend/manager/modules/dal/src/test/resources/fixtures.xml
7 files changed, 38 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/11/15811/1

diff --git a/backend/manager/dbscripts/audit_log_sp.sql 
b/backend/manager/dbscripts/audit_log_sp.sql
index 41eb1f4..2093d78 100644
--- a/backend/manager/dbscripts/audit_log_sp.sql
+++ b/backend/manager/dbscripts/audit_log_sp.sql
@@ -27,7 +27,8 @@
     v_correlation_id VARCHAR(50),
     v_job_id UUID,
     v_gluster_volume_id UUID,
-    v_gluster_volume_name VARCHAR(1000))
+    v_gluster_volume_name VARCHAR(1000),
+    v_call_stack text)
    AS $procedure$
    DECLARE
    v_min_alret_severity  INTEGER;
@@ -36,15 +37,15 @@
        -- insert regular log messages (non alerts)
       if (v_severity < v_min_alret_severity) then
 
-INSERT INTO audit_log(LOG_TIME, log_type, log_type_name, severity,message, 
user_id, USER_NAME, vds_id, VDS_NAME, vm_id, 
VM_NAME,vm_template_id,VM_TEMPLATE_NAME,storage_pool_id,STORAGE_POOL_NAME,storage_domain_id,STORAGE_DOMAIN_NAME,vds_group_id,vds_group_name,
 correlation_id, job_id, quota_id, quota_name, gluster_volume_id, 
gluster_volume_name)
-               VALUES(v_log_time, v_log_type, v_log_type_name, v_severity, 
v_message, v_user_id, v_user_name, v_vds_id, v_vds_name, v_vm_id, 
v_vm_name,v_vm_template_id,v_vm_template_name,v_storage_pool_id,v_storage_pool_name,v_storage_domain_id,v_storage_domain_name,v_vds_group_id,v_vds_group_name,
 v_correlation_id, v_job_id, v_quota_id, v_quota_name, v_gluster_volume_id, 
v_gluster_volume_name);
+INSERT INTO audit_log(LOG_TIME, log_type, log_type_name, severity,message, 
user_id, USER_NAME, vds_id, VDS_NAME, vm_id, 
VM_NAME,vm_template_id,VM_TEMPLATE_NAME,storage_pool_id,STORAGE_POOL_NAME,storage_domain_id,STORAGE_DOMAIN_NAME,vds_group_id,vds_group_name,
 correlation_id, job_id, quota_id, quota_name, gluster_volume_id, 
gluster_volume_name, call_stack)
+               VALUES(v_log_time, v_log_type, v_log_type_name, v_severity, 
v_message, v_user_id, v_user_name, v_vds_id, v_vds_name, v_vm_id, 
v_vm_name,v_vm_template_id,v_vm_template_name,v_storage_pool_id,v_storage_pool_name,v_storage_domain_id,v_storage_domain_name,v_vds_group_id,v_vds_group_name,
 v_correlation_id, v_job_id, v_quota_id, v_quota_name, v_gluster_volume_id, 
v_gluster_volume_name, v_call_stack);
 
          v_audit_log_id := CURRVAL('audit_log_seq');
       else
          if (not exists(select audit_log_id from audit_log where vds_name = 
v_vds_name and log_type = v_log_type)) then
 
-INSERT INTO audit_log(LOG_TIME, log_type, log_type_name, severity,message, 
user_id, USER_NAME, vds_id, VDS_NAME, vm_id, 
VM_NAME,vm_template_id,VM_TEMPLATE_NAME,storage_pool_id,STORAGE_POOL_NAME,storage_domain_id,STORAGE_DOMAIN_NAME,vds_group_id,vds_group_name,
 correlation_id, job_id, quota_id, quota_name, gluster_volume_id, 
gluster_volume_name)
-                       VALUES(v_log_time, v_log_type, v_log_type_name, 
v_severity, v_message, v_user_id, v_user_name, v_vds_id, v_vds_name, v_vm_id, 
v_vm_name,v_vm_template_id,v_vm_template_name,v_storage_pool_id,v_storage_pool_name,v_storage_domain_id,v_storage_domain_name,v_vds_group_id,v_vds_group_name,
 v_correlation_id, v_job_id, v_quota_id, v_quota_name, v_gluster_volume_id, 
v_gluster_volume_name);
+INSERT INTO audit_log(LOG_TIME, log_type, log_type_name, severity,message, 
user_id, USER_NAME, vds_id, VDS_NAME, vm_id, 
VM_NAME,vm_template_id,VM_TEMPLATE_NAME,storage_pool_id,STORAGE_POOL_NAME,storage_domain_id,STORAGE_DOMAIN_NAME,vds_group_id,vds_group_name,
 correlation_id, job_id, quota_id, quota_name, gluster_volume_id, 
gluster_volume_name, call_stack)
+                       VALUES(v_log_time, v_log_type, v_log_type_name, 
v_severity, v_message, v_user_id, v_user_name, v_vds_id, v_vds_name, v_vm_id, 
v_vm_name,v_vm_template_id,v_vm_template_name,v_storage_pool_id,v_storage_pool_name,v_storage_domain_id,v_storage_domain_name,v_vds_group_id,v_vds_group_name,
 v_correlation_id, v_job_id, v_quota_id, v_quota_name, v_gluster_volume_id, 
v_gluster_volume_name, v_call_stack);
 
             v_audit_log_id := CURRVAL('audit_log_seq');
          else
@@ -81,6 +82,7 @@
     v_job_id UUID,
     v_gluster_volume_id UUID,
     v_gluster_volume_name VARCHAR(1000),
+    v_call_stack text,
     v_origin VARCHAR(25),
     v_custom_event_id INTEGER,
     v_event_flood_in_sec INTEGER,
@@ -99,8 +101,8 @@
    IF (v_max_message_length IS NOT NULL and length(v_message) > 
v_max_message_length) THEN
       v_truncated_message := substr(v_message, 1, v_max_message_length -3) || 
'...';
    END IF;
-   INSERT INTO audit_log(LOG_TIME, log_type, log_type_name, severity,message, 
user_id, USER_NAME, vds_id, VDS_NAME, vm_id, 
VM_NAME,vm_template_id,VM_TEMPLATE_NAME,storage_pool_id,STORAGE_POOL_NAME,storage_domain_id,STORAGE_DOMAIN_NAME,vds_group_id,vds_group_name,
 correlation_id, job_id, quota_id, quota_name, gluster_volume_id, 
gluster_volume_name,origin, custom_event_id, event_flood_in_sec, custom_data )
-               VALUES(v_log_time, v_log_type, v_log_type_name, v_severity, 
v_truncated_message, v_user_id, v_user_name, v_vds_id, v_vds_name, v_vm_id, 
v_vm_name,v_vm_template_id,v_vm_template_name,v_storage_pool_id,v_storage_pool_name,v_storage_domain_id,v_storage_domain_name,v_vds_group_id,v_vds_group_name,
 v_correlation_id, v_job_id, v_quota_id, v_quota_name, v_gluster_volume_id, 
v_gluster_volume_name,v_origin, v_custom_event_id, v_event_flood_in_sec, 
v_custom_data);
+   INSERT INTO audit_log(LOG_TIME, log_type, log_type_name, severity,message, 
user_id, USER_NAME, vds_id, VDS_NAME, vm_id, 
VM_NAME,vm_template_id,VM_TEMPLATE_NAME,storage_pool_id,STORAGE_POOL_NAME,storage_domain_id,STORAGE_DOMAIN_NAME,vds_group_id,vds_group_name,
 correlation_id, job_id, quota_id, quota_name, gluster_volume_id, 
gluster_volume_name, call_stack, origin, custom_event_id, event_flood_in_sec, 
custom_data )
+               VALUES(v_log_time, v_log_type, v_log_type_name, v_severity, 
v_truncated_message, v_user_id, v_user_name, v_vds_id, v_vds_name, v_vm_id, 
v_vm_name,v_vm_template_id,v_vm_template_name,v_storage_pool_id,v_storage_pool_name,v_storage_domain_id,v_storage_domain_name,v_vds_group_id,v_vds_group_name,
 v_correlation_id, v_job_id, v_quota_id, v_quota_name, v_gluster_volume_id, 
v_gluster_volume_name, v_call_stack, v_origin, v_custom_event_id, 
v_event_flood_in_sec, v_custom_data);
 
    v_audit_log_id := CURRVAL('audit_log_seq');
 END; $procedure$
diff --git 
a/backend/manager/dbscripts/upgrade/03_03_0220_add_stack_trace_to_audit_log.sql 
b/backend/manager/dbscripts/upgrade/03_03_0220_add_stack_trace_to_audit_log.sql
new file mode 100644
index 0000000..ad9f648
--- /dev/null
+++ 
b/backend/manager/dbscripts/upgrade/03_03_0220_add_stack_trace_to_audit_log.sql
@@ -0,0 +1 @@
+select fn_db_add_column('audit_log', 'stack_trace', 'TEXT DEFAULT ''''');
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AuditLog.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AuditLog.java
index 8861e9d..d25940f 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AuditLog.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/businessentities/AuditLog.java
@@ -46,6 +46,7 @@
     private String storagePoolType;
     private String compatibilityVersion;
     private String quotaEnforcementType;
+    private String callStack;
 
     public AuditLog() {
     }
@@ -429,6 +430,7 @@
         result = prime * result + ((customData == null) ? 0 : 
customData.hashCode());
         result = prime * result + (external ? 1231 : 1237);
         result = prime * result + (deleted ? 1231 : 1237);
+        result = prime * result + ((callStack == null) ? 0 : 
callStack.hashCode());
         return result;
     }
 
@@ -464,6 +466,15 @@
                 && eventFloodInSec == other.eventFloodInSec
                 && ObjectUtils.objectsEqual(customData, other.customData)
                 && external == other.external
-                && deleted == other.deleted);
+                && deleted == other.deleted
+                && ObjectUtils.objectsEqual(callStack, other.callStack));
+    }
+
+    public String getCallStack() {
+        return callStack;
+    }
+
+    public void setCallStack(String callStack) {
+        this.callStack = callStack;
     }
 }
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 a751ef9..8f311f3 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
@@ -897,6 +897,7 @@
             auditLog.setExternal(auditLogable.isExternal());
             auditLog.setQuotaId(auditLogable.getQuotaIdForLog());
             auditLog.setQuotaName(auditLogable.getQuotaNameForLog());
+            auditLog.setCallStack(auditLog.getCallStack());
             getDbFacadeInstance().getAuditLogDao().save(auditLog);
             if (!"".equals(loggerString)) {
                 log.infoFormat(loggerString, resolvedMessage);
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
index 240d9a1..3b844fa 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
@@ -82,6 +82,7 @@
     private String quotaEnforcementType;
     private Guid quotaIdForLog;
     private String quotaNameForLog;
+    private String callStack;
 
     public AuditLogableBase() {
     }
@@ -116,6 +117,7 @@
         this.mVmTemplateName = auditLog.getvm_template_name();
         this.origin = auditLog.getOrigin();
         this.external = auditLog.isExternal();
+        this.callStack = auditLog.getCallStack();
     }
     public NGuid getUserId() {
         if (mUserId != null && mUserId.equals(Guid.Empty) && getCurrentUser() 
!= null) {
@@ -708,4 +710,12 @@
     public void setQuotaNameForLog(String quotaNameForLog) {
         this.quotaNameForLog = quotaNameForLog;
     }
+
+    public String getCallStack() {
+        return callStack;
+    }
+
+    public void setCallStack(String callStack) {
+        this.callStack = callStack;
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAODbFacadeImpl.java
index d2a5026..2df84bd 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAODbFacadeImpl.java
@@ -137,7 +137,8 @@
                 .addValue("quota_id", event.getQuotaId())
                 .addValue("quota_name", event.getQuotaName())
                 .addValue("gluster_volume_id", event.getGlusterVolumeId())
-                .addValue("gluster_volume_name", event.getGlusterVolumeName());
+                .addValue("gluster_volume_name", event.getGlusterVolumeName())
+                .addValue("call_stack", event.getCallStack());
     }
 
     private MapSqlParameterSource getExternalEventSqlMapper(AuditLog event) {
@@ -243,6 +244,7 @@
             entity.setEventFloodInSec(rs.getInt("event_flood_in_sec"));
             entity.setCustomData(rs.getString("custom_data"));
             entity.setDeleted(rs.getBoolean("deleted"));
+            entity.setCallStack(rs.getString("call_stack"));
             return entity;
         }
     }
diff --git a/backend/manager/modules/dal/src/test/resources/fixtures.xml 
b/backend/manager/modules/dal/src/test/resources/fixtures.xml
index 9cc5743..8dadfc2 100644
--- a/backend/manager/modules/dal/src/test/resources/fixtures.xml
+++ b/backend/manager/modules/dal/src/test/resources/fixtures.xml
@@ -3773,6 +3773,7 @@
         <column>event_flood_in_sec</column>
         <column>custom_data</column>
         <column>deleted</column>
+        <column>call_stack</column>
         <row>
             <value>44291</value>
             <value>9bf7c640-b620-456f-a550-0348f366544a</value>
@@ -3806,6 +3807,7 @@
             <value>30</value>
             <value></value>
             <value>false</value>
+            <value></value>
         </row>
         <row>
             <value>44292</value>


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9c61ab5e1efff01d26594bbddb43060a86641de3
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Oved Ourfali <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to