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 <[email protected]>
---
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 <[email protected]>
Gerrit-Reviewer: Moti Asayag <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches