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

Reply via email to