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