Sahina Bose has uploaded a new change for review.

Change subject: engine: Added new alerts for brick/volume status changes
......................................................................

engine: Added new alerts for brick/volume status changes

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/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.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 packaging/dbscripts/audit_log_sp.sql
A packaging/dbscripts/upgrade/03_05_1500_add_brickInfo_audit_log_table.sql
13 files changed, 184 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/42299/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 0eee7a0..b207e6d 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;
@@ -989,6 +990,12 @@
                         put(GlusterConstants.OPTION_NEW_VALUE, 
fetchedStatus.toString());
                     }
                 });
+        if(fetchedStatus == GlusterStatus.DOWN){
+            logUtil.logAuditMessage(volume.getClusterId(), volume, null,
+                AuditLogType.GLUSTER_BRICK_STATUS_DOWN, brick.getId(), 
brick.getQualifiedName());
+        }else if(fetchedStatus == GlusterStatus.UP){
+            AlertDirector.RemoveAlertsByBrickIdLogType(brick.getId(), 
AuditLogType.GLUSTER_BRICK_STATUS_DOWN);
+        }
     }
 
     private Map<Guid, BrickProperties> 
getBrickPropertiesMap(GlusterVolumeAdvancedDetails volumeDetails) {
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
index 017097d..99a33fe 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GlusterSyncJobTest.java
@@ -261,7 +261,12 @@
                 any(VDS.class),
                 any(AuditLogType.class),
                 any(HashMap.class));
-
+        doNothing().when(logUtil).logAuditMessage(any(Guid.class),
+                any(GlusterVolumeEntity.class),
+                any(VDS.class),
+                any(AuditLogType.class),
+                any(Guid.class),
+                any(String.class));
         
doReturn(getFetchedServersList()).when(glusterManager).fetchServers(any(VDS.class));
         
doReturn(getFetchedVolumesList()).when(glusterManager).fetchVolumes(any(VDS.class));
         
doReturn(getVolumeAdvancedDetails(existingDistVol)).when(glusterManager)
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 c0542bc..4f2d58f 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
@@ -312,13 +312,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),
@@ -442,6 +442,7 @@
     GLUSTER_VOLUME_SNAPSHOT_SOFT_LIMIT_REACHED(4148, AuditLogSeverity.ALERT),
     HOST_FEATURES_INCOMPATIBILE_WITH_CLUSTER(4149, AuditLogSeverity.ERROR),
     GLUSTER_VOLUME_SNAPSHOT_SCHEDULE_DELETED(4150),
+    GLUSTER_BRICK_STATUS_DOWN(4151, 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 ca24f7d..f56dc41 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,8 @@
     private String compatibilityVersion;
     private String quotaEnforcementType;
     private String callStack;
+    private Guid brickId;
+    private String brickPath;
 
     public AuditLog() {
         logType = AuditLogType.UNASSIGNED.getValue();
@@ -105,6 +107,43 @@
         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,
+            Guid brickId,
+            String brickPath,
+            String customData) {
+        this(type,
+                severity,
+                message,
+                userId,
+                userName,
+                vmId,
+                vmName,
+                vdsId,
+                vdsName,
+                vmTemplateId,
+                vmTemplateName,
+                origin,
+                customEventId,
+                eventFloogInSec,
+                customData);
+        this.brickId = brickId;
+        this.brickPath = brickPath;
+    }
+
     public long getaudit_log_id() {
         return this.auditLogId;
     }
@@ -402,6 +441,22 @@
         this.quotaEnforcementType = quotaEnforcementType;
     }
 
+    public Guid getBrickId() {
+        return brickId;
+    }
+
+    public void setBrickId(Guid brickId) {
+        this.brickId = brickId;
+    }
+
+    public String getBrickPath() {
+        return brickPath;
+    }
+
+    public void setBrickPath(String brickPath) {
+        this.brickPath = brickPath;
+    }
+
     @Override
     public int hashCode() {
         final int prime = 31;
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 ba5c3cf..6d31985 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
@@ -68,4 +68,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 RemoveAlertsByBrickIdLogType(Guid brickId, AuditLogType 
logtype) {
+        
DbFacade.getInstance().getAuditLogDao().removeAllofTypeForBrick(brickId, 
logtype.getValue());
+    }
 }
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 7a22903..234b70a 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
@@ -157,6 +157,8 @@
             auditLog.setQuotaId(auditLogable.getQuotaIdForLog());
             auditLog.setQuotaName(auditLogable.getQuotaNameForLog());
             auditLog.setCallStack(auditLogable.getCallStack());
