summaryrefslogtreecommitdiffstats
path: root/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java')
-rw-r--r--v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java77
1 files changed, 39 insertions, 38 deletions
diff --git a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java
index 71d4bea4b..6e2ba6e52 100644
--- a/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java
+++ b/v3po/impl/src/main/java/io/fd/honeycomb/v3po/impl/VppPollOperDataImpl.java
@@ -16,11 +16,10 @@
package io.fd.honeycomb.v3po.impl;
-import java.util.HashMap;
-import java.util.concurrent.Future;
-
import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
+import java.util.HashMap;
+import java.util.concurrent.Future;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -32,6 +31,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.v3po.rev
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.openvpp.vppjapi.vppApi;
import org.openvpp.vppjapi.vppBridgeDomainDetails;
import org.openvpp.vppjapi.vppBridgeDomainInterfaceDetails;
import org.openvpp.vppjapi.vppL2Fib;
@@ -42,14 +42,17 @@ import org.slf4j.LoggerFactory;
public class VppPollOperDataImpl implements V3poService {
private static final Logger LOG = LoggerFactory.getLogger(VppPollOperDataImpl.class);
private vppVersion version;
- private DataBroker db;
+ private final DataBroker db;
private int[] bdIds;
- private HashMap<Integer, vppL2Fib[]> l2fibByBdId = new HashMap<Integer, vppL2Fib[]>();
+ private final HashMap<Integer, vppL2Fib[]> l2fibByBdId = new HashMap<Integer, vppL2Fib[]>();
+ private final vppApi api;
/**
* TODO-ADD-JAVADOC.
+ * @param api
*/
- public VppPollOperDataImpl(DataBroker dataBroker) {
+ public VppPollOperDataImpl(final vppApi api, final DataBroker dataBroker) {
+ this.api = api;
db = dataBroker;
}
@@ -66,79 +69,77 @@ public class VppPollOperDataImpl implements V3poService {
* interfaces names
*/
public String updateOperational() {
- V3poApiRequest api = new V3poApiRequest(this);
+ V3poApiRequest req = new V3poApiRequest(api, this);
version = api.getVppVersion();
-
+
bdIds = api.bridgeDomainDump(-1);
-
+
// TODO: we don't need to cache BDs now that we got rid of callbacks
l2fibByBdId.clear();
if (bdIds != null) {
- for (int idx = 0; idx < bdIds.length; idx++) {
- l2fibByBdId.put(bdIds[idx], api.l2FibTableDump(bdIds[idx]));
+ for (int bdId : bdIds) {
+ l2fibByBdId.put(bdId, api.l2FibTableDump(bdId));
}
}
- api.swInterfaceDumpAll();
-
+ req.swInterfaceDumpAll();
+
// build vpp-state
VppStateCustomBuilder stateBuilder = new VppStateCustomBuilder();
-
+
// bridge domains
- for (int i = 0; i < bdIds.length; i++) {
- vppBridgeDomainDetails bd = api.getBridgeDomainDetails(bdIds[i]);
- VppStateBridgeDomainBuilder bdBuilder =
+ for (int bdId : bdIds) {
+ vppBridgeDomainDetails bd = api.getBridgeDomainDetails(bdId);
+ VppStateBridgeDomainBuilder bdBuilder =
new VppStateBridgeDomainBuilder(
- bd.name, bd.flood, bd.uuFlood,
+ bd.name, bd.flood, bd.uuFlood,
bd.arpTerm, bd.forward, bd.learn);
-
- for (int ifIdx = 0; ifIdx < bd.interfaces.length; ifIdx++) {
- vppBridgeDomainInterfaceDetails bdIf = bd.interfaces[ifIdx];
- bdBuilder.addInterface(bdIf.interfaceName,
- bd.bviInterfaceName == bdIf.interfaceName,
+
+ for (vppBridgeDomainInterfaceDetails bdIf : bd.interfaces) {
+ bdBuilder.addInterface(bdIf.interfaceName,
+ bd.bviInterfaceName == bdIf.interfaceName,
bdIf.splitHorizonGroup);
}
-
- vppL2Fib[] bdFibs = l2fibByBdId.get(bdIds[i]);
- for (int fibIdx = 0; fibIdx < bdFibs.length; fibIdx++) {
- vppL2Fib fib = bdFibs[fibIdx];
+ vppL2Fib[] bdFibs = l2fibByBdId.get(bdId);
+
+ for (vppL2Fib fib : bdFibs) {
bdBuilder.addL2Fib(fib.filter, fib.bridgedVirtualInterface,
fib.outgoingInterface, fib.physAddress,
fib.staticConfig);
}
-
+
stateBuilder.addBridgeDomain(bdBuilder.build());
}
-
+
stateBuilder.setVersion(version);
-
+
// write to oper
writeVppState(getVppStateIid(), stateBuilder.build());
-
- return api.ifNames;
+
+ return req.ifNames;
}
-
+
@Override
public Future<RpcResult<VppPollOperDataOutput>> vppPollOperData() {
String ifNames = updateOperational();
-
+
VppPollOperDataOutput output = new VppPollOperDataOutputBuilder()
.setStatus(new Long(1)).build();
return RpcResultBuilder.success(output).buildFuture();
}
-
+
private InstanceIdentifier<VppState> getVppStateIid() {
return (InstanceIdentifier.create(VppState.class));
}
-
- private void writeVppState(InstanceIdentifier<VppState> iid, VppState vppState) {
+
+ private void writeVppState(final InstanceIdentifier<VppState> iid, final VppState vppState) {
WriteTransaction transaction = db.newWriteOnlyTransaction();
//LOG.info("VPPOPER-INFO: Writing vpp-state to oper DataStore.");
transaction.put(LogicalDatastoreType.OPERATIONAL, iid, vppState);
-
+
CheckedFuture<Void, TransactionCommitFailedException> future = transaction.submit();
Futures.addCallback(future, new LoggingFuturesCallBack<Void>(
"VPPOPER-WARNING: Failed to write vpp-state to oper datastore", LOG));