type string;
}
}
- }
+ }
+
+ container dpn-to-interface-list {
+ config false;
+ description "Contains the list of interfaces on the given dpn";
+
+ list dpn-to-interface {
+ key dpid;
+ leaf dpid {
+ type uint64;
+ }
+ list interface-name-entry {
+ key interface-name;
+ leaf interface-name {
+ type string;
+ }
+ }
+ }
+ }
}
\ No newline at end of file
}
}
}
+
+ rpc get-dpn-interface-list {
+ description "used to retrieve interface list for a given Dpn";
+ input {
+ leaf dpid {
+ type uint64;
+ }
+ }
+ output {
+ leaf-list interfaces-list {
+ type string;
+ }
+ }
+ }
}
\ No newline at end of file
.put(TunnelTypeVxlanGpe.class, InterfaceInfo.InterfaceType.VXLAN_TRUNK_INTERFACE)
.build();
- public static String getDpnFromNodeConnectorId(NodeConnectorId portId) {
+ public static BigInteger getDpnFromNodeConnectorId(NodeConnectorId portId) {
/*
* NodeConnectorId is of form 'openflow:dpnid:portnum'
*/
String[] split = portId.getValue().split(IfmConstants.OF_URI_SEPARATOR);
- return split[1];
+ return new BigInteger(split[1]);
}
public static BigInteger getDpnFromInterface(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState){
NodeConnectorId ncId = getNodeConnectorIdFromInterface(ifState);
if(ncId != null){
- return new BigInteger(getDpnFromNodeConnectorId(ncId));
+ return getDpnFromNodeConnectorId(ncId);
}
return null;
}
BigInteger dpId = org.opendaylight.genius.interfacemanager.globals.IfmConstants.INVALID_DPID;
Integer portNo = org.opendaylight.genius.interfacemanager.globals.IfmConstants.INVALID_PORT_NO;
if (ncId != null) {
- dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId));
+ dpId = IfmUtil.getDpnFromNodeConnectorId(ncId);
portNo = Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId));
}
if (interfaceType == InterfaceInfo.InterfaceType.VLAN_INTERFACE) {
Integer lportTag = ifState.getIfIndex();
NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(ifState);
if (ncId != null) {
- interfaceInfo.setDpId(new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId)));
+ interfaceInfo.setDpId(IfmUtil.getDpnFromNodeConnectorId(ncId));
interfaceInfo.setPortNo(Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId)));
}
InterfaceInfo.InterfaceOpState opState ;
NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(ifState);
if (ncId != null) {
interfaceInfo.setPortName(IfmUtil.getPortName(dataBroker, ncId));
- interfaceInfo.setDpId(new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId)));
+ interfaceInfo.setDpId(IfmUtil.getDpnFromNodeConnectorId(ncId));
interfaceInfo.setPortNo(Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId)));
}
InterfaceInfo.InterfaceOpState opState ;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.DpnToInterfaceList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntryKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntryBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntryKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.dpn.to._interface.InterfaceNameEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.dpn.to._interface.InterfaceNameEntryBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.dpn.to._interface.InterfaceNameEntryKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeMplsOverGre;
interfaceOperShardTransaction.put(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build(), true);
// install ingress flow
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
long portNo = Long.valueOf(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
if (interfaceInfo != null && interfaceInfo.isEnabled() && ifState
.getOperStatus() == org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Up) {
FlowBasedServicesUtils.installLportIngressFlow(dpId, portNo, interfaceInfo, futures, dataBroker, ifIndex);
FlowBasedServicesUtils.bindDefaultEgressDispatcherService(dataBroker, futures, interfaceInfo, Long.toString(portNo), interfaceName, ifIndex);
}
+
+ // Update the DpnToInterfaceList OpDS
+ createOrUpdateDpnToInterface(dpId, interfaceName,interfaceOperShardTransaction);
}
public static boolean checkIfBfdStateIsDown(String interfaceName){
}
public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface addStateEntry(
- Interface interfaceInfo, String interfaceName, WriteTransaction transaction, IdManagerService idManager,
+ DataBroker dataBroker, Interface interfaceInfo, String interfaceName, WriteTransaction transaction, IdManagerService idManager,
PhysAddress physAddress,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus operStatus,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus adminStatus,
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = ifaceBuilder
.build();
transaction.put(LogicalDatastoreType.OPERATIONAL, ifStateId, ifState, true);
+
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
+ // Update the DpnToInterfaceList OpDS
+ createOrUpdateDpnToInterface(dpId, interfaceName, transaction);
return ifState;
}
return matcher.matches();
}
+
+ public static void createOrUpdateDpnToInterface(BigInteger dpId, String infName, WriteTransaction transaction) {
+ DpnToInterfaceKey dpnToInterfaceKey = new DpnToInterfaceKey(dpId);
+ InterfaceNameEntryKey interfaceNameEntryKey = new InterfaceNameEntryKey(infName);
+ InstanceIdentifier<InterfaceNameEntry> intfid = InstanceIdentifier.builder(DpnToInterfaceList.class)
+ .child(DpnToInterface.class, dpnToInterfaceKey)
+ .child(InterfaceNameEntry.class, interfaceNameEntryKey)
+ .build();
+ InterfaceNameEntryBuilder entryBuilder = new InterfaceNameEntryBuilder().setKey(interfaceNameEntryKey).setInterfaceName(infName);
+ transaction.put(LogicalDatastoreType.OPERATIONAL, intfid, entryBuilder.build(), true);
+ }
+
+ public static void deleteDpnToInterface(DataBroker dataBroker, BigInteger dpId, String infName, WriteTransaction transaction) {
+ DpnToInterfaceKey dpnToInterfaceKey = new DpnToInterfaceKey(dpId);
+ InstanceIdentifier<DpnToInterface> dpnToInterfaceId = InstanceIdentifier.builder(DpnToInterfaceList.class)
+ .child(DpnToInterface.class, dpnToInterfaceKey).build();
+ Optional<DpnToInterface> dpnToInterfaceOptional = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, dpnToInterfaceId, dataBroker);
+ if (!dpnToInterfaceOptional.isPresent()) {
+ LOG.debug("DPN {} is already removed from the Operational DS", dpId);
+ return;
+ }
+
+ List<InterfaceNameEntry> interfaceNameEntries = dpnToInterfaceOptional.get().getInterfaceNameEntry();
+ InterfaceNameEntryKey interfaceNameEntryKey = new InterfaceNameEntryKey(infName);
+ InstanceIdentifier<InterfaceNameEntry> intfid = InstanceIdentifier.builder(DpnToInterfaceList.class)
+ .child(DpnToInterface.class, dpnToInterfaceKey)
+ .child(InterfaceNameEntry.class, interfaceNameEntryKey)
+ .build();
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, intfid);
+
+ if (interfaceNameEntries.size() <=1) {
+ transaction.delete(LogicalDatastoreType.OPERATIONAL, dpnToInterfaceId);
+ }
+ }
+
}
private String getDpnPrefixedPortName(NodeConnectorId nodeConnectorId, String portName) {
portName = new StringBuilder(
- IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId))
+ (IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId)).toString())
.append(IfmConstants.OF_URI_SEPARATOR)
.append(portName).toString();
return portName;
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface iface =
InterfaceManagerCommonUtils.getInterfaceFromConfigDS(interfaceKey, dataBroker);
- Interface ifState = InterfaceManagerCommonUtils.addStateEntry(iface, interfaceName, defaultOperationalShardTransaction, idManager,
+ Interface ifState = InterfaceManagerCommonUtils.addStateEntry(dataBroker, iface, interfaceName, defaultOperationalShardTransaction, idManager,
physAddress, operStatus, adminStatus, nodeConnectorId);
// If this interface is a tunnel interface, create the tunnel ingress flow,and start tunnel monitoring
// install ingress flow if this is an l2vlan interface
if(InterfaceManagerCommonUtils.isVlanInterface(iface) && iface.isEnabled() &&
ifState.getOperStatus() == org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Up) {
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
long portNo = Long.valueOf(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
List<MatchInfo> matches = FlowBasedServicesUtils.getMatchInfoForVlanPortAtIngressTable(dpId, portNo, iface);
FlowBasedServicesUtils.installLportIngressFlow(dpId, portNo, iface, futures, dataBroker, ifState.getIfIndex());
IMdsalApiManager mdsalApiManager,AlivenessMonitorService alivenessMonitorService,
NodeConnectorId nodeConnectorId, WriteTransaction transaction, Integer ifindex,
IfTunnel ifTunnel, String interfaceName){
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
long portNo = Long.valueOf(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
InterfaceManagerCommonUtils.makeTunnelIngressFlow(futures, mdsalApiManager, ifTunnel, dpId, portNo, interfaceName,
ifindex, NwConstants.ADD_FLOW);
NodeConnectorId nodeConnectorId = nodeConnectorIdOld != null && !nodeConnectorIdNew.equals(nodeConnectorIdOld) ?
nodeConnectorIdOld : nodeConnectorIdNew;
// delete the port entry from interface operational DS
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
//VM Migration: Update the interface state to unknown only if remove event received for same switch
if(!isNodePresent && nodeConnectorIdNew.equals(nodeConnectorIdOld)){
FlowBasedServicesUtils.removeIngressFlow(interfaceName, dpId, dataBroker, futures);
FlowBasedServicesUtils.unbindDefaultEgressDispatcherService(dataBroker, interfaceName);
}
+
+ // Delete the Vpn Interface from DpnToInterface Op DS.
+ InterfaceManagerCommonUtils.deleteDpnToInterface(dataBroker, dpId, interfaceName, defaultOperationalShardTransaction);
}
futures.add(defaultOperationalShardTransaction.submit());
return futures;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Iterator;
import java.util.List;
import java.util.concurrent.Future;
+import java.util.stream.Collectors;
+
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;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.DpnToInterfaceList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.IfIndexesInterfaceMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterfaceKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntryKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.bridge.entry.BridgeInterfaceEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.dpn.to._interface.InterfaceNameEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.ParentRefs;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetTunnelTypeOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.RemoveTerminatingServiceActionsInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpnInterfaceListInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpnInterfaceListOutput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpnInterfaceListOutputBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.common.RpcError;
if (ifState != null) {
String lowerLayerIf = ifState.getLowerLayerIf().get(0);
NodeConnectorId nodeConnectorId = new NodeConnectorId(lowerLayerIf);
- dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
} else {
rpcResultBuilder = getRpcErrorResultForGetDpnIdRpc(interfaceName, "missing Interface-state");
return Futures.immediateFuture(rpcResultBuilder.build());
if (ifState != null) {
String lowerLayerIf = ifState.getLowerLayerIf().get(0);
NodeConnectorId nodeConnectorId = new NodeConnectorId(lowerLayerIf);
- dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
portNo = Long.valueOf(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
// FIXME Assuming portName and interfaceName are same
GetPortFromInterfaceOutputBuilder output = new GetPortFromInterfaceOutputBuilder().setDpid(dpId).
return Futures.immediateFuture(rpcResultBuilder.build());
}
+ @Override
+ public Future<RpcResult<GetDpnInterfaceListOutput>> getDpnInterfaceList(GetDpnInterfaceListInput input) {
+ BigInteger dpnid = input.getDpid();
+ RpcResultBuilder<GetDpnInterfaceListOutput> rpcResultBuilder = null;
+ try {
+ InstanceIdentifier<DpnToInterface> id =
+ InstanceIdentifier.builder(DpnToInterfaceList.class).child(DpnToInterface.class , new DpnToInterfaceKey(dpnid)).build();
+ Optional<DpnToInterface> entry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, id, dataBroker);
+ if (entry.isPresent()) {
+ List<InterfaceNameEntry> interfaceNameEntries = entry.get().getInterfaceNameEntry();
+ if (interfaceNameEntries != null && !interfaceNameEntries.isEmpty()) {
+ List<String> interfaceList = interfaceNameEntries.stream().map((a) -> a.getInterfaceName()).collect(Collectors.toList());
+ GetDpnInterfaceListOutputBuilder output = new GetDpnInterfaceListOutputBuilder().setInterfacesList(interfaceList);
+ rpcResultBuilder = RpcResultBuilder.success();
+ rpcResultBuilder.withResult(output.build());
+ }
+ }
+ } catch (Exception e) {
+ LOG.error("Retrieval of interfaceNameList for the dpnId {} failed due to {}", dpnid, e);
+ rpcResultBuilder = RpcResultBuilder.failed();
+ }
+ return Futures.immediateFuture(rpcResultBuilder.build());
+ }
+
protected static List<Instruction> buildInstructions(List<InstructionInfo> listInstructionInfo) {
if (listInstructionInfo != null) {
List<Instruction> instructions = new ArrayList<>();
List<ListenableFuture<Void>> futures = new ArrayList<>();
NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState);
long portNo = Long.parseLong(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
Interface iface = InterfaceManagerCommonUtils.getInterfaceFromConfigDS(ifState.getName(), dataBroker);
if (allServices.size() == 1) {
WriteTransaction t = dataBroker.newWriteOnlyTransaction();
NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState);
long portNo = Long.parseLong(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
if (boundServices.isEmpty()) {
// Remove entry from Ingress Table.
Interface ifState, DataBroker dataBroker) {
List<ListenableFuture<Void>> futures = new ArrayList<>();
NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState);
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
WriteTransaction t = dataBroker.newWriteOnlyTransaction();
Collections.sort(allServices, new Comparator<BoundServices>() {
@Override
if(nodeConnectorId == null){
return futures;
}
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
Collections.sort(allServices, new Comparator<BoundServices>() {
@Override
public int compare(BoundServices serviceInfo1, BoundServices serviceInfo2) {
InterfaceManagerCommonUtils.getInterfaceFromConfigDS(ifState.getName(), dataBroker);
NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState);
long portNo = Long.parseLong(IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId));
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
List<MatchInfo> matches = FlowBasedServicesUtils.getMatchInfoForTunnelPortAtIngressTable (dpId, portNo);
BoundServices highestPriorityBoundService = FlowBasedServicesUtils.getHighestPriorityService(allServices);
WriteTransaction t = dataBroker.newWriteOnlyTransaction();
Interface ifState, DataBroker dataBroker) {
List<ListenableFuture<Void>> futures = new ArrayList<>();
NodeConnectorId nodeConnectorId = FlowBasedServicesUtils.getNodeConnectorIdFromInterface(ifState);
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
WriteTransaction t = dataBroker.newWriteOnlyTransaction();
Collections.sort(allServices, new Comparator<BoundServices>() {
@Override
}
BoundServices highestPriorityBoundService = FlowBasedServicesUtils.getHighestPriorityService(allServices);
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
FlowBasedServicesUtils.removeIngressFlow(iface.getName(), highestPriorityBoundService, dpId, t);
for (BoundServices boundService : allServices) {
if(nodeConnectorId == null){
return futures;
}
- BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ BigInteger dpId = IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
Collections.sort(allServices, new Comparator<BoundServices>() {
@Override
public int compare(BoundServices serviceInfo1, BoundServices serviceInfo2) {
List<String> ofportIds = ifState.getLowerLayerIf();
nodeConnectorId = new NodeConnectorId(ofportIds.get(0));
}
- return new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId));
+ return IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId);
}
public static List<MatchInfo> getMatchInfoForVlanPortAtIngressTable(BigInteger dpId, long portNo, Interface iface) {
String NodeId = IfmUtil.buildDpnNodeId(BigInteger.valueOf(101)).getValue();
assertEquals("openflow:101", NodeId);
when(ncId.getValue()).thenReturn("openflow:101:11");
- assertEquals("101",IfmUtil.getDpnFromNodeConnectorId(ncId));
+ assertEquals(new BigInteger("101"),IfmUtil.getDpnFromNodeConnectorId(ncId));
}
}
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.ReleaseIdInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.DpnToInterfaceList;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.IfIndexesInterfaceMap;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterface;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._if.indexes._interface.map.IfIndexInterfaceKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info.InterfaceParentEntryKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntry;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406._interface.child.info._interface.parent.entry.InterfaceChildEntryBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterfaceBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.DpnToInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.dpn.to._interface.InterfaceNameEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.dpn.to._interface.list.dpn.to._interface.InterfaceNameEntryBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface stateInterface;
InterfaceParentEntry interfaceParentEntry;
InterfaceParentEntry higherLayerInterfaceParentEntry;
+ DpnToInterface dpnToInterface;
@Mock DataBroker dataBroker;
@Mock
}
private void setupMocks() {
+ List<InterfaceNameEntry> interfaceNameEntries = new ArrayList<>();
+ interfaceNameEntries.add(new InterfaceNameEntryBuilder().setInterfaceName(InterfaceManagerTestUtil.interfaceName).build());
nodeConnectorId = InterfaceManagerTestUtil.buildNodeConnectorId(BigInteger.valueOf(1), 2);
nodeConnector = InterfaceManagerTestUtil.buildFlowCapableNodeConnector(nodeConnectorId);
fcNodeConnectorNew = nodeConnector.getAugmentation(FlowCapableNodeConnector.class);
InterfaceParentEntryBuilder higherLayerIfParentEntryBuilder = new InterfaceParentEntryBuilder();
List<InterfaceChildEntry> ifaceChildEntryListForHigherParent= new ArrayList<>();
higherLayerInterfaceParentEntry = higherLayerIfParentEntryBuilder.setInterfaceChildEntry(ifaceChildEntryListForHigherParent).build();
+ dpnToInterface = new DpnToInterfaceBuilder().setDpid(dpId).setInterfaceNameEntry(interfaceNameEntries).build();
when(dataBroker.newReadOnlyTransaction()).thenReturn(mockReadTx);
when(dataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTx);
Optional<InterfaceParentEntry> higherLayerParentOptional = Optional.of(higherLayerInterfaceParentEntry);
InstanceIdentifier<Node> nodeInstanceIdentifier = InstanceIdentifier.builder(Nodes.class).child(Node.class, InterfaceManagerTestUtil.nodeKey).build();
Optional<Node> nodeOptional = Optional.of(mockNode);
+ Optional<DpnToInterface> dpnToInterfaceOptional = Optional.of(dpnToInterface);
+ InstanceIdentifier<DpnToInterface> dpnToInterfaceInstanceIdentifier =
+ InstanceIdentifier.builder(DpnToInterfaceList.class).child(DpnToInterface.class, new DpnToInterfaceKey(BigInteger.ONE)).build();
doReturn(Futures.immediateCheckedFuture(expectedIfindexInterface)).when(mockReadTx).read(
LogicalDatastoreType.OPERATIONAL, ifIndexId);
LogicalDatastoreType.CONFIGURATION, higherLevelInterfaceParentEntryIdentifier);
doReturn(Futures.immediateCheckedFuture(nodeOptional)).when(mockReadTx).read(
LogicalDatastoreType.OPERATIONAL, nodeInstanceIdentifier);
+ doReturn(Futures.immediateCheckedFuture(dpnToInterfaceOptional)).when(mockReadTx).read(
+ LogicalDatastoreType.OPERATIONAL, dpnToInterfaceInstanceIdentifier);
ReleaseIdInput getIdInput = new ReleaseIdInputBuilder()
.setPoolName(IfmConstants.IFM_IDPOOL_NAME)