Omer Frenkel has uploaded a new change for review.

Change subject: Add support to search by instance and image types
......................................................................

Add support to search by instance and image types

Change-Id: I1ab8c12b61faa79eadee6ec2dd069f23a7c0c9fa
Signed-off-by: Omer Frenkel <ofren...@redhat.com>
---
M backend/manager/dbscripts/create_views.sql
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/VmTemplateConditionFieldAutoCompleter.java
6 files changed, 76 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/08/14308/1

diff --git a/backend/manager/dbscripts/create_views.sql 
b/backend/manager/dbscripts/create_views.sql
index 4a4dd9c..e096fb1 100644
--- a/backend/manager/dbscripts/create_views.sql
+++ b/backend/manager/dbscripts/create_views.sql
@@ -397,10 +397,6 @@
 INNER JOIN vm_device vd ON vd.vm_id = vm_templates_view.vmt_guid
 INNER JOIN images ON images.image_group_id = vd.device_id AND images.active = 
TRUE;
 
-
-
-
-
 CREATE OR REPLACE VIEW vm_templates_storage_domain
 AS
        SELECT            vm_templates.vm_guid AS vmt_guid, 
vm_templates.vm_name AS name, vm_templates.mem_size_mb,
@@ -445,6 +441,24 @@
 WHERE                 entity_type = 'TEMPLATE' OR entity_type = 
'INSTANCE_TYPE' OR entity_type = 'IMAGE_TYPE';
 
 
+CREATE OR REPLACE VIEW instance_types_view
+AS
+       SELECT * from vm_templates_view where entity_type = 'INSTANCE_TYPE';
+
+CREATE OR REPLACE VIEW instance_types_storage_domain
+AS
+       SELECT * from vm_templates_storage_domain where entity_type = 
'INSTANCE_TYPE';
+
+
+CREATE OR REPLACE VIEW image_types_view
+AS
+       SELECT * from vm_templates_view where entity_type = 'IMAGE_TYPE';
+
+CREATE OR REPLACE VIEW image_types_storage_domain
+AS
+       SELECT * from vm_templates_storage_domain where entity_type = 
'IMAGE_TYPE';
+
+
 CREATE OR REPLACE VIEW vm_pool_map_view
 AS
 SELECT
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 6e2e836..d097435 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
@@ -15,20 +15,20 @@
 import org.ovirt.engine.core.bll.adbroker.LdapReturnValueBase;
 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.StoragePool;
 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.StoragePool;
 import org.ovirt.engine.core.common.businessentities.VmPool;
+import org.ovirt.engine.core.common.businessentities.VmTemplate;
 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;
@@ -134,6 +134,14 @@
             returnValue = searchNetworks();
             break;
         }
+        case InstanceType: {
+            returnValue = searchInstanceTypes();
+            break;
+        }
+        case ImageType: {
+            returnValue = searchVMTemplates();
+            break;
+        }
         default: {
             log.errorFormat("Search object type not handled: {0}", 
getParameters().getSearchTypeValue());
             break;
@@ -224,6 +232,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..3c787c1 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,9 @@
     Quota,
     Disk,
     GlusterVolume,
-    Network;
+    Network,
+    InstanceType,
+    ImageType;
 
     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 0ed91e3..977ffc3 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,8 @@
         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);
+        mVerbs.put(SearchObjects.IMAGE_TYPE_PLU_OBJ_NAME, 
SearchObjects.IMAGE_TYPE_PLU_OBJ_NAME);
 
         buildCompletions();
         mVerbs.put(SearchObjects.VM_OBJ_NAME, SearchObjects.VM_OBJ_NAME);
@@ -42,6 +44,9 @@
         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);
+        mVerbs.put(SearchObjects.IMAGE_TYPE_OBJ_NAME, 
SearchObjects.IMAGE_TYPE_OBJ_NAME);
+
 
         // vms - vds
         addJoin(SearchObjects.VM_OBJ_NAME, "run_on_vds", 
SearchObjects.VDS_OBJ_NAME, "vds_id");
@@ -64,8 +69,14 @@
         // templates - storage domain
         addJoin(SearchObjects.TEMPLATE_OBJ_NAME, "storage_id", 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, "id");
 
