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

Reply via email to