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