+        // image-type - storage domain
+        addJoin(SearchObjects.IMAGE_TYPE_OBJ_NAME, "storage_id", 
SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, "id");
+
         // 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");
@@ -184,6 +195,18 @@
                             "vm_templates_storage_domain",
                             "vmt_guid",
                             "name ASC "));
+                    put(SearchObjects.INSTANCE_TYPE_OBJ_NAME, new 
EntitySearchInfo(new TemplateCrossRefAutoCompleter(),
+                            new VmTemplateConditionFieldAutoCompleter(),
+                            "instance_types_view",
+                            "instance_types_storage_domain",
+                            "vmt_guid",
+                            "name ASC "));
+                    put(SearchObjects.IMAGE_TYPE_OBJ_NAME, new 
EntitySearchInfo(new TemplateCrossRefAutoCompleter(),
+                            new VmTemplateConditionFieldAutoCompleter(),
+                            "image_types_view",
+                            "image_types_storage_domain",
+                            "vmt_guid",
+                            "name ASC "));
                     put(SearchObjects.VDC_USER_OBJ_NAME, new 
EntitySearchInfo(new UserCrossRefAutoCompleter(),
                             new VdcUserConditionFieldAutoCompleter(),
                             "vdc_users",
@@ -297,6 +320,8 @@
         {
             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.IMAGE_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..80c16e4 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,10 @@
     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";
+    public static final String IMAGE_TYPE_OBJ_NAME = "IMAGETYPE";
+    public static final String IMAGE_TYPE_PLU_OBJ_NAME = "IMAGETYPES";
 
     //special searches
     private static final String ALERT = "EVENTS: severity=alert";
@@ -81,6 +85,10 @@
         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);
+        SAFE_SEARCH_EXPR.add(IMAGE_TYPE_OBJ_NAME.toLowerCase() + SEPERATOR);
+        SAFE_SEARCH_EXPR.add(IMAGE_TYPE_PLU_OBJ_NAME.toLowerCase() + 
SEPERATOR);
     }
 
     /**
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 e016a86..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
@@ -3,6 +3,7 @@
 import java.util.UUID;
 
 import org.ovirt.engine.core.common.businessentities.DateEnumForSearch;
+import org.ovirt.engine.core.common.businessentities.TemplateType;
 import org.ovirt.engine.core.common.businessentities.VmOsType;
 import org.ovirt.engine.core.common.businessentities.VmTemplateStatus;
 
@@ -19,6 +20,7 @@
         mVerbs.put("CLUSTER", "CLUSTER");
         mVerbs.put("DATACENTER", "DATACENTER");
         mVerbs.put("QUOTA", "QUOTA");
+        mVerbs.put("TYPE", "TYPE");
 
         buildCompletions();
         mVerbs.put("_VMT_ID", "_VMT_ID");
@@ -35,6 +37,7 @@
         getTypeDictionary().put("DATACENTER", String.class);
         getTypeDictionary().put("QUOTA", String.class);
         getTypeDictionary().put("_VMT_ID", UUID.class);
+        getTypeDictionary().put("TYPE", TemplateType.class);
 
         // building the ColumnName Dict
         columnNameDict.put("NAME", "name");
@@ -49,6 +52,7 @@
         columnNameDict.put("DATACENTER", "storage_pool_name");
         columnNameDict.put("QUOTA", "quota_name");
         columnNameDict.put("_VMT_ID", "vmt_guid");
+        columnNameDict.put("TYPE", "entity_type");
         // Building the validation dict
         buildBasicValidationTable();
     }
@@ -74,6 +78,8 @@
             return new EnumValueAutoCompleter(VmTemplateStatus.class);
         } else if ("QUOTA".equals(fieldName)) {
             return new NullableStringAutoCompleter();
+        } else if ("TYPE".equals(fieldName)) {
+            return new EnumValueAutoCompleter(TemplateType.class);
         }
         return null;
     }


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

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