Greg Padgett has uploaded a new change for review.

Change subject: core: search for disks on specific domains
......................................................................

core: search for disks on specific domains

Fix exception due to bad join condition when searching for disks on
specific storage domains.

Before the regression, this worked by auto-completing disk searches
with 'domains' and other objects with 'domain' (note the plurality)
and using different views for each.  Instead of reintroducing this, a
new join was added which connects the views used for disks and domains.

Change-Id: I2a1467a9a5a6ffdcbaf388ce06f43eb6f9f34ab5
Bug-Url: https://bugzilla.redhat.com/861301
Signed-off-by: Greg Padgett <gpadg...@redhat.com>
---
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DiskCrossRefAutoCompleter.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
M 
backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxContainer.java
5 files changed, 27 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/85/8385/1

diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DiskCrossRefAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DiskCrossRefAutoCompleter.java
index 8f8f9f4..597d908 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DiskCrossRefAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/DiskCrossRefAutoCompleter.java
@@ -3,7 +3,7 @@
 public class DiskCrossRefAutoCompleter extends SearchObjectsBaseAutoCompleter {
     public DiskCrossRefAutoCompleter() {
         mVerbs.put(SearchObjects.VDC_STORAGE_POOL_OBJ_NAME, 
SearchObjects.VDC_STORAGE_POOL_OBJ_NAME);
-        mVerbs.put(SearchObjects.VDC_STORAGE_DOMAIN_PLU_OBJ_NAME, 
SearchObjects.VDC_STORAGE_DOMAIN_PLU_OBJ_NAME);
+        mVerbs.put(SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME);
         buildCompletions();
     }
 }
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
index ae687a9..bf8cba6 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjectAutoCompleter.java
@@ -65,8 +65,11 @@
         // cluster - storage domain
         addJoin(SearchObjects.VDC_CLUSTER_OBJ_NAME, "storage_id", 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, "id");
 
-        // disk - storage domain
-        addJoin(SearchObjects.DISK_OBJ_NAME, "image_guid", 
SearchObjects.VDC_STORAGE_DOMAIN_PLU_OBJ_NAME, "image_guid");
+        // disk - storage domain images
+        addJoin(SearchObjects.DISK_OBJ_NAME, "image_guid", 
SearchObjects.VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME, "image_guid");
+
+        // storage domain images - storage domain
+        addJoin(SearchObjects.VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME, "id", 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, "id");
 
         // vds - audit
         addJoin(SearchObjects.VDS_OBJ_NAME, "vds_id", 
SearchObjects.AUDIT_OBJ_NAME, "vds_id");
@@ -190,6 +193,13 @@
                                     "storage_domains_with_hosts_view",
                                     "id",
                                     "storage_name ASC "));
+                    put(SearchObjects.VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME,
+                            new EntitySearchInfo(null,
+                                    null,
+                                    null,
+                                    "vm_images_storage_domains_view",
+                                    "image_guid",
+                                    "disk_alias ASC "));
                     put(SearchObjects.GLUSTER_VOLUME_OBJ_NAME,
                             new 
EntitySearchInfo(GlusterVolumeCrossRefAutoCompleter.INSTANCE,
                                     
GlusterVolumeConditionFieldAutoCompleter.INSTANCE,
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java
index f33d39e..9d5cf17 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SearchObjects.java
@@ -25,6 +25,7 @@
     public static final String VDC_STORAGE_POOL_OBJ_NAME = "DATACENTER";
     public static final String VDC_STORAGE_DOMAIN_OBJ_NAME = "STORAGE";
     public static final String VDC_STORAGE_DOMAIN_PLU_OBJ_NAME = "STORAGES";
+    public static final String VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME = "VMIMAGE";
     public static final String DISK_OBJ_NAME = "DISK";
     public static final String DISK_PLU_OBJ_NAME = "DISKS";
     public static final String GLUSTER_VOLUME_OBJ_NAME = "VOLUME";
@@ -60,6 +61,7 @@
         SAFE_SEARCH_EXPR.add(VDC_STORAGE_POOL_OBJ_NAME.toLowerCase() + 
SEPERATOR);
         SAFE_SEARCH_EXPR.add(VDC_STORAGE_DOMAIN_OBJ_NAME.toLowerCase() + 
SEPERATOR);
         SAFE_SEARCH_EXPR.add(VDC_STORAGE_DOMAIN_PLU_OBJ_NAME.toLowerCase() + 
SEPERATOR);
+        SAFE_SEARCH_EXPR.add(VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME.toLowerCase() + 
SEPERATOR);
         SAFE_SEARCH_EXPR.add(DISK_OBJ_NAME.toLowerCase() + SEPERATOR);
         SAFE_SEARCH_EXPR.add(DISK_PLU_OBJ_NAME.toLowerCase() + SEPERATOR);
         SAFE_SEARCH_EXPR.add(GLUSTER_VOLUME_OBJ_NAME.toLowerCase() + 
SEPERATOR);
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
index 8a0a3a6..f0fac17 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxChecker.java
@@ -748,7 +748,15 @@
                         refObjList.remove(SearchObjects.VM_OBJ_NAME);
                     }
                 }
-
+            }
+            else if (SearchObjects.DISK_OBJ_NAME.equals(searchObjStr)) {
+                if 
(refObjList.contains(SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME)) {
+                    
innerJoins.addFirst(mSearchObjectAC.getInnerJoin(SearchObjects.DISK_OBJ_NAME,
+                            SearchObjects.VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME));
+                    
innerJoins.addLast(mSearchObjectAC.getInnerJoin(SearchObjects.VDC_STORAGE_DOMAIN_IMAGE_OBJ_NAME,
+                            SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME));
+                    
refObjList.remove(SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME);
+                }
             }
         }
         for (String cro : refObjList) {
diff --git 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxContainer.java
 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxContainer.java
index 79bd0ec..c5447ec 100644
--- 
a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxContainer.java
+++ 
b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxContainer.java
@@ -206,9 +206,9 @@
                 || StringHelper.EqOp(obj, 
SearchObjects.VDC_CLUSTER_PLU_OBJ_NAME)) {
             retval = SearchObjects.VDC_CLUSTER_OBJ_NAME;
         }
-        else if (StringHelper.EqOp(obj, 
SearchObjects.VDC_STORAGE_POOL_OBJ_NAME)
-                || StringHelper.EqOp(obj, 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME)) {
-            retval = obj;
+        else if (StringHelper.EqOp(obj, 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME)
+                || StringHelper.EqOp(obj, 
SearchObjects.VDC_STORAGE_DOMAIN_PLU_OBJ_NAME)) {
+            retval = SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME;
         }
         else if (StringHelper.EqOp(obj, SearchObjects.GLUSTER_VOLUME_OBJ_NAME)
                 || StringHelper.EqOp(obj, 
SearchObjects.GLUSTER_VOLUME_PLU_OBJ_NAME)) {


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

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

Reply via email to