Maor Lipchuk has uploaded a new change for review.

Change subject: core:[WIP] Add validation when Storage Domain is blocked.
......................................................................

core:[WIP] Add validation when Storage Domain is blocked.

Adding a CDA validation to prevent importing an iSCSI domain while there are 
connectivity issues.

Change-Id: I9a7c12609b3780c74396dab6edf26e4deaff490f
Bug-Url: https://bugzilla.redhat.com/1183537
Signed-off-by: Maor Lipchuk <mlipc...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommandTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
3 files changed, 24 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/37729/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java
index a2c3043..ab56577 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommand.java
@@ -12,6 +12,7 @@
 import org.ovirt.engine.core.common.action.StorageDomainManagementParameter;
 import org.ovirt.engine.core.common.businessentities.Entities;
 import org.ovirt.engine.core.common.businessentities.LUNs;
+import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.locks.LockingGroup;
 import org.ovirt.engine.core.common.utils.Pair;
@@ -43,7 +44,13 @@
         updateStorageDomainWipeAfterDelete();
         // Add StorageDomain object to DB and update statistics
         addStorageDomainInDb();
-        updateStorageDomainDynamicFromIrs();
+        try {
+            updateStorageDomainDynamicFromIrs();
+        } catch (VdcBLLException e) {
+            log.error("Could not succeeded to get storage domain stat. 
Message: {}", e.getMessage());
+            
addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_PROBLEM_WITH_CANDIDATE_INFO);
+            return;
+        }
 
         // Add relevant LUNs to DB
         List<LUNs> luns = getLUNsFromVgInfo(getStorageDomain().getStorage());
@@ -64,6 +71,9 @@
         }
 
         List<LUNs> lunsOnStorage = 
getLUNsFromVgInfo(getStorageDomain().getStorage());
+        if (lunsOnStorage.isEmpty()) {
+            return 
failCanDoAction(VdcBllMessages.ACTION_TYPE_FAILED_PROBLEM_WITH_CANDIDATE_INFO);
+        }
         if (CollectionUtils.containsAny(Entities.getIds(lunsOnStorage), 
Entities.getIds(getAllLuns()))) {
             log.info("There are existing luns in the system which are part of 
VG id '{}'",
                     getStorageDomain().getStorage());
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommandTest.java
index 627fa08..681da3d 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/AddExistingBlockStorageDomainCommandTest.java
@@ -70,6 +70,18 @@
     }
 
     @Test
+    public void testAddExistingBlockDomainWhenVgInfoReturnsEmptyLunList() {
+        
when(command.getStorageDomainStaticDAO().get(any(Guid.class))).thenReturn(null);
+        List<LUNs> luns = new ArrayList<>();
+        
when(command.getLUNsFromVgInfo(parameters.getStorageDomain().getStorage())).thenReturn(luns);
+        assertFalse("Could not connect to Storage Domain", 
command.canAddDomain());
+        assertTrue("Import block Storage Domain should have failed due to 
empty Lun list returned from VGInfo ",
+                command.getReturnValue()
+                        .getCanDoActionMessages()
+                        
.contains(VdcBllMessages.ACTION_TYPE_FAILED_PROBLEM_WITH_CANDIDATE_INFO.toString()));
+    }
+
+    @Test
     public void testAlreadyExistStorageDomain() {
         
when(command.getStorageDomainStaticDAO().get(any(Guid.class))).thenReturn(getStorageDomain());
         assertFalse("Storage Domain already exists", command.canAddDomain());
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
index 7e9a979..b01a37a 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/errors/VdcBllMessages.java
@@ -254,6 +254,7 @@
     ACTION_TYPE_FAILED_STORAGE_DOMAIN_NAME_ALREADY_EXIST(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_STORAGE_DOMAIN_ALREADY_EXIST(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_IMPORT_STORAGE_DOMAIN_EXTERNAL_LUN_DISK_EXIST(ErrorType.CONFLICT),
+    ACTION_TYPE_FAILED_PROBLEM_WITH_CANDIDATE_INFO(ErrorType.CONFLICT),
     ACTION_TYPE_FAILED_STORAGE_POOL_NAME_ALREADY_EXIST(ErrorType.CONFLICT),
     
ACTION_TYPE_FAILED_TEMPLATE_NOT_FOUND_ON_DESTINATION_DOMAIN(ErrorType.BAD_PARAMETERS),
     
ACTION_TYPE_FAILED_TEMPLATE_NOT_FOUND_ON_EXPORT_DOMAIN(ErrorType.BAD_PARAMETERS),


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9a7c12609b3780c74396dab6edf26e4deaff490f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Maor Lipchuk <mlipc...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to