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