Omer Frenkel has uploaded a new change for review. Change subject: add search by instance type ......................................................................
add search by instance type WIP WIP WIP first experiment for searching instance types without DB changes (view not added) Change-Id: I0dbc86a2f2a46f29208236f2a269a4c3d8d8a050 Signed-off-by: Omer Frenkel <ofren...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/interfaces/SearchType.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/VmTemplateConditionFieldAutoCompleter.java 6 files changed, 48 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/12476/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java index 5d28c76..8993de3 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java @@ -14,20 +14,20 @@ import org.ovirt.engine.core.bll.adbroker.LdapQueryType; import org.ovirt.engine.core.bll.adbroker.LdapSearchByQueryParameters; import org.ovirt.engine.core.bll.quota.QuotaManager; -import org.ovirt.engine.core.common.businessentities.LdapUser; import org.ovirt.engine.core.common.businessentities.AuditLog; import org.ovirt.engine.core.common.businessentities.DbUser; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; +import org.ovirt.engine.core.common.businessentities.LdapGroup; +import org.ovirt.engine.core.common.businessentities.LdapUser; import org.ovirt.engine.core.common.businessentities.Quota; +import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VM; -import org.ovirt.engine.core.common.businessentities.VmTemplate; -import org.ovirt.engine.core.common.businessentities.LdapGroup; -import org.ovirt.engine.core.common.businessentities.StorageDomain; -import org.ovirt.engine.core.common.businessentities.storage_pool; import org.ovirt.engine.core.common.businessentities.VmPool; +import org.ovirt.engine.core.common.businessentities.VmTemplate; +import org.ovirt.engine.core.common.businessentities.storage_pool; import org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity; import org.ovirt.engine.core.common.businessentities.network.NetworkView; import org.ovirt.engine.core.common.config.Config; @@ -133,6 +133,10 @@ returnValue = searchNetworks(); break; } + case InstanceType: { + returnValue = searchInstanceTypes(); + break; + } default: { log.errorFormat("Search object type not handled: {0}", getParameters().getSearchTypeValue()); break; @@ -220,6 +224,9 @@ } }); } + private List<VmTemplate> searchInstanceTypes() { + return genericSearch(getDbFacade().getVmTemplateDao(), true, null); + } private final <T extends IVdcQueryable> List<T> genericSearch(final SearchDAO<T> dao, final boolean useCache, diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/interfaces/SearchType.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/interfaces/SearchType.java index 79fcd3a..6d7e83b 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/interfaces/SearchType.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/interfaces/SearchType.java @@ -17,7 +17,8 @@ Quota, Disk, GlusterVolume, - Network; + Network, + InstanceType; public int getValue() { return this.ordinal(); 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 a4bb9b0..42e6ffa 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 @@ -28,6 +28,7 @@ mVerbs.put(SearchObjects.GLUSTER_VOLUME_PLU_OBJ_NAME, SearchObjects.GLUSTER_VOLUME_PLU_OBJ_NAME); mVerbs.put(SearchObjects.QUOTA_OBJ_NAME, SearchObjects.QUOTA_OBJ_NAME); mVerbs.put(SearchObjects.NETWORK_PLU_OBJ_NAME, SearchObjects.NETWORK_PLU_OBJ_NAME); + mVerbs.put(SearchObjects.INSTANCE_TYPE_PLU_OBJ_NAME, SearchObjects.INSTANCE_TYPE_PLU_OBJ_NAME); buildCompletions(); mVerbs.put(SearchObjects.VM_OBJ_NAME, SearchObjects.VM_OBJ_NAME); @@ -42,6 +43,8 @@ mVerbs.put(SearchObjects.VDC_CLUSTER_OBJ_NAME, SearchObjects.VDC_CLUSTER_OBJ_NAME); mVerbs.put(SearchObjects.GLUSTER_VOLUME_OBJ_NAME, SearchObjects.GLUSTER_VOLUME_OBJ_NAME); mVerbs.put(SearchObjects.NETWORK_OBJ_NAME, SearchObjects.NETWORK_OBJ_NAME); + mVerbs.put(SearchObjects.INSTANCE_TYPE_OBJ_NAME, SearchObjects.INSTANCE_TYPE_OBJ_NAME); + // vms - vds addJoin(SearchObjects.VM_OBJ_NAME, "run_on_vds", SearchObjects.VDS_OBJ_NAME, "vds_id"); @@ -66,6 +69,9 @@ // templates - vm template network interface addJoin(SearchObjects.TEMPLATE_OBJ_NAME, "vmt_guid", SearchObjects.VM_NETWORK_INTERFACE_OBJ_NAME, "vmt_guid"); + + // instance-types - vm template network interface + addJoin(SearchObjects.INSTANCE_TYPE_OBJ_NAME, "vmt_guid", SearchObjects.VM_NETWORK_INTERFACE_OBJ_NAME, "vmt_guid"); // vds - storage domain addJoin(SearchObjects.VDS_OBJ_NAME, "storage_id", SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, "id"); @@ -173,6 +179,12 @@ "audit_log_id", "audit_log_id DESC ")); put(SearchObjects.TEMPLATE_OBJ_NAME, new EntitySearchInfo(new TemplateCrossRefAutoCompleter(), + new VmTemplateConditionFieldAutoCompleter(), + "vm_templates_view", + "vm_templates_storage_domain", + "vmt_guid", + "name ASC ")); + put(SearchObjects.INSTANCE_TYPE_OBJ_NAME, new EntitySearchInfo(new TemplateCrossRefAutoCompleter(), new VmTemplateConditionFieldAutoCompleter(), "vm_templates_view", "vm_templates_storage_domain", @@ -291,6 +303,7 @@ { put(SearchObjects.AUDIT_PLU_OBJ_NAME, SearchObjects.AUDIT_OBJ_NAME); put(SearchObjects.TEMPLATE_PLU_OBJ_NAME, SearchObjects.TEMPLATE_OBJ_NAME); + put(SearchObjects.INSTANCE_TYPE_PLU_OBJ_NAME, SearchObjects.INSTANCE_TYPE_OBJ_NAME); put(SearchObjects.VDC_USER_PLU_OBJ_NAME, SearchObjects.VDC_USER_OBJ_NAME); put(SearchObjects.VDS_PLU_OBJ_NAME, SearchObjects.VDS_OBJ_NAME); put(SearchObjects.VM_PLU_OBJ_NAME, SearchObjects.VM_OBJ_NAME); 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 f4c156d..9dc7816 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 @@ -38,6 +38,8 @@ public static final String VM_NETWORK_INTERFACE_OBJ_NAME = "VNIC"; public static final String NETWORK_CLUSTER_OBJ_NAME = "CLUSTER_NETWORK"; public static final String NETWORK_HOST_OBJ_NAME = "HOST_NETWORK"; + public static final String INSTANCE_TYPE_OBJ_NAME = "INSTANCETYPE"; + public static final String INSTANCE_TYPE_PLU_OBJ_NAME = "INSTANCETYPES"; //special searches private static final String ALERT = "EVENTS: severity=alert"; @@ -81,6 +83,8 @@ SAFE_SEARCH_EXPR.add(HOST_BY_CPU.toLowerCase()); SAFE_SEARCH_EXPR.add(DATACENTER_BY_NAME.toLowerCase()); SAFE_SEARCH_EXPR.add(VM_BY_STATUS.toLowerCase()); + SAFE_SEARCH_EXPR.add(INSTANCE_TYPE_OBJ_NAME.toLowerCase() + SEPERATOR); + SAFE_SEARCH_EXPR.add(INSTANCE_TYPE_PLU_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 bd40f2d..e038f46 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 @@ -796,14 +796,21 @@ private String generateSqlFromSyntaxContainer(SyntaxContainer syntax, boolean isSafe) { String retval = ""; + String specialWhere = null; if (syntax.getvalid()) { ListIterator<SyntaxObject> objIter = syntax.listIterator(0); IConditionFieldAutoCompleter conditionFieldAC; LinkedList<String> whereBuilder = new LinkedList<String>(); String searchObjStr = syntax.getSearchObjectStr(); + String sortByPhrase = ""; String fromStatement = ""; String pageNumber = ""; + + + if (SearchObjects.INSTANCE_TYPE_OBJ_NAME.equals(syntax.getObjSingularName(searchObjStr))) { + specialWhere = "entity_type = 'INSTANCE_TYPE'"; + } while (objIter.hasNext()) { SyntaxObject obj = objIter.next(); @@ -862,6 +869,12 @@ StringBuilder wherePhrase = new StringBuilder(); if (whereBuilder.size() > 0) { wherePhrase.append(" WHERE "); + + if (specialWhere != null) { + wherePhrase.append(specialWhere); + wherePhrase.append(" AND "); + } + ListIterator<String> iter = whereBuilder.listIterator(0); while (iter.hasNext()) { String queryPart = iter.next(); @@ -870,6 +883,9 @@ wherePhrase.append(" AND "); } } + } else if (specialWhere != null) { + wherePhrase.append(" WHERE "); + wherePhrase.append(specialWhere); } // adding the sorting part if required diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VmTemplateConditionFieldAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VmTemplateConditionFieldAutoCompleter.java index 0373ee8..07dab15 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VmTemplateConditionFieldAutoCompleter.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/VmTemplateConditionFieldAutoCompleter.java @@ -78,7 +78,7 @@ return new EnumValueAutoCompleter(VmTemplateStatus.class); } else if ("QUOTA".equals(fieldName)) { return new NullableStringAutoCompleter(); - } else if ("STATUS".equals(fieldName)) { + } else if ("TYPE".equals(fieldName)) { return new EnumValueAutoCompleter(TemplateType.class); } return null; -- To view, visit http://gerrit.ovirt.org/12476 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0dbc86a2f2a46f29208236f2a269a4c3d8d8a050 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Omer Frenkel <ofren...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches