Karnan t c has uploaded a new change for review.

Change subject: webadmin: Add new alerts required for RHSC Dashboard
......................................................................

webadmin: Add new alerts required for RHSC Dashboard

adds new alerts for server/volume removed from CLI, updates brick state
change alerts and automatically remove alerts once the entity is UP.

Change-Id: Ibad5ed6078bd33cd9c9decdabca6747709be4ba4
Signed-off-by: Karnan TC <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java
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/AlertDirector.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/dal/dbbroker/auditloghandling/gluster/GlusterAuditLogUtil.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
M 
backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/AuditLogDaoMocker.java
M packaging/dbscripts/audit_log_sp.sql
A packaging/dbscripts/upgrade/03_06_1360_add_brickPath_audit_log_table.sql
13 files changed, 153 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/66/40566/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
index 673fde6..a1f2de8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJob.java
@@ -46,6 +46,7 @@
 import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumesListVDSParameters;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.TransactionScopeOption;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AlertDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 import org.ovirt.engine.core.dao.gluster.GlusterDBUtils;
@@ -1004,6 +1005,17 @@
                         put(GlusterConstants.OPTION_NEW_VALUE, 
fetchedStatus.toString());
                     }
                 });
+        if(fetchedStatus.toString().equals("DOWN")){
+        logUtil.logAuditMessage(volume.getClusterId(), volume, null,
+                AuditLogType.GLUSTER_BRICK_STATUS_DOWN,
+                new HashMap<String, String>() {
+                    {
+                        put(GlusterConstants.BRICK_PATH, 
brick.getQualifiedName());
+                    }
+                }, brick.getQualifiedName());
+        }else if(fetchedStatus.toString().equals("UP")){
+            AlertDirector.RemoveAlertsByBrickVolumeId(volume.getId(), 
brick.getQualifiedName(), "GLUSTER_BRICK_STATUS_DOWN");
+        }
     }
 
     private Map<Guid, BrickProperties> 
