Maor Lipchuk has uploaded a new change for review.

Change subject: core(WIP): Use audit log instead block.
......................................................................

core(WIP): Use audit log instead block.

Validation of percentage free space in domain should not block
operations on the domain but only use audit log instead.

DO NOT SUBMIT: Tests should be revisited.

Bug-Url: https://bugzilla.redhat.com/856201
Change-Id: Ia910b83d4dedefc9c22d0c30bc099fa5fb628355
Signed-off-by: Maor Lipchuk <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/command/utils/StorageDomainSpaceChecker.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
2 files changed, 53 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/11407/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/command/utils/StorageDomainSpaceChecker.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/command/utils/StorageDomainSpaceChecker.java
index 9e8d364..03fec0c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/command/utils/StorageDomainSpaceChecker.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/command/utils/StorageDomainSpaceChecker.java
@@ -1,14 +1,37 @@
 package org.ovirt.engine.core.bll.command.utils;
 
+import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.businessentities.StorageDomainDynamic;
 import org.ovirt.engine.core.common.businessentities.storage_domains;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
+import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase;
 
 public class StorageDomainSpaceChecker {
 
     public static boolean isAboveThresholds(final storage_domains domain) {
-        return isEnoughFreeSpace(domain) && isEnoughFreePct(domain);
+        boolean percentThresholdMet = true;
+        if (domain.getavailable_disk_size() != null && 
domain.getused_disk_size() != null) {
+            AuditLogType type = null;
+            boolean spaceThresholdMet = !isEnoughFreeSpace(domain);
+            percentThresholdMet = !isEnoughFreePct(domain);
+            if (spaceThresholdMet && percentThresholdMet) {
+                type = AuditLogType.IRS_DISK_SPACE_LOW_ERROR;
+            } else {
+                if (spaceThresholdMet || percentThresholdMet) {
+                    type = AuditLogType.IRS_DISK_SPACE_LOW;
+                }
+            }
+            if (type != null) {
+                AuditLogableBase logable = new AuditLogableBase();
+                logable.setStorageDomain(domain);
+                logable.AddCustomValue("DiskSpace", 
(domain.getavailable_disk_size()).toString());
+                domain.setstorage_name(domain.getstorage_name());
+                AuditLogDirector.log(logable, type);
+            }
+        }
+        return percentThresholdMet;
     }
 
     private static boolean isEnoughFreePct(final storage_domains domain) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
index 226da1d..2e7486d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/StorageDomainCommandBase.java
@@ -7,11 +7,13 @@
 
 import org.ovirt.engine.core.bll.context.CompensationContext;
 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.StorageDomainParametersBase;
 import 
org.ovirt.engine.core.common.businessentities.LUN_storage_server_connection_map;
 import 
org.ovirt.engine.core.common.businessentities.LUN_storage_server_connection_map_id;
 import org.ovirt.engine.core.common.businessentities.LUNs;
+import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomainType;
 import org.ovirt.engine.core.common.businessentities.StoragePoolIsoMap;
@@ -26,6 +28,8 @@
 import org.ovirt.engine.core.compat.NGuid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 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;
 import org.ovirt.engine.core.dao.BaseDiskDao;
 import org.ovirt.engine.core.dao.DiskImageDAO;
 import org.ovirt.engine.core.dao.DiskImageDynamicDAO;
@@ -275,6 +279,31 @@
         runSynchronizeOperation(new 
RefreshStoragePoolAndDisconnectAsyncOperationFactory());
     }
 
+    public static void auditLogWhenFreeSpaceLow(storage_domains data,
+            StorageDomainStatic domainFromDb,
+            double freePercent,
+            int freeDiskInGB) {
+        AuditLogType type = AuditLogType.UNASSIGNED;
+        boolean spaceThresholdMet =
+                freeDiskInGB <= Config.<Integer> 
GetValue(ConfigValues.FreeSpaceCriticalLowInGB);
+        boolean percentThresholdMet =
+                freePercent <= Config.<Integer> 
GetValue(ConfigValues.FreeSpaceLow);
+        if (spaceThresholdMet && percentThresholdMet) {
+            type = AuditLogType.IRS_DISK_SPACE_LOW_ERROR;
+        } else {
+            if (spaceThresholdMet || percentThresholdMet) {
+                type = AuditLogType.IRS_DISK_SPACE_LOW;
+            }
+        }
+        if (type != AuditLogType.UNASSIGNED) {
+            AuditLogableBase logable = new AuditLogableBase();
+            logable.setStorageDomain(data);
+            logable.AddCustomValue("DiskSpace", 
(data.getavailable_disk_size()).toString());
+            data.setstorage_name(domainFromDb.getstorage_name());
+            AuditLogDirector.log(logable, type);
+        }
+    }
+
     /**
      *  The new master must  be a data domain which is in Active status and not
      * reported by any vdsm as problematic. In case that all domains reported 
as problematic a first Active data domain


--
To view, visit http://gerrit.ovirt.org/11407
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia910b83d4dedefc9c22d0c30bc099fa5fb628355
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to