Tal Nisan has uploaded a new change for review. Change subject: core: Add an audit log entry when number of LVs on a domain exceeded max ......................................................................
core: Add an audit log entry when number of LVs on a domain exceeded max When creating a new image/snapshot on a block domain, if the number of LVs on this domain exceeded the maximum value defined in the config, an audit log entry will be added to warn the admin Change-Id: Ie701a4b622b4f93690020922f96279d28903abc8 Signed-off-by: Tal Nisan <[email protected]> Bug-Url: https://bugzilla.redhat.com/1015186 --- M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/AuditLogType.java M backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CloneImageGroupStructureVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CopyImageVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateImageVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateSnapshotVDSCommand.java M backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/MoveImageGroupVDSCommand.java A backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/storage/StorageDomainHelper.java 8 files changed, 45 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/57/29057/1 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..f8ca690 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 @@ -837,6 +837,7 @@ UPDATE_OVF_FOR_STORAGE_POOL_FAILED(1005, AuditLogSeverity.WARNING), UPGRADE_STORAGE_POOL_ENCOUNTERED_PROBLEMS(1006, AuditLogSeverity.WARNING), REFRESH_REPOSITORY_IMAGE_LIST_INCOMPLETE(1007, AuditLogSeverity.WARNING), + NUNBER_OF_LVS_ON_STORAGE_DOMAIN_EXCEEDED_THRESHOLD(1008, AuditLogSeverity.WARNING), RELOAD_CONFIGURATIONS_SUCCESS(1010), RELOAD_CONFIGURATIONS_FAILURE(1011, AuditLogSeverity.ERROR), 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..21c1396 100644 --- a/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties +++ b/backend/manager/modules/dal/src/main/resources/bundles/AuditLogMessages.properties @@ -620,6 +620,7 @@ REFRESH_REPOSITORY_IMAGE_LIST_FAILED=Refresh image list failed for domain(s): ${imageDomains}. Please check domain activity. REFRESH_REPOSITORY_IMAGE_LIST_SUCCEEDED=Refresh image list succeeded for domain(s): ${imageDomains} REFRESH_REPOSITORY_IMAGE_LIST_INCOMPLETE=Refresh image list probably incomplete for domain ${imageDomain}, only ${imageListSize} images discovered. +NUNBER_OF_LVS_ON_STORAGE_DOMAIN_EXCEEDED_THRESHOLD=The number of LVs on the domain ${storageDomainName} exceeded the threshold of ${maxNumOfLVs}. TASK_CLEARING_ASYNC_TASK=Clearing asynchronous task ${CommandName} that started at ${Date} VM_WAS_SET_DOWN_DUE_TO_HOST_REBOOT_OR_MANUAL_FENCE=Vm ${VmName} was shut down due to ${VdsName} host reboot or manual fence UPDATE_TAGS_VM_DEFAULT_DISPLAY_TYPE=Vm ${VmName} tag default display type was updated diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CloneImageGroupStructureVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CloneImageGroupStructureVDSCommand.java index 3fe2ca9..d5cf63a 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CloneImageGroupStructureVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CloneImageGroupStructureVDSCommand.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.common.asynctasks.AsyncTaskType; import org.ovirt.engine.core.common.vdscommands.TargetDomainImageGroupVDSCommandParameters; import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.vdsbroker.storage.StorageDomainHelper; public class CloneImageGroupStructureVDSCommand<P extends TargetDomainImageGroupVDSCommandParameters> extends IrsCreateCommand<P> { public CloneImageGroupStructureVDSCommand(P parameters) { @@ -12,6 +13,7 @@ @Override protected void executeIrsBrokerCommand() { + StorageDomainHelper.checkNumberOfLVsForBlockDomain(getParameters().getDstDomainId()); P params = getParameters(); uuidReturn = getIrsProxy().cloneImageStructure(params.getStoragePoolId().toString(), params.getStorageDomainId().toString(), diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CopyImageVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CopyImageVDSCommand.java index 87a0ae9..0259596 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CopyImageVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CopyImageVDSCommand.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; +import org.ovirt.engine.core.vdsbroker.storage.StorageDomainHelper; public class CopyImageVDSCommand<P extends CopyImageVDSCommandParameters> extends IrsCreateCommand<P> { public CopyImageVDSCommand(P parameters) { @@ -14,6 +15,7 @@ @Override protected void executeIrsBrokerCommand() { + StorageDomainHelper.checkNumberOfLVsForBlockDomain(getParameters().getDstStorageDomainId()); /** * TODO: EINAV: - Consider 'RunAsync' parameter (pass it to IRS too). - Add 'description' parameter. - we should * provide 'volumeUUID'. - TaskID should be provided by IRS. diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateImageVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateImageVDSCommand.java index 8d7305a..79b4465 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateImageVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateImageVDSCommand.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; +import org.ovirt.engine.core.vdsbroker.storage.StorageDomainHelper; public class CreateImageVDSCommand<P extends CreateImageVDSCommandParameters> extends IrsCreateCommand<P> { public CreateImageVDSCommand(P parameters) { @@ -14,6 +15,7 @@ @Override protected void executeIrsBrokerCommand() { + StorageDomainHelper.checkNumberOfLVsForBlockDomain(getParameters().getStorageDomainId()); setReturnValue(Guid.Empty); log.info("-- executeIrsBrokerCommand: calling 'createVolume' with two new parameters: description and UUID"); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateSnapshotVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateSnapshotVDSCommand.java index a3e63a8..da4e990 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateSnapshotVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/CreateSnapshotVDSCommand.java @@ -6,6 +6,7 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.log.Log; import org.ovirt.engine.core.utils.log.LogFactory; +import org.ovirt.engine.core.vdsbroker.storage.StorageDomainHelper; public class CreateSnapshotVDSCommand<P extends CreateSnapshotVDSCommandParameters> extends IrsCreateCommand<P> { public CreateSnapshotVDSCommand(P parameters) { @@ -14,6 +15,7 @@ @Override protected void executeIrsBrokerCommand() { + StorageDomainHelper.checkNumberOfLVsForBlockDomain(getParameters().getStorageDomainId()); setReturnValue(Guid.Empty); log.info("-- executeIrsBrokerCommand: calling 'createVolume' with two new parameters: description and UUID"); diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/MoveImageGroupVDSCommand.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/MoveImageGroupVDSCommand.java index 0043e2d..2864d8e 100644 --- a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/MoveImageGroupVDSCommand.java +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/irsbroker/MoveImageGroupVDSCommand.java @@ -4,6 +4,7 @@ import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.common.asynctasks.AsyncTaskCreationInfo; import org.ovirt.engine.core.common.vdscommands.MoveImageGroupVDSCommandParameters; +import org.ovirt.engine.core.vdsbroker.storage.StorageDomainHelper; public class MoveImageGroupVDSCommand<P extends MoveImageGroupVDSCommandParameters> extends IrsCreateCommand<P> { public MoveImageGroupVDSCommand(P parameters) { @@ -12,6 +13,7 @@ @Override protected void executeIrsBrokerCommand() { + StorageDomainHelper.checkNumberOfLVsForBlockDomain(getParameters().getDstDomainId()); uuidReturn = getIrsProxy().moveImage(getParameters().getStoragePoolId().toString(), getParameters().getStorageDomainId().toString(), getParameters().getDstDomainId().toString(), diff --git a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/storage/StorageDomainHelper.java b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/storage/StorageDomainHelper.java new file mode 100644 index 0000000..5640b53 --- /dev/null +++ b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/storage/StorageDomainHelper.java @@ -0,0 +1,33 @@ +package org.ovirt.engine.core.vdsbroker.storage; + +import org.ovirt.engine.core.common.AuditLogType; +import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; +import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; + +public class StorageDomainHelper { + + /** + * If the storage domain given in the parameter is a block domain, the number of LVs on this domain will be fetched + * and if it exceeds the maximum number of LVs defined in the AlertOnNumberOfLVs config value, an audit log will + * be logged to indicate that the number of LVs on this domain exceeded the allowed number of LVs + * @param storageDomainId + */ + public static void checkNumberOfLVsForBlockDomain(Guid storageDomainId) { + StorageDomainStatic domain = DbFacade.getInstance().getStorageDomainStaticDao().get(storageDomainId); + if (domain.getStorageType().isBlockDomain()) { + long numOfLVs = DbFacade.getInstance().getStorageDomainDao().getNumberOfImagesInStorageDomain(storageDomainId); + Integer maxNumOfLVs = Config.getValue(ConfigValues.AlertOnNumberOfLVs); + if (numOfLVs >= maxNumOfLVs) { + AuditLogableBase logable = new AuditLogableBase(); + logable.setStorageDomainId(storageDomainId); + logable.addCustomValue("maxNumOfLVs", maxNumOfLVs.toString()); + AuditLogDirector.log(logable, AuditLogType.NUNBER_OF_LVS_ON_STORAGE_DOMAIN_EXCEEDED_THRESHOLD); + } + } + } +} -- To view, visit http://gerrit.ovirt.org/29057 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie701a4b622b4f93690020922f96279d28903abc8 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Tal Nisan <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