getBrickPropertiesMap(GlusterVolumeAdvancedDetails volumeDetails) {
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 cd3f280..6e05d7f 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
@@ -317,13 +317,13 @@
     GLUSTER_VOLUME_PROFILE_STOP(4024),
     GLUSTER_VOLUME_PROFILE_STOP_FAILED(4025, AuditLogSeverity.ERROR),
     GLUSTER_VOLUME_CREATED_FROM_CLI(4026, AuditLogSeverity.WARNING),
-    GLUSTER_VOLUME_DELETED_FROM_CLI(4027, AuditLogSeverity.WARNING),
+    GLUSTER_VOLUME_DELETED_FROM_CLI(4027, AuditLogSeverity.ALERT),
     GLUSTER_VOLUME_OPTION_SET_FROM_CLI(4028, AuditLogSeverity.WARNING),
     GLUSTER_VOLUME_OPTION_RESET_FROM_CLI(4029, AuditLogSeverity.WARNING),
     GLUSTER_VOLUME_PROPERTIES_CHANGED_FROM_CLI(4030, AuditLogSeverity.WARNING),
     GLUSTER_VOLUME_BRICK_ADDED_FROM_CLI(4031, AuditLogSeverity.WARNING),
-    GLUSTER_VOLUME_BRICK_REMOVED_FROM_CLI(4032, AuditLogSeverity.WARNING),
-    GLUSTER_SERVER_REMOVED_FROM_CLI(4033, AuditLogSeverity.WARNING),
+    GLUSTER_VOLUME_BRICK_REMOVED_FROM_CLI(4032, AuditLogSeverity.ALERT),
+    GLUSTER_SERVER_REMOVED_FROM_CLI(4033, AuditLogSeverity.ALERT),
     GLUSTER_VOLUME_INFO_FAILED(4034, AuditLogSeverity.ERROR),
     GLUSTER_COMMAND_FAILED(4035, AuditLogSeverity.ERROR),
     GLUSTER_SERVER_ADD_FAILED(4436, AuditLogSeverity.ERROR),
@@ -444,6 +444,7 @@
     GLUSTER_SETUP_GEOREP_MOUNT_BROKER(4145),
     GLUSTER_GEOREP_SESSION_CREATE_FAILED(4146, AuditLogSeverity.ERROR),
     CREATE_GLUSTER_VOLUME_GEOREP_SESSION(4147),
+    GLUSTER_BRICK_STATUS_DOWN(4148, AuditLogSeverity.ALERT),
 
     USER_FORCE_SELECTED_SPM(159),
     USER_VDS_RESTART(41),
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 3ccfb42..46e2b4c 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 compatibilityVersion;
     private String quotaEnforcementType;
     private String callStack;
+    private String brickPath;
 
     /**
      * If set to {@code true}, it allows storing to db multiple alerts of the 
same type for the same host.
@@ -124,6 +125,40 @@
         this.customEventId = customEventId;
         this.eventFloodInSec = eventFloogInSec;
         this.customData = customData;
+    }
+
+    public AuditLog(AuditLogType type,
+            AuditLogSeverity severity,
+            String message,
+            Guid userId,
+            String userName,
+            Guid vmId,
+            String vmName,
+            Guid vdsId,
+            String vdsName,
+            Guid vmTemplateId,
+            String vmTemplateName,
+            String origin,
+            int customEventId,
+            int eventFloogInSec,
+            String customData,
+            String brickPath) {
+        this(type,
+                severity,
+                message,
+                userId,
+                userName,
+                vmId,
+                vmName,
+                vdsId,
+                vdsName,
+                vmTemplateId,
+                vmTemplateName,
+                origin,
+                customEventId,
+                eventFloogInSec,
+                customData);
+        this.brickPath = brickPath;
     }
 
     public long getAuditLogId() {
@@ -427,6 +462,14 @@
         this.callStack = callStack;
     }
 
+    public String getBrickPath() {
+        return brickPath;
+    }
+
+    public void setBrickPath(String brickPath) {
+        this.brickPath = brickPath;
+    }
+
     public boolean isRepeatable() {
         return repeatable;
     }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AlertDirector.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AlertDirector.java
index c13ab11..00ba21f 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AlertDirector.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AlertDirector.java
@@ -61,4 +61,16 @@
     public static void RemoveAllVdsAlerts(Guid vdsId, boolean 
removeConfigAlerts) {
         DbFacade.getInstance().getAuditLogDao().removeAllForVds(vdsId, 
removeConfigAlerts);
     }
+
+    /**
+     * Removes the brick down alert.
+     *
+     * @param vdsId
+     *            The VDS id.
+     * @param type
+     *            The type.
+     */
+    public static void RemoveAlertsByBrickVolumeId(Guid volumeId, String 
brickpath, String logtype) {
+        
DbFacade.getInstance().getAuditLogDao().removeByBrickVolumeId(volumeId, 
brickpath, logtype);
+    }
 }
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 84cf38b..66e7f07 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,6 +109,7 @@
         auditLog.setQuotaId(auditLogable.getQuotaIdForLog());
         auditLog.setQuotaName(auditLogable.getQuotaNameForLog());
         auditLog.setCallStack(auditLogable.getCallStack());