+            auditLog.setBrickId(auditLogable.getBrickId());
+            auditLog.setBrickPath(auditLogable.getBrickPath());
             getDbFacadeInstance().getAuditLogDao().save(auditLog);
             String logMessage;
             if (!"".equals(loggerString)) {
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 615bdda..48db3d6 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
@@ -97,6 +97,8 @@
     private Guid quotaIdForLog;
     private String quotaNameForLog;
     private String callStack;
+    private Guid brickId;
+    private String brickPath;
 
     public AuditLogableBase() {
     }
@@ -132,6 +134,8 @@
         this.origin = auditLog.getOrigin();
         this.external = auditLog.isExternal();
         this.callStack = auditLog.getCallStack();
+        this.brickId = auditLog.getBrickId();
+        this.brickPath = auditLog.getBrickPath();
     }
 
     public Guid getUserId() {
@@ -814,4 +818,21 @@
             setCallStack(ExceptionUtils.getStackTrace(throwable));
         }
     }
+
+    public Guid getBrickId() {
+        return brickId;
+    }
+
+    public void setBrickId(Guid brickId) {
+        this.brickId = brickId;
+    }
+
+    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 7a39f64..bce88b2 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
@@ -61,4 +61,21 @@
 
         AuditLogDirector.log(logable, logType);
     }
+
+    public void logAuditMessage(final Guid clusterId,
+            final GlusterVolumeEntity volume,
+            final VDS server,
+            final AuditLogType logType,
+            final Guid brickId,
+            final String brickPath) {
+
+        AuditLogableBase logable = new AuditLogableBase();
+        logable.setVds(server);
+        logable.setGlusterVolume(volume);
+        logable.setVdsGroupId(clusterId);
+        logable.setBrickId(brickId);
+        logable.setBrickPath(brickPath);
+
+        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 4f88c5d..ba9e0dd 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
@@ -102,6 +102,15 @@
     List<AuditLog> getAllByVMTemplateId(Guid vmTemplateId, Guid userID, 
boolean isFiltered);
 
     /**
+     * Retrieves all audit log entries for the given VOLUME ID.
+     * @param brickId
+     *            The ID of the brick
+     * @param logtype
+     *            auditlog alert/event type
+     */
+    void removeAllofTypeForBrick(Guid brickId, int 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 f3b80d1..c71e98c 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
@@ -104,6 +104,15 @@
     }
 
     @Override
+    public void removeAllofTypeForBrick(Guid brickId, int logType){
+        MapSqlParameterSource parameterSource =
+                getCustomMapSqlParameterSource()
+                        .addValue("brick_id", brickId)
+                        .addValue("audit_log_type", logType);
+        
getCallsHandler().executeModification("RemoveAuditLogByBrickIdLogType", 
parameterSource);
+    }
+
+    @Override
     public void save(AuditLog event) {
         if (event.isExternal()) {
             getCallsHandler().executeModification("InsertExternalAuditLog", 
getExternalEventSqlMapper(event));
@@ -146,7 +155,9 @@
                 .addValue("quota_name", event.getQuotaName())
                 .addValue("gluster_volume_id", event.getGlusterVolumeId())
                 .addValue("gluster_volume_name", event.getGlusterVolumeName())
-                .addValue("call_stack", event.getCallStack());
+                .addValue("call_stack", event.getCallStack())
+                .addValue("brick_id", event.getBrickId())
+                .addValue("brick_path", event.getBrickPath());
     }
 
     private MapSqlParameterSource getExternalEventSqlMapper(AuditLog event) {
@@ -259,6 +270,8 @@
             entity.setCustomData(rs.getString("custom_data"));
             entity.setDeleted(rs.getBoolean("deleted"));
             entity.setCallStack(rs.getString("call_stack"));
+            entity.setBrickId(getGuid(rs, "brick_id"));
+            entity.setBrickPath(rs.getString("brick_path"));
             return entity;
         }
     }
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 63408e5..31ed92f 100644
--- 
a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
+++ 
b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties
@@ -818,6 +818,7 @@
 GLUSTER_SERVICE_RESTART_FAILED=Could not re-start ${servicetype} service on 
host ${VdsName} of cluster ${VdsGroupName}.
 GLUSTER_VOLUME_BRICK_ADDED=Brick [${brickpath}] on host [${servername}] added 
to volume [${glusterVolumeName}] of cluster ${vdsGroupName}
 GLUSTER_BRICK_STATUS_CHANGED=Detected change in status of brick ${brickpath} 
of volume ${glusterVolumeName} of cluster ${vdsGroupName} from ${oldValue} to 
${newValue} .
+GLUSTER_BRICK_STATUS_DOWN=Status of brick ${brickpath} of volume 
${glusterVolumeName} on cluster ${VdsGroupName} is down.
 GLUSTER_GEOREP_SESSION_DELETED_FROM_CLI=Detected deletion of geo-replication 
session ${geoRepSessionKey} from volume ${glusterVolumeName} of cluster 
${vdsGroupName}
 GLUSTER_GEOREP_SESSION_DETECTED_FROM_CLI=Detected new geo-replication session 
${geoRepSessionKey} for volume ${glusterVolumeName} of cluster ${vdsGroupName}. 
Adding it to engine.
 GLUSTER_GEOREP_SESSION_REFRESH=Refreshed geo-replication sessions for volume 
${glusterVolumeName} of cluster ${vdsGroupName}.
@@ -828,6 +829,21 @@
 GEOREP_SESSION_DELETE_FAILED=Failed to delete geo-replication session on 
volume ${glusterVolumeName} of cluster ${vdsGroupName}
 GLUSTER_VOLUME_GEO_REP_START=Geo-replication session on volume 
${glusterVolumeName} of cluster ${vdsGroupName} has been started.
 GLUSTER_VOLUME_GEO_REP_START_FAILED_EXCEPTION=Failed to start geo-replication 
session on volume ${glusterVolumeName} of cluster ${vdsGroupName}
+GLUSTER_SERVICE_RESTARTED=${servicetype} service re-started on host ${VdsName} 
on cluster ${VdsGroupName}.
+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} on cluster ${VdsGroupName} 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}.
+GLUSTER_GEOREP_SESSION_REFRESH_FAILED=Failed to refresh geo-replication 
sessions for volume ${glusterVolumeName}.
+GEOREP_SESSION_STOP=Geo-replication session on volume ${glusterVolumeName} has 
been stopped.
+GEOREP_SESSION_STOP_FAILED=Failed to stop geo-replication session on volume 
${glusterVolumeName}
+GEOREP_SESSION_DELETED=Geo-replication session deleted on volume 
${glusterVolumeName}
+GEOREP_SESSION_DELETE_FAILED=Failed to delete geo-replication session on 
volume ${glusterVolumeName}
+GLUSTER_VOLUME_GEO_REP_START=Geo-replication session on volume 
${glusterVolumeName} has been started.
+GLUSTER_VOLUME_GEO_REP_START_FAILED_EXCEPTION=Failed to start geo-replication 
session on volume ${glusterVolumeName}
 GLUSTER_GEOREP_CONFIG_SET=Configuration ${key} has been set to ${value} on the 
