<propertyExpansion>checkstyle.violationSeverity=error</propertyExpansion>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>findbugs-maven-plugin</artifactId>
+ <configuration>
+ <failOnError>true</failOnError>
+ </configuration>
+ </plugin>
<plugin>
<groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
public abstract class SfcOfAbstractDataListener<T extends DataObject> implements DataTreeChangeListener<T> {
- private DataBroker dataBroker;
- private InstanceIdentifier<T> instanceIdentifier;
private ListenerRegistration<SfcOfAbstractDataListener<T>> dataChangeListenerRegistration;
- public void setDataBroker(DataBroker dataBroker) {
- this.dataBroker = dataBroker;
- }
-
- public void setIID(InstanceIdentifier<T> instanceIdentifier) {
- this.instanceIdentifier = instanceIdentifier;
- }
-
- public DataBroker getDataBroker() {
- return dataBroker;
- }
-
- public void registerAsDataChangeListener(LogicalDatastoreType datastoreType) {
+ public void registerAsDataChangeListener(DataBroker dataBroker, LogicalDatastoreType datastoreType,
+ InstanceIdentifier<T> instanceIdentifier) {
dataChangeListenerRegistration = dataBroker.registerDataTreeChangeListener(new DataTreeIdentifier<>(
datastoreType, instanceIdentifier), this);
}
- public void registerAsDataChangeListener() {
- registerAsDataChangeListener(LogicalDatastoreType.CONFIGURATION);
- }
-
public void closeDataChangeListener() {
- dataChangeListenerRegistration.close();
+ if (dataChangeListenerRegistration != null) {
+ dataChangeListenerRegistration.close();
+ }
}
}
public SfcOfRendererDataListener(DataBroker dataBroker, SfcOfFlowProgrammerInterface sfcOfFlowProgrammer,
SfcSynchronizer sfcSynchronizer) {
- setDataBroker(dataBroker);
- setIID(InstanceIdentifier.builder(SfcOfRendererConfig.class).build());
- registerAsDataChangeListener(LogicalDatastoreType.CONFIGURATION);
+ registerAsDataChangeListener(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ InstanceIdentifier.builder(SfcOfRendererConfig.class).build());
this.sfcOfFlowProgrammer = sfcOfFlowProgrammer;
this.sfcSynchronizer = sfcSynchronizer;
threadExecutor = Executors.newSingleThreadExecutor();
UpdateOpenFlowTableOffsets updateThread = new UpdateOpenFlowTableOffsets(config.getSfcOfTableOffset(),
config.getSfcOfAppEgressTableOffset());
- threadExecutor.submit(updateThread);
+ threadExecutor.execute(updateThread);
}
/**
return new TableId((short) (tableOffset + maxTable));
} catch (IllegalArgumentException e) {
LOG.error("SfcOfRendererDataListener::verifyMaxTableId invalid table offset [{}] maxTable [{}]",
- tableOffset, maxTable);
+ tableOffset, maxTable, e);
return null;
}
}
this.sfcOfFlowProgrammer = sfcOfFlowProgrammer;
this.sfcOfProviderUtils = sfcOfProviderUtils;
- setDataBroker(dataBroker);
- setIID(SfcInstanceIdentifiers.SFG_ENTRY_IID);
- registerAsDataChangeListener(LogicalDatastoreType.CONFIGURATION);
+ registerAsDataChangeListener(dataBroker, LogicalDatastoreType.CONFIGURATION,
+ SfcInstanceIdentifiers.SFG_ENTRY_IID);
}
@Override
import java.net.UnknownHostException;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
-import java.util.Set;
+import java.util.Map.Entry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata;
// Configure the uplink packet
if (ulPathId >= 0) {
- this.flowProgrammer.setFlowRspId(new Long(ulPathId));
+ this.flowProgrammer.setFlowRspId(Long.valueOf(ulPathId));
this.flowProgrammer.configurePathMapperAclFlow(nodeName, pktSrcIpStr, pktDstIpStr, ulPathId);
}
// Configure the downlink packet
if (dlPathId >= 0) {
- this.flowProgrammer.setFlowRspId(new Long(dlPathId));
+ this.flowProgrammer.setFlowRspId(Long.valueOf(dlPathId));
this.flowProgrammer.configurePathMapperAclFlow(nodeName, pktDstIpStr, pktSrcIpStr, dlPathId);
}
}
*/
private void purgePktInBuffer() {
long currentMillis = System.currentTimeMillis();
- Set<String> keySet = pktInBuffer.keySet();
- for (String key : keySet) {
- Long bufferedTime = pktInBuffer.get(key);
+ Iterator<Entry<String, Long>> iter = pktInBuffer.entrySet().iterator();
+ while (iter.hasNext()) {
+ Entry<String, Long> entry = iter.next();
+ Long bufferedTime = entry.getValue();
if (currentMillis - bufferedTime.longValue() > maxBufferTime) {
// This also removes the entry from the pktInBuffer map and
// doesnt invalidate iteration
- keySet.remove(key);
+ iter.remove();
}
}
}
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
+import java.util.Locale;
import java.util.Optional;
import java.util.Set;
import java.util.StringJoiner;
return false;
}
- return cookie.toString().toUpperCase().startsWith(TRANSPORT_EGRESS_COOKIE_STR_BASE);
+ return cookie.toString().toUpperCase(Locale.getDefault()).startsWith(TRANSPORT_EGRESS_COOKIE_STR_BASE);
}
//
// Action output
List<Action> actionList = new ArrayList<>();
String outPortStr = OUTPUT_STRING + outPort.toString();
- actionList.add(SfcOpenflowUtils.createActionOutPort(outPortStr, order++));
+ actionList.add(SfcOpenflowUtils.createActionOutPort(outPortStr, order));
InstructionsBuilder isb = SfcOpenflowUtils.wrapActionsIntoApplyActionsInstruction(actionList);
// Action NORMAL
List<Action> actionList = new ArrayList<>();
- actionList.add(SfcOpenflowUtils.createActionNormal(order++));
+ actionList.add(SfcOpenflowUtils.createActionNormal(order));
InstructionsBuilder isb = SfcOpenflowUtils.wrapActionsIntoApplyActionsInstruction(actionList);
// Create and configure the FlowBuilder
return SfcOpenflowUtils.createFlowBuilder(getTableId(TABLE_INDEX_TRANSPORT_INGRESS),
- FLOW_PRIORITY_TRANSPORT_INGRESS, flowName.toString(), match, isb);
+ FLOW_PRIORITY_TRANSPORT_INGRESS, flowName, match, isb);
}
/**
package org.opendaylight.sfc.ofrenderer.processors;
import java.util.Iterator;
-
import org.opendaylight.sfc.util.macchaining.SfcModelUtil;
import org.opendaylight.sfc.util.macchaining.VirtualMacAddress;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.function.base.SfDataPlaneLocator;
VirtualMacAddress hopMac = VirtualMacAddress.getForwardAddress(entry.getPathId(), 0);
String vmac = hopMac.getHop(entry.getServiceIndex()).getValue();
- String dstSfMac = sfcProviderUtils.getSfDplMac(dstSfDpl);
+ String dstSfMac = dstSfDpl == null ? null : sfcProviderUtils.getSfDplMac(dstSfDpl);
String nextVMac = hopMac.getHop((short)(entry.getServiceIndex() - 1)).getValue();
boolean isL2Transparent = false;
String dstMac = sfcProviderUtils.getSfDplMac(dstSfDpl);
- LOG.info("SFFNodeName {}", sffNodeName.toString());
+ LOG.info("SFFNodeName {}", sffNodeName);
this.sfcFlowProgrammer.configureMacChainingSfTransportEgressFlow(sffNodeName, dstMac, srcOfsPortStr, null);
}
VirtualMacAddress hopMac = VirtualMacAddress.getForwardAddress(entry.getPathId(), 0);
String vmac = hopMac.getHop(entry.getServiceIndex()).getValue();
- LOG.info("SFFNodeName {}", sffNodeName.toString());
+ LOG.info("SFFNodeName {}", sffNodeName);
this.sfcFlowProgrammer.configureMacChainingSfTransportEgressFlow(sffNodeName, dstMac, srcOfsPortStr, vmac);
}
package org.opendaylight.sfc.ofrenderer.processors;
import java.util.Iterator;
-
+import java.util.concurrent.atomic.AtomicLong;
import org.opendaylight.sfc.ofrenderer.processors.SffGraph.SffGraphEntry;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.function.base.SfDataPlaneLocator;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction;
public class SfcRspProcessorMpls extends SfcRspTransportProcessorBase {
private static final int MPLS_LABEL_INCR_HOP = 1;
private static final int MPLS_LABEL_INCR_RSP = 100;
- private static int lastMplsLabel;
+ private static final AtomicLong LAST_MPLS_LABEL = new AtomicLong(0);
/**
* Set the RSP path egress DPL and SFF Hop Ingress DPLs for the VLAN
@Override
public void setRspTransports() {
int hopIncrement = MPLS_LABEL_INCR_HOP;
- int transportData = lastMplsLabel + MPLS_LABEL_INCR_RSP;
- lastMplsLabel = transportData;
+ long transportData = LAST_MPLS_LABEL.addAndGet(MPLS_LABEL_INCR_RSP);
Iterator<SffGraph.SffGraphEntry> sffGraphIter = sffGraph.getGraphEntryIterator();
while (sffGraphIter.hasNext()) {
DataPlaneLocatorBuilder dpl = new DataPlaneLocatorBuilder();
dpl.setTransport(rsp.getTransportType());
MplsBuilder mplsBuilder = new MplsBuilder();
- mplsBuilder.setMplsLabel((long) transportData);
+ mplsBuilder.setMplsLabel(transportData);
dpl.setLocatorType(mplsBuilder.build());
if (entry.getDstSff().equals(SffGraph.EGRESS)) {
package org.opendaylight.sfc.ofrenderer.processors;
import java.util.Iterator;
-
+import java.util.concurrent.atomic.AtomicInteger;
import org.opendaylight.sfc.ofrenderer.processors.SffGraph.SffGraphEntry;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.function.base.SfDataPlaneLocator;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sf.rev140701.service.functions.ServiceFunction;
public class SfcRspProcessorVlan extends SfcRspTransportProcessorBase {
private static final int VLAN_ID_INCR_HOP = 1;
private static final int VLAN_ID_INCR_RSP = 100;
- private static int lastVlanId = 0;
+ private static final AtomicInteger LAST_VLAN_ID = new AtomicInteger(0);
/**
* Set the RSP path egress DPL and SFF Hop Ingress DPLs for the VLAN
@Override
public void setRspTransports() {
int hopIncrement = VLAN_ID_INCR_HOP;
- int transportData = lastVlanId + VLAN_ID_INCR_RSP;
- lastVlanId = transportData;
+ int transportData = LAST_VLAN_ID.addAndGet(VLAN_ID_INCR_RSP);
Iterator<SffGraph.SffGraphEntry> sffGraphIter = sffGraph.getGraphEntryIterator();
while (sffGraphIter.hasNext()) {
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Optional;
-
import org.opendaylight.sfc.genius.util.appcoexistence.SfcTableIndexMapper;
import org.opendaylight.sfc.ofrenderer.openflow.SfcOfFlowProgrammerInterface;
import org.opendaylight.sfc.ofrenderer.utils.SfcOfBaseProviderUtils;
// may be null if its EGRESS
ServiceFunctionForwarder dstSff = sfcProviderUtils.getServiceFunctionForwarder(entry.getDstSff(),
entry.getPathId());
- if (dstSff != null) {
- // Set the SFF-SFF Hop DPL
- if (!setSffHopDataPlaneLocators(srcSff, dstSff)) {
- throw new SfcRenderingException("Unable to get SFF HOP DPLs srcSff [" + entry.getSrcSff()
- + "] dstSff [" + entry.getDstSff() + "] transport [" + rsp.getTransportType() + "] pathId ["
- + entry.getPathId() + "]");
- }
+
+ // Set the SFF-SFF Hop DPL
+ if (dstSff != null && !setSffHopDataPlaneLocators(srcSff, dstSff)) {
+ throw new SfcRenderingException("Unable to get SFF HOP DPLs srcSff [" + entry.getSrcSff()
+ + "] dstSff [" + entry.getDstSff() + "] transport [" + rsp.getTransportType() + "] pathId ["
+ + entry.getPathId() + "]");
}
if (entry.getDstSff().equals(SffGraph.EGRESS)) {
if (lhs.getImplementedInterface() != rhs.getImplementedInterface()) {
return false;
}
- String type = lhs.getImplementedInterface().getSimpleName().toLowerCase();
+ String type = lhs.getImplementedInterface().getSimpleName().toLowerCase(Locale.getDefault());
switch (type) {
case IP:
- if (((Ip) lhs).getPort().getValue().intValue() == ((Ip) rhs).getPort().getValue().intValue()) {
- if (((Ip) lhs).getIp().toString().equals(((Ip) rhs).getIp().toString())) {
- return true;
- }
- }
- break;
+ return ((Ip) lhs).getPort().getValue().intValue() == ((Ip) rhs).getPort().getValue().intValue()
+ && ((Ip) lhs).getIp().toString().equals(((Ip) rhs).getIp().toString());
case MAC:
- if (((Mac) lhs).getVlanId() != null && ((Mac) rhs).getVlanId() != null) {
- if (((Mac) lhs).getVlanId().intValue() == ((Mac) rhs).getVlanId().intValue()) {
- return true;
- }
- }
- break;
+ return ((Mac) lhs).getVlanId() != null && ((Mac) rhs).getVlanId() != null
+ && ((Mac) lhs).getVlanId().intValue() == ((Mac) rhs).getVlanId().intValue();
case MPLS:
- if (((Mpls) lhs).getMplsLabel().longValue() == ((Mpls) rhs).getMplsLabel().longValue()) {
- return true;
- }
- break;
-
+ return ((Mpls) lhs).getMplsLabel().longValue() == ((Mpls) rhs).getMplsLabel().longValue();
case FUNCTION:
case LISP:
default:
import java.util.List;
import java.util.Map;
import java.util.Set;
-
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffDataPlaneLocatorName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName;
/**
* Internal class to hold each SffGraph entry.
*/
- public class SffGraphEntry {
+ public static class SffGraphEntry {
private final SffName srcSff;
private final SffName dstSff;
@Override
public String toString() {
- StringBuffer returnValue = new StringBuffer(
- "SffGraphEntry [srcSff=" + srcSff + ", dstSff=" + dstSff + ", sf=" + sf + ", prevSf=" + prevSf
- + ", sfg=" + sfg + ", pathId=" + pathId + ", serviceIndex=" + serviceIndex);
+ String str = "SffGraphEntry [srcSff=" + srcSff + ", dstSff=" + dstSff + ", sf=" + sf + ", prevSf=" + prevSf
+ + ", sfg=" + sfg + ", pathId=" + pathId + ", serviceIndex=" + serviceIndex;
if (getSrcDpnId() != null || getDstDpnId() != null) {
- returnValue.append(
- ", Logical SFF params: src dpnid [" + getSrcDpnId() + "], dst dpnid [" + getDstDpnId() + "]");
+ str += ", Logical SFF params: src dpnid [" + getSrcDpnId() + "], dst dpnid [" + getDstDpnId() + "]";
}
- returnValue.append("]");
- return returnValue.toString();
+
+ str += "]";
+ return str;
}
public DpnIdType getDstDpnId() {
* Internal class to hold the ingress and egress DPLs for an SFF for a
* particular pathId.
*/
- public class SffDataPlaneLocators {
+ public static class SffDataPlaneLocators {
private final SffName sffName;
private final long pathId;
Set<Long> dplKeys = this.getSffDplKeys();
for (Long key : dplKeys) {
Map<SffName, SffDataPlaneLocators> sffDpls = this.getSffDplsForPath(key);
- Set<SffName> sffDplKeys = sffDpls.keySet();
- for (SffName sffDplKey : sffDplKeys) {
- SffDataPlaneLocators sffDpl = sffDpls.get(sffDplKey);
+ for (SffDataPlaneLocators sffDpl: sffDpls.values()) {
// TODO need to get the locator details for any/all transport
LOG.info(
"SFF [{}] pathId [{}] IngressDpl [{}] EgressDpl [{}] IngressHopDpl Transport [{}] Vlan ID [{}]",
package org.opendaylight.sfc.ofrenderer.utils;
import java.util.List;
-
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SfName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffDataPlaneLocatorName;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName;
List<SffDataPlaneLocator> sffDataPlanelocatorList = sff.getSffDataPlaneLocator();
for (SffDataPlaneLocator sffDataPlanelocator : sffDataPlanelocatorList) {
- if (sffDataPlanelocator.getName() != null) {
- if (sffDataPlanelocator.getName().getValue().equals(dplName.getValue())) {
- sffDpl = sffDataPlanelocator;
- break;
- }
+ if (sffDataPlanelocator.getName() != null
+ && sffDataPlanelocator.getName().getValue().equals(dplName.getValue())) {
+ sffDpl = sffDataPlanelocator;
+ break;
}
}
Class<? extends DataContainer> implementedInterface = sffLocatorType.getImplementedInterface();
// Mac/IP and possibly VLAN
- if (implementedInterface.equals(Mac.class)) {
- if (((MacAddressLocator) sffLocatorType).getMac() != null) {
- sfMac = ((MacAddressLocator) sffLocatorType).getMac().getValue();
- }
+ if (implementedInterface.equals(Mac.class) && ((MacAddressLocator) sffLocatorType).getMac() != null) {
+ sfMac = ((MacAddressLocator) sffLocatorType).getMac().getValue();
}
return sfMac;
String macStr = null;
OfsPort ofsPort = getSffPortInfoFromDpl(dpl);
- if (ofsPort != null) {
- if (ofsPort.getMacAddress() != null) {
- macStr = ofsPort.getMacAddress().getValue();
- }
+ if (ofsPort != null && ofsPort.getMacAddress() != null) {
+ macStr = ofsPort.getMacAddress().getValue();
}
- if (macStr == null) {
- if (dpl.getDataPlaneLocator().getTransport()
- .equals(org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Mac.class)) {
- MacAddress mac = ((MacAddressLocator) dpl.getDataPlaneLocator().getLocatorType()).getMac();
- if (mac != null) {
- macStr = mac.getValue();
- }
+ if (macStr == null && dpl.getDataPlaneLocator().getTransport()
+ .equals(org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Mac.class)) {
+ MacAddress mac = ((MacAddressLocator) dpl.getDataPlaneLocator().getLocatorType()).getMac();
+ if (mac != null) {
+ macStr = mac.getValue();
}
}
// If the SFF DPL wasnt augmented, check if the DPL is of type mac, and
// return that mac address
- if (macStr == null) {
- if (sffDpl.getDataPlaneLocator().getTransport()
- .equals(org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Mac.class)) {
- MacAddress mac = ((MacAddressLocator) sffDpl.getDataPlaneLocator().getLocatorType()).getMac();
- if (mac != null) {
- macStr = mac.getValue();
- }
+ if (macStr == null && sffDpl.getDataPlaneLocator().getTransport()
+ .equals(org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.Mac.class)) {
+ MacAddress mac = ((MacAddressLocator) sffDpl.getDataPlaneLocator().getLocatorType()).getMac();
+ if (mac != null) {
+ macStr = mac.getValue();
}
}
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.sfc.ovs.provider.SfcOvsUtil;
import org.opendaylight.sfc.provider.api.SfcDataStoreAPI;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sfg.rev150214.service.function.groups.ServiceFunctionGroup;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sft.rev140701.service.function.types.ServiceFunctionType;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbNodeAugmentation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
// Since this class can be called by multiple threads,
// store these objects per RSP id to avoid collisions
- private class RspContext {
+ private static class RspContext {
// store the SFs and SFFs internally so we dont have to
// query the DataStore repeatedly for the same thing
}
private final Map<Long, RspContext> rspIdToContext;
- protected static ExecutorService executor = Executors.newFixedThreadPool(10);
public SfcOfProviderUtils() {
rspIdToContext = new HashMap<>();
return ofPort;
}
- // internal support method for getPortNumberFromName() and related methods
- private OvsdbTerminationPointAugmentation extractTerminationPointAugmentation(Node bridgeNode, String portName) {
- if (bridgeNode.getAugmentation(OvsdbBridgeAugmentation.class) != null) {
- List<OvsdbTerminationPointAugmentation> tpAugmentations = extractTerminationPointAugmentations(bridgeNode);
- for (OvsdbTerminationPointAugmentation ovsdbTerminationPointAugmentation : tpAugmentations) {
- if (ovsdbTerminationPointAugmentation.getName().equals(portName)) {
- return ovsdbTerminationPointAugmentation;
- }
- }
- }
- return null;
- }
-
// internal support method for getPortNumberFromName() and related methods
public List<OvsdbTerminationPointAugmentation> extractTerminationPointAugmentations(Node node) {
List<OvsdbTerminationPointAugmentation> tpAugmentations = new ArrayList<>();
continue;
}
ServiceFunctionForwarderStateKey sffKey = new ServiceFunctionForwarderStateKey(sffName);
- RspsForDpnidBuilder builder = new RspsForDpnidBuilder();
- List<Rsps> values = new ArrayList<>();
- values.add(new RspsBuilder().setKey(new RspsKey(new SfpName(rsp.getName().getValue()))).build());
- builder.setRsps(values);
InstanceIdentifier<Rsps> dpnidIif = InstanceIdentifier.builder(ServiceFunctionForwardersState.class)
.child(ServiceFunctionForwarderState.class, sffKey).augmentation(SffLogicalSffAugmentation.class)
* The transaction to submit
*/
private void commitChangesAsync(WriteTransaction trans) {
- threadPoolExecutorService.submit(() -> {
+ threadPoolExecutorService.execute(() -> {
ListenableFuture<Void> submitFuture = trans.submit();
try {
submitFuture.get();