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

Reply via email to