geo-rep session ${geoRepSessionKey}.
 GLUSTER_GEOREP_CONFIG_SET_FAILED=Failed to set the configuration ${key} to 
${value} on geo-rep session ${geoRepSessionKey}.
 GLUSTER_GEOREP_CONFIG_SET_DEFAULT=Configuration of ${key} of session 
${geoRepSessionKey} reset to its default value .
diff --git a/packaging/dbscripts/audit_log_sp.sql 
b/packaging/dbscripts/audit_log_sp.sql
index 27f7a50..c934268 100644
--- a/packaging/dbscripts/audit_log_sp.sql
+++ b/packaging/dbscripts/audit_log_sp.sql
@@ -28,7 +28,9 @@
     v_job_id UUID,
     v_gluster_volume_id UUID,
     v_gluster_volume_name VARCHAR(1000),
-    v_call_stack text)
+    v_call_stack text,
+    v_brick_id UUID,
+    v_brick_path text)
    AS $procedure$
    DECLARE
    v_min_alret_severity  INTEGER;
@@ -37,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_id, 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_id, v_brick_path);
 
          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 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_id, 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_id, v_brick_path);
 
             v_audit_log_id := CURRVAL('audit_log_seq');
          else
@@ -83,6 +85,8 @@
     v_gluster_volume_id UUID,
     v_gluster_volume_name VARCHAR(1000),
     v_call_stack text,
+    v_brick_id UUID,
+    v_brick_path text,
     v_origin VARCHAR(25),
     v_custom_event_id INTEGER,
     v_event_flood_in_sec INTEGER,
@@ -101,8 +105,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_id, 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_id, v_brick_path);
 
    v_audit_log_id := CURRVAL('audit_log_seq');
 END; $procedure$
@@ -195,6 +199,14 @@
 END; $procedure$
 LANGUAGE plpgsql;
 
+Create or replace FUNCTION RemoveAuditLogByBrickIdLogType(v_brick_id UUID, 
v_audit_log_type INTEGER) RETURNS VOID
+   AS $procedure$
+BEGIN
+      UPDATE audit_log set deleted = true
+      WHERE brick_id = v_brick_id AND log_type = 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_05_1500_add_brickInfo_audit_log_table.sql 
b/packaging/dbscripts/upgrade/03_05_1500_add_brickInfo_audit_log_table.sql
new file mode 100644
index 0000000..95c0e9a
--- /dev/null
+++ b/packaging/dbscripts/upgrade/03_05_1500_add_brickInfo_audit_log_table.sql
@@ -0,0 +1,2 @@
+ select fn_db_add_column('audit_log','brick_id','uuid');
+ select fn_db_add_column('audit_log','brick_path','text DEFAULT ''''::text');


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

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

Reply via email to