Hello Moti Asayag, I'd like you to do a code review. Please visit
http://gerrit.ovirt.org/8455 to review the following change. Change subject: engine: Add search for Networks ...................................................................... engine: Add search for Networks The patch adds support for Networks entities in search engine. Change-Id: I1fd9a483c5c8e3920d2f381132bf4d92d470fc57 Bug-Url: https://bugzilla.redhat.com/?????? Signed-off-by: Moti Asayag <masa...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/SearchQuery.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/interfaces/SearchType.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java M backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java A backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleter.java A backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkCrossRefAutoCompleter.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/SyntaxContainer.java A backend/manager/modules/searchbackend/src/test/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleterTest.java M frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java 16 files changed, 184 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/8455/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 4ff43cc..ecf630c 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 @@ -18,6 +18,7 @@ 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.Network; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; @@ -125,6 +126,10 @@ } case GlusterVolume: { returnValue = searchGlusterVolumes(); + break; + } + case Network: { + returnValue = searchNetworks(); break; } default: { @@ -258,6 +263,10 @@ return genericSearch(getDbFacade().getGlusterVolumeDao(), true, null); } + private List<Network> searchNetworks() { + return genericSearch(getDbFacade().getNetworkDao(), true, null); + } + private QueryData2 InitQueryData(boolean useCache) { QueryData2 data = null; boolean isExistsValue = false; diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java index 4bad5c3..283eb0c 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/SearchQueryTest.java @@ -14,6 +14,7 @@ import org.mockito.Matchers; import org.mockito.Mockito; import org.ovirt.engine.core.common.businessentities.Disk; +import org.ovirt.engine.core.common.businessentities.Network; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; @@ -26,6 +27,7 @@ import org.ovirt.engine.core.dal.dbbroker.DbEngineDialect; import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dao.DiskDao; +import org.ovirt.engine.core.dao.NetworkDAO; import org.ovirt.engine.core.dao.QuotaDAO; import org.ovirt.engine.core.dao.StoragePoolDAO; import org.ovirt.engine.core.dao.VdsDAO; @@ -52,6 +54,7 @@ List<VDSGroup> vdsGroupResultList = new ArrayList<VDSGroup>(); List<storage_pool> storagePoolResultList = new ArrayList<storage_pool>(); List<GlusterVolumeEntity> glusterVolumeList = new ArrayList<GlusterVolumeEntity>(); + List<Network> networkResultList = new ArrayList<Network>(); private DbFacade mockDAO() { final DiskDao diskDao = Mockito.mock(DiskDao.class); @@ -61,6 +64,7 @@ final VdsGroupDAO vdsGroupDAO = Mockito.mock(VdsGroupDAO.class); final StoragePoolDAO storagePoolDAO = Mockito.mock(StoragePoolDAO.class); final GlusterVolumeDao glusterVolumeDao = Mockito.mock(GlusterVolumeDao.class); + final NetworkDAO networkDao = Mockito.mock(NetworkDAO.class); final DbEngineDialect dbEngineDialect = Mockito.mock(DbEngineDialect.class); final DbFacade facadeMock = new DbFacade() { @Override @@ -102,6 +106,11 @@ public QuotaDAO getQuotaDao() { return quotaDAO; } + + @Override + public NetworkDAO getNetworkDao() { + return networkDao; + } }; Mockito.when(dbEngineDialect.getPreSearchQueryCommand()).thenReturn(""); @@ -114,6 +123,7 @@ mockVdsGroupDAO(vdsGroupDAO); mockStoragePoolDAO(storagePoolDAO); mockGlusterVolumeDao(glusterVolumeDao); + mockNetworkDao(networkDao); return facadeMock; } @@ -188,6 +198,12 @@ SearchObjectAutoCompleter search = new SearchObjectAutoCompleter(false); Mockito.when(glusterVolumeDao.getAllWithQuery(Matchers.matches(getGlusterVolumeRegexString(search)))) .thenReturn(glusterVolumeList); + } + + private void mockNetworkDao(final NetworkDAO networkDao) { + SearchObjectAutoCompleter search = new SearchObjectAutoCompleter(false); + Mockito.when(networkDao.getAllWithQuery(Matchers.matches(getNetworkRegexString(search)))) + .thenReturn(networkResultList); } /** @@ -284,6 +300,17 @@ return ".*" + search.getDefaultSort(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".*" + search.getRelatedTableNameWithOutTags(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".* " + search.getPrimeryKeyName(SearchObjects.GLUSTER_VOLUME_OBJ_NAME) + ".*"; + } + + /** + * Regex string which contains all of the Network properties. + * + * @param search + */ + private static String getNetworkRegexString(SearchObjectAutoCompleter search) { + return ".*" + search.getDefaultSort(SearchObjects.NETWORK_OBJ_NAME) + ".*" + + search.getRelatedTableNameWithOutTags(SearchObjects.NETWORK_OBJ_NAME) + ".* " + + search.getPrimeryKeyName(SearchObjects.NETWORK_OBJ_NAME) + ".*"; } private SearchQuery<SearchParameters> spySearchQuery(SearchParameters searchParam) { @@ -398,4 +425,12 @@ searchQuery.executeQueryCommand(); assertTrue(quotaResultList == searchQuery.getQueryReturnValue().getReturnValue()); } + + @Test + public void testGetAllNetworkSearch() throws Exception { + SearchParameters searchParam = new SearchParameters("Network:", SearchType.Network); + SearchQuery<SearchParameters> searchQuery = spySearchQuery(searchParam); + searchQuery.executeQueryCommand(); + assertTrue(networkResultList == searchQuery.getQueryReturnValue().getReturnValue()); + } } 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 07ce4de..79fcd3a 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 @@ -16,7 +16,8 @@ StorageDomain, Quota, Disk, - GlusterVolume; + GlusterVolume, + Network; public int getValue() { return this.ordinal(); diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java index 0b0fef3..ee206f0 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAO.java @@ -10,7 +10,7 @@ * * */ -public interface NetworkDAO extends GenericDao<Network, Guid> { +public interface NetworkDAO extends GenericDao<Network, Guid>, SearchDAO<Network> { /** * Retrieves the network with the specified name. * diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java index 46c45ce..13f5afe 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAODbFacadeImpl.java @@ -13,6 +13,7 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacadeUtils; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.simple.ParameterizedRowMapper; +import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; /** * <code>NetworkDAODbFacadeImpl</code> provides a concrete implementation of {@link #NetworkDAO} based on code @@ -71,6 +72,11 @@ } @Override + public List<Network> getAllWithQuery(String query) { + return new SimpleJdbcTemplate(jdbcTemplate).query(query, NetworkRowMapper.instance); + } + + @Override protected MapSqlParameterSource createIdParameterMapper(Guid id) { return getCustomMapSqlParameterSource().addValue("id", id); } diff --git a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java index fadec58..4b473d6 100644 --- a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java +++ b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/NetworkDAOHibernateImpl.java @@ -30,4 +30,9 @@ public List<Network> getAllForCluster(Guid id, Guid userID, boolean isFiltered) { throw new NotImplementedException(); } + + @Override + public List<Network> getAllWithQuery(String query) { + throw new NotImplementedException(); + } } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java index c65c939..1d63891 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/FixturesTool.java @@ -188,4 +188,9 @@ * ID of an existing snapshot */ protected static final Guid EXISTING_SNAPSHOT_ID = new Guid("a7bb24df-9fdf-4bd6-b7a9-f5ce52da0f89"); + + /** + * ID of an existing network + */ + protected static final Guid EXISTING_NETWORK_ID = new Guid("58d5c1c6-cb15-4832-b2a4-023770607188"); } diff --git a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java index 7e252ec..e395dca 100644 --- a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java +++ b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/NetworkDAOTest.java @@ -209,4 +209,16 @@ assertNull(result); } + + /** + * Test query + */ + @Test + public void testGetAllWithQuery() { + List<Network> result = + dao.getAllWithQuery(String.format("SELECT * FROM network WHERE id = '%s'", + FixturesTool.EXISTING_NETWORK_ID)); + + assertEquals(FixturesTool.EXISTING_NETWORK_ID, result.get(0).getId()); + } } diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleter.java new file mode 100644 index 0000000..15c9aa5 --- /dev/null +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleter.java @@ -0,0 +1,63 @@ +package org.ovirt.engine.core.searchbackend; + +import org.ovirt.engine.core.compat.StringHelper; + +public class NetworkConditionFieldAutoCompleter extends BaseConditionFieldAutoCompleter { + private static final String NAME = "NAME"; + private static final String DESCRIPTION = "DESCRIPTION"; + private static final String VLAN_ID = "VLANID"; + private static final String STP = "STP"; + private static final String MTU = "MTU"; + private static final String VM_NETWORK = "VMNETWORK"; + + public NetworkConditionFieldAutoCompleter() { + // Building the basic verbs dict. + mVerbs.put(NAME, NAME); + mVerbs.put(DESCRIPTION, DESCRIPTION); + mVerbs.put(VLAN_ID, VLAN_ID); + mVerbs.put(STP, STP); + mVerbs.put(MTU, MTU); + mVerbs.put(VM_NETWORK, VM_NETWORK); + + // Building the autoCompletion dict. + buildCompletions(); + + // Building the types dict. + getTypeDictionary().put(NAME, String.class); + getTypeDictionary().put(DESCRIPTION, String.class); + getTypeDictionary().put(VLAN_ID, String.class); + getTypeDictionary().put(STP, Boolean.class); + getTypeDictionary().put(MTU, Integer.class); + getTypeDictionary().put(VM_NETWORK, Boolean.class); + + // building the ColumnName dict. + mColumnNameDict.put(NAME, "name"); + mColumnNameDict.put(DESCRIPTION, "description"); + mColumnNameDict.put(VLAN_ID, "vlan_id"); + mColumnNameDict.put(STP, "stp"); + mColumnNameDict.put(MTU, "mtu"); + mColumnNameDict.put(VM_NETWORK, "vm_network"); + + // Building the validation dict. + buildBasicValidationTable(); + } + + @Override + public IAutoCompleter getFieldRelationshipAutoCompleter(final String fieldName) { + final Class<?> clazz = getTypeDictionary().get(fieldName); + if (clazz == Integer.class) { + return NumericConditionRelationAutoCompleter.INSTANCE; + } + return StringConditionRelationAutoCompleter.INSTANCE; + } + + @Override + public IConditionValueAutoCompleter getFieldValueAutoCompleter(String fieldName) { + IConditionValueAutoCompleter completer = null; + if (StringHelper.EqOp(fieldName, STP) || StringHelper.EqOp(fieldName, VM_NETWORK)) { + completer = new BitValueAutoCompleter(); + } + return completer; + } + +} diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkCrossRefAutoCompleter.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkCrossRefAutoCompleter.java new file mode 100644 index 0000000..6647ae9 --- /dev/null +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/NetworkCrossRefAutoCompleter.java @@ -0,0 +1,8 @@ +package org.ovirt.engine.core.searchbackend; + +public class NetworkCrossRefAutoCompleter extends SearchObjectsBaseAutoCompleter { + public NetworkCrossRefAutoCompleter() { + mVerbs.put(SearchObjects.VDC_STORAGE_POOL_OBJ_NAME, SearchObjects.VDC_STORAGE_POOL_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..c9c0bb8 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 @@ -27,6 +27,7 @@ mVerbs.put(SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME, SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME); 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); buildCompletions(); mVerbs.put(SearchObjects.VM_OBJ_NAME, SearchObjects.VM_OBJ_NAME); @@ -40,6 +41,7 @@ mVerbs.put(SearchObjects.VDC_USER_OBJ_NAME, SearchObjects.VDC_USER_OBJ_NAME); 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); // vms - vds addJoin(SearchObjects.VM_OBJ_NAME, "run_on_vds", SearchObjects.VDS_OBJ_NAME, "vds_id"); @@ -94,6 +96,9 @@ // audit - gluster volume addJoin(SearchObjects.GLUSTER_VOLUME_OBJ_NAME, "id", SearchObjects.AUDIT_OBJ_NAME, "gluster_volume_id"); + + // network + addJoin(SearchObjects.VDC_STORAGE_POOL_OBJ_NAME, "id", SearchObjects.NETWORK_OBJ_NAME, "storage_pool_id"); } private void addJoin(String firstObj, String firstColumnName, String secondObj, String secondColumnName) { @@ -203,6 +208,12 @@ "vm_pools_full_view", "vm_pool_id", "vm_pool_name ASC ")); + put(SearchObjects.NETWORK_OBJ_NAME, new EntitySearchInfo(new NetworkCrossRefAutoCompleter(), + new NetworkConditionFieldAutoCompleter(), + "network", + "network", + "id", + "name ASC")); } }); @@ -224,6 +235,7 @@ put(SearchObjects.GLUSTER_VOLUME_PLU_OBJ_NAME, SearchObjects.GLUSTER_VOLUME_OBJ_NAME); put(SearchObjects.VDC_POOL_PLU_OBJ_NAME, SearchObjects.VDC_POOL_OBJ_NAME); put(SearchObjects.VDC_STORAGE_DOMAIN_PLU_OBJ_NAME, SearchObjects.VDC_STORAGE_DOMAIN_OBJ_NAME); + put(SearchObjects.NETWORK_PLU_OBJ_NAME, SearchObjects.NETWORK_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 f33d39e..1304795 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 @@ -31,6 +31,8 @@ public static final String GLUSTER_VOLUME_PLU_OBJ_NAME = "VOLUMES"; public static final String QUOTA_OBJ_NAME = "QUOTA"; public static final String QUOTA_PLU_OBJ_NAME = "QUOTAS"; + public static final String NETWORK_OBJ_NAME = "NETWORK"; + public static final String NETWORK_PLU_OBJ_NAME = "NETWORKS"; //special searches private static final String ALERT = "EVENTS: severity=alert"; @@ -66,6 +68,8 @@ SAFE_SEARCH_EXPR.add(GLUSTER_VOLUME_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(QUOTA_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(QUOTA_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); + SAFE_SEARCH_EXPR.add(NETWORK_OBJ_NAME.toLowerCase() + SEPERATOR); + SAFE_SEARCH_EXPR.add(NETWORK_PLU_OBJ_NAME.toLowerCase() + SEPERATOR); SAFE_SEARCH_EXPR.add(ALERT.toLowerCase()); SAFE_SEARCH_EXPR.add(ERROR.toLowerCase()); SAFE_SEARCH_EXPR.add(HOST_BY_CPU.toLowerCase()); 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..c0f8964 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 @@ -213,6 +213,10 @@ else if (StringHelper.EqOp(obj, SearchObjects.GLUSTER_VOLUME_OBJ_NAME) || StringHelper.EqOp(obj, SearchObjects.GLUSTER_VOLUME_PLU_OBJ_NAME)) { retval = SearchObjects.GLUSTER_VOLUME_OBJ_NAME; + } + else if (StringHelper.EqOp(obj, SearchObjects.NETWORK_OBJ_NAME) + || StringHelper.EqOp(obj, SearchObjects.NETWORK_PLU_OBJ_NAME)) { + retval = SearchObjects.NETWORK_OBJ_NAME; } else { retval = obj; diff --git a/backend/manager/modules/searchbackend/src/test/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleterTest.java b/backend/manager/modules/searchbackend/src/test/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleterTest.java new file mode 100644 index 0000000..2b6e858 --- /dev/null +++ b/backend/manager/modules/searchbackend/src/test/java/org/ovirt/engine/core/searchbackend/NetworkConditionFieldAutoCompleterTest.java @@ -0,0 +1,11 @@ +package org.ovirt.engine.core.searchbackend; + +import junit.framework.TestCase; + +public class NetworkConditionFieldAutoCompleterTest extends TestCase { + + public void testValidateFieldValueWithEnum() { + IConditionFieldAutoCompleter comp = new NetworkConditionFieldAutoCompleter(); + assertTrue(comp.validateFieldValue("NAME", "ABC")); + } +} diff --git a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml index d01027d..022d561 100644 --- a/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml +++ b/frontend/webadmin/modules/gwt-common/src/main/resources/org/ovirt/engine/core/SearchBackend.gwt.xml @@ -64,6 +64,8 @@ <include name="searchbackend/gluster/GlusterVolumeConditionFieldAutoCompleter.java" /> <include name="searchbackend/gluster/GlusterVolumeCrossRefAutoCompleter.java" /> <include name="searchbackend/QuotaConditionFieldAutoCompleter.java" /> + <include name="searchbackend/NetworkConditionFieldAutoCompleter.java" /> + <include name="searchbackend/NetworkCrossRefAutoCompleter.java" /> </source> <super-source path="ui/uioverrides" /> diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java index 339c825..306e5ca 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/DataProvider.java @@ -22,6 +22,7 @@ import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import org.ovirt.engine.core.common.businessentities.Network; import org.ovirt.engine.core.common.businessentities.Quota; +import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.RoleType; import org.ovirt.engine.core.common.businessentities.ServerCpu; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; @@ -46,7 +47,6 @@ import org.ovirt.engine.core.common.businessentities.bookmarks; import org.ovirt.engine.core.common.businessentities.event_subscriber; import org.ovirt.engine.core.common.businessentities.permissions; -import org.ovirt.engine.core.common.businessentities.Role; import org.ovirt.engine.core.common.businessentities.storage_domains; import org.ovirt.engine.core.common.businessentities.storage_pool; import org.ovirt.engine.core.common.businessentities.storage_server_connections; @@ -2471,6 +2471,10 @@ { return ((GlusterVolumeEntity) entity).getId(); } + else if (entity instanceof Network) + { + return ((Network) entity).getId(); + } return new Guid(); } -- To view, visit http://gerrit.ovirt.org/8455 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1fd9a483c5c8e3920d2f381132bf4d92d470fc57 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alona Kaplan <alkap...@redhat.com> Gerrit-Reviewer: Moti Asayag <masa...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches