Martin Mucha has uploaded a new change for review. Change subject: core: audit logging support for mac pools. ......................................................................
core: audit logging support for mac pools. Change-Id: I376b89abc03657a7cd2eb1b06e21591e4cd944ad Bug-Url: https://bugzilla.redhat.com/1078844 Signed-off-by: Martin Mucha <mmu...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.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/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/main/resources/bundles/AuditLogMessages.properties M packaging/dbscripts/audit_log_sp.sql A packaging/dbscripts/upgrade/03_05_0730_support_audit_logging_for_mac_pools.sql 11 files changed, 115 insertions(+), 8 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/04/29204/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java index a98beba..5408e98 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddMacPoolCommand.java @@ -5,6 +5,7 @@ import org.ovirt.engine.core.bll.network.macpoolmanager.MacPoolPerDc; import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.MacPoolParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; @@ -16,6 +17,15 @@ public AddMacPoolCommand(MacPoolParameters parameters) { super(parameters); + } + + @Override + public AuditLogType getAuditLogTypeValue() { + if (getSucceeded()) { + return AuditLogType.MAC_POOL_ADD_SUCCESS; + } else { + return AuditLogType.MAC_POOL_ADD_FAILED; + } } @Override @@ -49,6 +59,10 @@ protected void executeCommand() { MacPool macPool = getMacPool(); macPool.setId(Guid.newGuid()); + + setMacPoolNameForLog(macPool.getName()); + setMacPoolIdForLog(macPool.getId()); + getMacPoolDao().save(macPool); MacPoolPerDc.getInstance().createPool(macPool); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java index 5c78298..d37871b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveMacPoolCommand.java @@ -5,6 +5,7 @@ import org.ovirt.engine.core.bll.network.macpoolmanager.MacPoolPerDc; import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.RemoveMacPoolByIdParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; @@ -22,6 +23,15 @@ } @Override + public AuditLogType getAuditLogTypeValue() { + if (getSucceeded()) { + return AuditLogType.MAC_POOL_REMOVE_SUCCESS; + } else { + return AuditLogType.MAC_POOL_REMOVE_FAILED; + } + } + + @Override protected void setActionMessageParameters() { super.setActionMessageParameters(); addCanDoActionMessage(VdcBllMessages.VAR__ACTION__REMOVE); @@ -29,6 +39,9 @@ @Override protected void executeCommand() { + setMacPoolIdForLog(getParameters().getMacPoolId()); + setMacPoolNameForLog(oldMacPool.getName()); + final Guid macPoolId = getParameters().getMacPoolId(); getMacPoolDao().remove(macPoolId); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java index 7379823..2a7524b 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateMacPoolCommand.java @@ -5,6 +5,7 @@ import org.ovirt.engine.core.bll.network.macpoolmanager.MacPoolPerDc; import org.ovirt.engine.core.bll.utils.PermissionSubject; +import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.MacPoolParameters; import org.ovirt.engine.core.common.businessentities.ActionGroup; @@ -18,6 +19,15 @@ public UpdateMacPoolCommand(MacPoolParameters parameters) { super(parameters); + } + + @Override + public AuditLogType getAuditLogTypeValue() { + if (getSucceeded()) { + return AuditLogType.MAC_POOL_EDIT_SUCCESS; + } else { + return AuditLogType.MAC_POOL_EDIT_FAILED; + } } @Override @@ -50,6 +60,9 @@ @Override protected void executeCommand() { + setMacPoolIdForLog(getMacPoolId()); + setMacPoolNameForLog(oldMacPool.getName()); + getMacPoolDao().update(getMacPool()); MacPoolPerDc.getInstance().modifyPool(getMacPool()); 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 7373f8d..7705ad7 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 @@ -1029,7 +1029,15 @@ USER_REMOVE_AUDIT_LOG(10600), USER_REMOVE_AUDIT_LOG_FAILED(10601, AuditLogSeverity.ERROR), USER_CLEAR_ALL_DISMISSED_AUDIT_LOG(10602), - USER_CLEAR_ALL_DISMISSED_AUDIT_LOG_FAILED(10603, AuditLogSeverity.ERROR); + USER_CLEAR_ALL_DISMISSED_AUDIT_LOG_FAILED(10603, AuditLogSeverity.ERROR), + + //MacPool Log + MAC_POOL_ADD_SUCCESS(10700), + MAC_POOL_ADD_FAILED(10701, AuditLogSeverity.ERROR), + MAC_POOL_EDIT_SUCCESS(10702), + MAC_POOL_EDIT_FAILED(10703, AuditLogSeverity.ERROR), + MAC_POOL_REMOVE_SUCCESS(10704), + MAC_POOL_REMOVE_FAILED(10705, AuditLogSeverity.ERROR); private int intValue; // indicates time interval in seconds on which identical events from same instance are suppressed. 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..99eda34 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 @@ -9,7 +9,7 @@ import org.ovirt.engine.core.compat.Guid; public class AuditLog extends IVdcQueryable implements Serializable { - private static final long serialVersionUID = -2808392095455280186L; + private static final long serialVersionUID = -5346124122179332184L; private long auditLogId; private Date logTime; @@ -46,6 +46,8 @@ private String compatibilityVersion; private String quotaEnforcementType; private String callStack; + private String macPoolName; + private Guid macPoolId; public AuditLog() { logType = AuditLogType.UNASSIGNED.getValue(); @@ -427,6 +429,8 @@ result = prime * result + ((customData == null) ? 0 : customData.hashCode()); result = prime * result + (external ? 1231 : 1237); result = prime * result + (deleted ? 1231 : 1237); + result = prime * result + ((macPoolId == null) ? 0 : macPoolId.hashCode()); + result = prime * result + ((macPoolName == null) ? 0 : macPoolName.hashCode()); result = prime * result + ((callStack == null) ? 0 : callStack.hashCode()); return result; } @@ -464,6 +468,8 @@ && ObjectUtils.objectsEqual(customData, other.customData) && external == other.external && deleted == other.deleted + && macPoolId == other.macPoolId + && macPoolName == other.macPoolName && ObjectUtils.objectsEqual(callStack, other.callStack)); } @@ -495,4 +501,20 @@ sb.append(message); return sb.toString(); } + + public Guid getMacPoolId() { + return macPoolId; + } + + public void setMacPoolId(Guid macPoolId) { + this.macPoolId = macPoolId; + } + + public String getMacPoolName() { + return macPoolName; + } + + public void setMacPoolName(String macPoolName) { + this.macPoolName = macPoolName; + } } 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 80b2393..0c78641 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.setMacPoolId(auditLogable.getMacPoolIdForLog()); + auditLog.setMacPoolName(auditLogable.getMacPoolNameForLog()); 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 c7e0713..67bde83 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 @@ -90,6 +90,8 @@ private Guid quotaIdForLog; private String quotaNameForLog; private String callStack; + private String macPoolNameForLog; + private Guid macPoolIdForLog; public AuditLogableBase() { } @@ -779,4 +781,20 @@ setCallStack(ExceptionUtils.getStackTrace(throwable)); } } + + public String getMacPoolNameForLog() { + return macPoolNameForLog; + } + + public void setMacPoolNameForLog(String macPoolNameForLog) { + this.macPoolNameForLog = macPoolNameForLog; + } + + public Guid getMacPoolIdForLog() { + return macPoolIdForLog; + } + + public void setMacPoolIdForLog(Guid macPoolIdForLog) { + this.macPoolIdForLog = macPoolIdForLog; + } } 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 b7934f0..d7b9a06 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,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("mac_pool_id", event.getMacPoolId()) + .addValue("mac_pool_name", event.getMacPoolName()); } private MapSqlParameterSource getExternalEventSqlMapper(AuditLog event) { @@ -242,6 +244,8 @@ entity.setCustomData(rs.getString("custom_data")); entity.setDeleted(rs.getBoolean("deleted")); entity.setCallStack(rs.getString("call_stack")); + entity.setMacPoolId(getGuid(rs, "mac_pool_id")); + entity.setMacPoolName(rs.getString("mac_pool_name")); 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 772d799..542d8c5 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties @@ -835,3 +835,10 @@ KDUMP_FLOW_NOT_DETECTED_ON_VDS=Kdump flow not detected on host '${VdsName}'. KDUMP_FLOW_FINISHED_ON_VDS=Kdump flow finished on host '${VdsName}'. KDUMP_DETECTION_NOT_CONFIGURED_ON_VDS=Kdump detection is enabled for host '${VdsName}', but kdump is not configured properly on host. + +MAC_POOL_ADD_SUCCESS=MAC Pool ${macPoolName} (id=${macPoolId}) created. +MAC_POOL_ADD_FAILED=Creation of MAC Pool ${macPoolName} failed. +MAC_POOL_EDIT_SUCCESS=MAC Pool ${macPoolName} (id=${macPoolId}) changed. +MAC_POOL_EDIT_FAILED=Alteration of MAC Pool ${macPoolName} (id=${macPoolId}) failed. +MAC_POOL_REMOVE_SUCCESS=MAC Pool ${macPoolName} (id=${macPoolId}) removed. +MAC_POOL_REMOVE_FAILED=Removal of MAC Pool ${macPoolName} (id=${macPoolId}) failed. diff --git a/packaging/dbscripts/audit_log_sp.sql b/packaging/dbscripts/audit_log_sp.sql index 714c053..926e1e6 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_mac_pool_id UUID, + v_mac_pool_name VARCHAR(255)) 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, mac_pool_id, mac_pool_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, v_call_stack, v_mac_pool_id, v_mac_pool_name); 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, 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, mac_pool_id, mac_pool_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, v_call_stack, v_mac_pool_id, v_mac_pool_name); v_audit_log_id := CURRVAL('audit_log_seq'); else diff --git a/packaging/dbscripts/upgrade/03_05_0730_support_audit_logging_for_mac_pools.sql b/packaging/dbscripts/upgrade/03_05_0730_support_audit_logging_for_mac_pools.sql new file mode 100644 index 0000000..35d9f36 --- /dev/null +++ b/packaging/dbscripts/upgrade/03_05_0730_support_audit_logging_for_mac_pools.sql @@ -0,0 +1,4 @@ +SELECT + fn_db_add_column('audit_log', 'mac_pool_id', 'uuid'); +SELECT + fn_db_add_column('audit_log', 'mac_pool_name', 'VARCHAR(255)'); -- To view, visit http://gerrit.ovirt.org/29204 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I376b89abc03657a7cd2eb1b06e21591e4cd944ad Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <mmu...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches