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