Maor Lipchuk has uploaded a new change for review.

Change subject: core: filter candidate block Storage Domains with existing LUNs.
......................................................................

core: filter candidate block Storage Domains with existing LUNs.

Filter out candidates of imported Storage Domain if we have external
LUNs which are part of the vg.

Change-Id: Id82e5e1d3df8ce265833efb3fc4b9050ca73b679
Bug-Url: https://bugzilla.redhat.com/1157243
Signed-off-by: Maor Lipchuk <mlipc...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredBlockStorageDomainsQuery.java
1 file changed, 17 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/79/36079/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredBlockStorageDomainsQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredBlockStorageDomainsQuery.java
index d93a639..04c19b2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredBlockStorageDomainsQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetUnregisteredBlockStorageDomainsQuery.java
@@ -207,6 +207,10 @@
     @SuppressWarnings("unchecked")
     protected List<StorageDomain> 
getStorageDomainsByVolumeGroupIds(List<String> vgIDs) {
         List<StorageDomain> storageDomains = new ArrayList<>();
+
+        // Get existing PhysicalVolumes.
+        List<String> existingPhysicalVolumeIds = 
getPhysicalVolumesFromLunsList(getDbFacade().getLunDao().getAll());
+
         for (String vgID : vgIDs) {
             VDSReturnValue returnValue = null;
             try {
@@ -220,6 +224,11 @@
             }
 
             ArrayList<LUNs> luns = (ArrayList<LUNs>) 
returnValue.getReturnValue();
+            List<String> physicalVolumeIdsOnStorage = 
getPhysicalVolumesFromLunsList(luns);
+            if (CollectionUtils.containsAny(physicalVolumeIdsOnStorage, 
existingPhysicalVolumeIds)) {
+                log.info("There are existing luns in the system which are part 
of VG id '{}'", vgID);
+                continue;
+            }
 
             // Get storage domain ID by a representative LUN
             LUNs lun = luns.get(0);
@@ -234,6 +243,14 @@
         return storageDomains;
     }
 
+    private List<String> getPhysicalVolumesFromLunsList(List<LUNs> luns) {
+        List<String> physicalVolumeIds = new ArrayList<>();
+        for (LUNs lun : luns) {
+            physicalVolumeIds.add(lun.getphysical_volume_id());
+        }
+        return physicalVolumeIds;
+    }
+
     /**
      * Retrieve a storage domain using a specified storage domain ID.
      *


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id82e5e1d3df8ce265833efb3fc4b9050ca73b679
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