Moti Asayag has uploaded a new change for review.

Change subject: engine: Introduce GetNetworkLabelsByDataCenterIdQuery
......................................................................

engine: Introduce GetNetworkLabelsByDataCenterIdQuery

The query returns all of the labels which are defined
in a specific data-center, either on networks or on
host nics.

Change-Id: I66a3f6b38c97d401ee4d7c59517b1e10ad8efb08
Signed-off-by: Moti Asayag <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkLabelsByDataCenterIdQuery.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
M packaging/dbscripts/network_sp.sql
6 files changed, 88 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/22869/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkLabelsByDataCenterIdQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkLabelsByDataCenterIdQuery.java
new file mode 100644
index 0000000..aa70e58
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/dc/GetNetworkLabelsByDataCenterIdQuery.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.core.bll.network.dc;
+
+import java.util.Set;
+
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.queries.IdQueryParameters;
+
+public class GetNetworkLabelsByDataCenterIdQuery<P extends IdQueryParameters> 
extends QueriesCommandBase<P> {
+    public GetNetworkLabelsByDataCenterIdQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        Set<String> labels = 
getDbFacade().getNetworkDao().getAllNetworkLabelsForDataCenter(getParameters().getId());
+        
labels.addAll(getDbFacade().getInterfaceDao().getAllNetworkLabelsForDataCenter(getParameters().getId()));
+        getQueryReturnValue().setReturnValue(labels);
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 126838f..f1da222 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -77,6 +77,7 @@
 
     // Network labels
     GetNetworkLabelsByNetworkId,
+    GetNetworkLabelsByDataCenterId,
 
     // VdsGroups
     GetVdsCertificateSubjectByVdsId(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
index a9b506d..850395d 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDao.java
@@ -2,6 +2,7 @@
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Set;
 
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkStatistics;
@@ -156,4 +157,22 @@
      * @return
      */
     List<VdsNetworkInterface> getAllInterfacesByLabelForCluster(Guid 
clusterId, String label);
+
+    /**
+     * Retrieves all network labels defined on networks in a specific 
data-center
+     *
+     * @param id
+     *            the data-center id
+     * @return all labels defined for the data-center's networks
+     */
+    Set<String> getAllNetworkLabelsForDataCenter(Guid id);
+
+    /**
+     * Retrieves all interfaces within a specific data-center
+     *
+     * @param dataCenterId
+     *            the data-center where the hosts reside in
+     * @return the interfaces of the given data-center
+     */
+    List<VdsNetworkInterface> getAllInterfacesByDataCenterId(Guid 
dataCenterId);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
index 8f6f638..e49aa10 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
@@ -6,6 +6,7 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.ovirt.engine.core.common.businessentities.network.Bond;
 import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
@@ -200,6 +201,26 @@
         return labelledNics;
     }
 
+    @Override
+    public List<VdsNetworkInterface> getAllInterfacesByDataCenterId(Guid 
dataCenterId) {
+        return getCallsHandler().executeReadList("GetInterfacesByDataCenterId",
+                vdsNetworkInterfaceRowMapper,
+                getCustomMapSqlParameterSource().addValue("data_center_id", 
dataCenterId));
+    }
+
+    @Override
+    public Set<String> getAllNetworkLabelsForDataCenter(Guid dataCenterId) {
+        Set<String> labels = new HashSet<>();
+        for (VdsNetworkInterface nic : 
getAllInterfacesByDataCenterId(dataCenterId)) {
+            if (nic.getLabels() != null) {
+                labels.addAll(nic.getLabels());
+            }
+        }
+
+        return labels;
+
+    }
+
     private static final RowMapper<VdsNetworkInterface> 
vdsNetworkInterfaceRowMapper =
             new RowMapper<VdsNetworkInterface>() {
                 @SuppressWarnings("unchecked")
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
index 75e178b..a4e90d3 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/network/InterfaceDaoTest.java
@@ -10,6 +10,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Set;
 
 import org.junit.Test;
 import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
@@ -335,4 +336,17 @@
             assertTrue(nic.getLabels().contains(LABEL));
         }
     }
+
+    @Test
+    public void getAllNetworkLabelsForDataCenter() {
+        List<VdsNetworkInterface> interfaces = 
dao.getAllInterfacesByDataCenterId(FixturesTool.DATA_CENTER);
+        assertNotNull(interfaces);
+        assertFalse(interfaces.isEmpty());
+    }
+
+    public void testGetAllNetworkLabelsForDataCenter() {
+        Set<String> result = 
dao.getAllNetworkLabelsForDataCenter(FixturesTool.DATA_CENTER);
+        assertNotNull(result);
+        assertFalse(result.isEmpty());
+    }
 }
diff --git a/packaging/dbscripts/network_sp.sql 
b/packaging/dbscripts/network_sp.sql
index 575c4c7..5775717 100644
--- a/packaging/dbscripts/network_sp.sql
+++ b/packaging/dbscripts/network_sp.sql
@@ -451,6 +451,20 @@
 LANGUAGE plpgsql;
 
 
+Create or replace FUNCTION GetInterfacesByDataCenterId(v_data_center_id UUID)
+RETURNS SETOF vds_interface_view STABLE
+   AS $procedure$
+BEGIN
+   RETURN QUERY SELECT vds_interface_view.*
+   FROM vds_interface_view
+   INNER JOIN vds_static
+   ON vds_interface_view.vds_id = vds_static.vds_id
+   INNER JOIN vds_groups
+   ON vds_static.vds_group_id = vds_groups.vds_group_id
+   WHERE vds_groups.storage_pool_id = v_data_center_id;
+END; $procedure$
+LANGUAGE plpgsql;
+
 ----------------------------------------------------------------
 -- [vm_interface] Table
 ----------------------------------------------------------------


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I66a3f6b38c97d401ee4d7c59517b1e10ad8efb08
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Moti Asayag <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to