Moti Asayag has uploaded a new change for review. Change subject: engine: Add query to retrieve host's bonds ......................................................................
engine: Add query to retrieve host's bonds The query returns the bonds of a given hosts, where each bond contains a list of its slaves' names. Change-Id: I41a632340312bc484c8e33699353b075aa45b1a4 Signed-off-by: Moti Asayag <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetHostBondsByHostIdQuery.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java 2 files changed, 54 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/35378/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetHostBondsByHostIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetHostBondsByHostIdQuery.java new file mode 100644 index 0000000..32e0065 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetHostBondsByHostIdQuery.java @@ -0,0 +1,53 @@ +package org.ovirt.engine.core.bll.network.host; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.businessentities.network.Bond; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.common.queries.IdQueryParameters; + +public class GetHostBondsByHostIdQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { + public GetHostBondsByHostIdQuery(P parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + List<VdsNetworkInterface> nics = + getDbFacade().getInterfaceDao().getAllInterfacesForVds(getParameters().getId()); + Map<String, List<String>> bondsToSlaves = getBondBySlaves(nics); + List<Bond> bonds = new ArrayList<>(); + for (final VdsNetworkInterface nic : nics) { + if (Boolean.TRUE.equals(nic.getBonded())) { + Bond bond = new Bond(nic.getName()); + bond.setId(nic.getId()); + bond.setBondOptions(nic.getBondOptions()); + bond.getSlaves().addAll(bondsToSlaves.get(bond)); + bonds.add(bond); + } + } + + getQueryReturnValue().setReturnValue(bonds); + } + + private Map<String, List<String>> getBondBySlaves(List<VdsNetworkInterface> nics) { + Map<String, List<String>> bondToSlaves = new HashMap<>(); + for (VdsNetworkInterface nic : nics) { + if (Boolean.TRUE.equals(nic.getBonded()) && !bondToSlaves.containsKey(nic.getName())) { + bondToSlaves.put(nic.getName(), new ArrayList<String>()); + } else if (nic.isBondSlave()) { + if (!bondToSlaves.containsKey(nic.getBondName())) { + bondToSlaves.put(nic.getBondName(), new ArrayList<String>()); + } + + bondToSlaves.get((nic.getBondName())).add(nic.getName()); + } + } + + return bondToSlaves; + } +} 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 59c75bb..a1f0c48 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 @@ -60,6 +60,7 @@ // Vds Networks GetVdsInterfacesByVdsId(VdcQueryAuthType.User), + GetHostBondsByHostId, GetVdsFreeBondsByVdsId, GetAllNetworks(VdcQueryAuthType.User), GetAllNetworksByClusterId(VdcQueryAuthType.User), -- To view, visit http://gerrit.ovirt.org/35378 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I41a632340312bc484c8e33699353b075aa45b1a4 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