+        auditLog.setBrickPath(auditLogable.getBrickPath());
     }
 
     private void logMessage(AuditLogSeverity severity, String logMessage) {
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 d71497e..8f79b91 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
@@ -105,6 +105,7 @@
     private Guid quotaIdForLog;
     private String quotaNameForLog;
     private String callStack;
+    private String brickPath;
 
     /**
      * @see org.ovirt.engine.core.common.businessentities.AuditLog#repeatable
@@ -146,6 +147,7 @@
         this.origin = auditLog.getOrigin();
         this.external = auditLog.isExternal();
         this.callStack = auditLog.getCallStack();
+        this.brickPath = auditLog.getBrickPath();
     }
 
     public Guid getUserId() {
@@ -873,4 +875,13 @@
     public void setAuditLogDirector(AuditLogDirector auditLogDirector) {
         this.auditLogDirector = auditLogDirector;
     }
+
+    public String getBrickPath() {
+        return brickPath;
+    }
+
+    public void setBrickPath(String brickPath) {
+        this.brickPath = brickPath;
+    }
+
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/gluster/GlusterAuditLogUtil.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/gluster/GlusterAuditLogUtil.java
index b6d905a..9633544 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/gluster/GlusterAuditLogUtil.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/gluster/GlusterAuditLogUtil.java
@@ -62,4 +62,24 @@
 
         auditLogDirector.log(logable, logType);
     }
+
+    public void logAuditMessage(final Guid clusterId,
+            final GlusterVolumeEntity volume,
+            final VDS server,
+            final AuditLogType logType,
+            final Map<String, String> customValues, final String brickPath) {
+
+        AuditLogableBase logable = new AuditLogableBase();
+        logable.setVds(server);
+        logable.setGlusterVolume(volume);
+        logable.setVdsGroupId(clusterId);
+        logable.setBrickPath(brickPath);
+        if (customValues != null) {
+            for (Entry<String, String> entry : customValues.entrySet()) {
+                logable.addCustomValue(entry.getKey(), entry.getValue());
+            }
+        }
+
+        auditLogDirector.log(logable, logType);
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAO.java
index 239e7b8..1f92634 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/AuditLogDAO.java
@@ -92,6 +92,18 @@
     List<AuditLog> getAllByVMTemplateId(Guid vmTemplateId, Guid userID, 
boolean isFiltered);
 
     /**
+     * Retrieves all audit log entries for the given VOLUME ID.
+     * @param volumeID
+     *            The ID of the volume
+     * @param brickpath
+     *            brick's qualified name.
+     * @param logtype
+     *            auditlog alert/event type
+     * @return the list of entries
+     */
+    void removeByBrickVolumeId(Guid volumeId, String brickpath, String 
logtype);
+
+    /**
      * Saves the provided audit log
      *
      * @param entry
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 300114f..b5f794f 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
@@ -111,6 +111,16 @@
     }
 
     @Override
+    public void removeByBrickVolumeId(Guid volumeId, String brickpath, String 
audit_log_type){
+        MapSqlParameterSource parameterSource =
+                getCustomMapSqlParameterSource()
+                        .addValue("volume_id", volumeId)
+                        .addValue("brick_path", brickpath)
+                        .addValue("audit_log_type", audit_log_type);
+        getCallsHandler().executeModification("RemoveAuditLogByBrickVolumeId", 
parameterSource);
+    }
+
+    @Override
     public void save(AuditLog event) {
         if (event.isExternal()) {
             getCallsHandler().executeModification("InsertExternalAuditLog", 
getExternalEventSqlMapper(event));
@@ -154,7 +164,8 @@
                 .addValue("gluster_volume_id", event.getGlusterVolumeId())
                 .addValue("gluster_volume_name", event.getGlusterVolumeName())
                 .addValue("call_stack", event.getCallStack())
-                .addValue("repeatable", event.isRepeatable());
+                .addValue("repeatable", event.isRepeatable())
+                .addValue("brick_path", event.getBrickPath());
     }
 
     private MapSqlParameterSource getExternalEventSqlMapper(AuditLog event) {
diff --git 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
index 69a55d3..1a0814c 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -851,6 +851,7 @@
 GLUSTER_SERVICE_RESTART_FAILED=Could not re-start ${servicetype} service on 
host ${VdsName} on cluster ${VdsGroupName}.
 GLUSTER_VOLUME_BRICK_ADDED=Brick [${brickpath}] on host [${servername}] added 
to volume [${glusterVolumeName}]
 GLUSTER_BRICK_STATUS_CHANGED=Detected change in status of brick ${brickpath} 
of volume ${glusterVolumeName} from ${oldValue} to ${newValue}.
+GLUSTER_BRICK_STATUS_DOWN=Status of brick ${brickpath} of volume 
${glusterVolumeName} is down.
 GLUSTER_GEOREP_SESSION_DELETED_FROM_CLI=Detected deletion of geo-replication 
session ${geoRepSessionKey} from volume ${glusterVolumeName}
 GLUSTER_GEOREP_SESSION_DETECTED_FROM_CLI=Detected new geo-replication session 
${geoRepSessionKey} for volume ${glusterVolumeName}. Adding it to engine.
 GLUSTER_GEOREP_SESSION_REFRESH=Refreshed geo-replication sessions for volume 
${glusterVolumeName}.
diff --git 
a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/AuditLogDaoMocker.java
 
b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/AuditLogDaoMocker.java
index 2c5d1e6..6f4ea40 100644
--- 
a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/AuditLogDaoMocker.java
+++ 
b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/AuditLogDaoMocker.java
@@ -10,8 +10,7 @@
 
 public class AuditLogDaoMocker implements AuditLogDAO {
 
-    private List<AuditLog> records = new ArrayList<>();
-
+    private final List<AuditLog> records = new ArrayList<AuditLog>();
     @Override
     public List<AuditLog> getAllWithQuery(String query) {
         return null;
@@ -53,6 +52,11 @@
     }
 
     @Override
+    public void removeByBrickVolumeId(Guid volumeId, String brickpath, String 
audit_log_type){
+
+    }
+
+    @Override
     public void save(AuditLog entry) {
         records.add(entry);
     }
diff --git a/packaging/dbscripts/audit_log_sp.sql 
b/packaging/dbscripts/audit_log_sp.sql
index 5265f87..19dcddf 100644
--- a/packaging/dbscripts/audit_log_sp.sql
+++ b/packaging/dbscripts/audit_log_sp.sql
@@ -29,7 +29,8 @@
     v_gluster_volume_id UUID,
     v_gluster_volume_name VARCHAR(1000),
     v_call_stack text,
-    v_repeatable BOOLEAN)
+    v_repeatable BOOLEAN,
+    v_brick_path text)
    AS $procedure$
    DECLARE
    v_min_alret_severity  INTEGER;
@@ -38,15 +39,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, 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);
+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, brick_path)
+               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_brick_path);
 
          v_audit_log_id := CURRVAL('audit_log_seq');
       else
          if (v_repeatable OR not exists(select audit_log_id from audit_log 
where vds_name = v_vds_name and log_type = v_log_type and not deleted)) 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, 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);
+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, brick_path)
+                       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_brick_path);
 
             v_audit_log_id := CURRVAL('audit_log_seq');
          else
@@ -84,6 +85,7 @@
     v_gluster_volume_id UUID,
     v_gluster_volume_name VARCHAR(1000),
     v_call_stack text,
+    v_brick_path text,
     v_origin VARCHAR(25),
     v_custom_event_id INTEGER,
     v_event_flood_in_sec INTEGER,
@@ -102,8 +104,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, 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);
+   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, brick_path)
+               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_brick_path);
 
    v_audit_log_id := CURRVAL('audit_log_seq');
 END; $procedure$
@@ -196,6 +198,14 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION RemoveAuditLogByBrickVolumeId(v_volume_id UUID, 
v_brick_path text, v_audit_log_type VARCHAR(100)) RETURNS VOID
+   AS $procedure$
+BEGIN
+      DELETE FROM audit_log
+      WHERE gluster_volume_id = v_volume_id AND brick_path = v_brick_path AND 
log_type_name = v_audit_log_type ;
+END; $procedure$
+LANGUAGE plpgsql;
+
 Create or replace FUNCTION GetAuditLogLaterThenDate(v_date TIMESTAMP WITH TIME 
ZONE)
 RETURNS SETOF audit_log STABLE
    AS $procedure$
diff --git 
a/packaging/dbscripts/upgrade/03_06_1360_add_brickPath_audit_log_table.sql 
b/packaging/dbscripts/upgrade/03_06_1360_add_brickPath_audit_log_table.sql
new file mode 100644
index 0000000..619af28
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_06_1360_add_brickPath_audit_log_table.sql
@@ -0,0 +1,2 @@
+ALTER TABLE audit_log ADD COLUMN brick_path text;
+ALTER TABLE audit_log ALTER COLUMN brick_path SET DEFAULT ''::text;


-- 
To view, visit https://gerrit.ovirt.org/40566
To unsubscribe, visit https://gerrit.ovirt.org/settings

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

Reply via email to