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
