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

Reply via email to