From 2d99d8b9c676cda78dc2d8ed2fd4e252075f8959 Mon Sep 17 00:00:00 2001 From: epgoraj Date: Wed, 20 Jan 2016 17:43:44 +0530 Subject: [PATCH] BUG:5021 ELan datapath code-changes and cleanUp some code. 1)Replace the nicira extension Reg1 with Tunnel-ID Change-Id: I06d66884cd0b9f61f39910b3cd7c19af74ed8644 Signed-off-by: epgoraj --- .../elan/internal/ElanInterfaceManager.java | 164 ++---------------- .../vpnservice/elan/utils/ElanUtils.java | 64 ------- .../globals/LogicalGroupInterfaceInfo.java | 10 +- .../interfacemgr/InterfacemgrProvider.java | 32 ++-- .../vpnservice/mdsalutil/ActionType.java | 45 +---- .../vpnservice/mdsalutil/MatchFieldType.java | 48 ----- .../interfaces/IMdsalApiManager.java | 2 - 7 files changed, 34 insertions(+), 331 deletions(-) diff --git a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java index b933578d..329eed0e 100644 --- a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java +++ b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/internal/ElanInterfaceManager.java @@ -15,27 +15,11 @@ import org.opendaylight.controller.md.sal.binding.api.DataChangeListener; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.vpnservice.elan.utils.ElanConstants; -import org.opendaylight.vpnservice.elan.utils.ElanConstants; import org.opendaylight.vpnservice.elan.utils.ElanUtils; import org.opendaylight.vpnservice.interfacemgr.globals.InterfaceInfo; import org.opendaylight.vpnservice.interfacemgr.globals.InterfaceInfo.InterfaceType; import org.opendaylight.vpnservice.interfacemgr.interfaces.IInterfaceManager; import org.opendaylight.vpnservice.itm.api.IITMProvider; -import org.opendaylight.vpnservice.itm.globals.ITMConstants; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.*; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.ExtensionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionList; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionListBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.*; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.reg.grouping.NxmNxRegBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.services.info.BoundServices; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; @@ -70,8 +54,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpc import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.OdlInterfaceRpcService; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; -import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -79,8 +61,6 @@ import java.math.BigInteger; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; public class ElanInterfaceManager extends AbstractDataChangeListener implements AutoCloseable { @@ -443,8 +423,7 @@ public class ElanInterfaceManager extends AbstractDataChangeListener mkMatches = new ArrayList(); - MatchBuilder mb = new MatchBuilder(); - addNxRegMatch(mb, RegMatch.of(NxmNxReg1.class, ifTag)); + int ifTag = interfaceInfo.getInterfaceTag(); FlowEntity flowEntity = MDSALUtil.buildFlowEntity(interfaceInfo.getDpId(), ElanConstants.ELAN_FILTER_EQUALS_TABLE, getFlowRef(ElanConstants.ELAN_FILTER_EQUALS_TABLE, ifTag), - 9, elanInfo.getElanInstanceName(), 0, 0, ElanConstants.COOKIE_ELAN_FILTER_EQUALS.add(BigInteger.valueOf(ifTag)), getMatchesForFilterEqualsReg1LPortTag(ifTag), + 9, elanInfo.getElanInstanceName(), 0, 0, ElanConstants.COOKIE_ELAN_FILTER_EQUALS.add(BigInteger.valueOf(ifTag)), getTunnelIdMatchForFilterEqualsLPortTag(ifTag), getInstructionsInPortForOutGroup(interfaceInfo.getInterfaceName())); mdsalManager.installFlow(flowEntity); @@ -475,45 +450,6 @@ public class ElanInterfaceManager extends AbstractDataChangeListener getEgressActionsForInterface(String ifName) { - List listActionInfo = new ArrayList(); - try { - Future> result = - interfaceManagerRpcService.getEgressActionsForInterface( - new GetEgressActionsForInterfaceInputBuilder().setIntfName(ifName).build()); - RpcResult rpcResult = result.get(); - System.out.println("Data is populated"); - if(!rpcResult.isSuccessful()) { - logger.warn("RPC Call to Get egress actions for interface {} returned with Errors {}", ifName, rpcResult.getErrors()); - } else { - List actions = - rpcResult.getResult().getAction(); - for (Action action : actions) { - org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action actionClass = action.getAction(); - if (actionClass instanceof OutputActionCase) { - System.out.println("Data "); - listActionInfo.add(new ActionInfo(ActionType.output, - new String[] {((OutputActionCase)actionClass).getOutputAction() - .getOutputNodeConnector().getValue()})); - } else if (actionClass instanceof PushVlanActionCase) { - listActionInfo.add(new ActionInfo(ActionType.push_vlan, new String[] {})); - } else if (actionClass instanceof SetFieldCase) { - if (((SetFieldCase)actionClass).getSetField().getVlanMatch() != null) { - int vlanVid = ((SetFieldCase)actionClass).getSetField().getVlanMatch().getVlanId().getVlanId().getValue(); - listActionInfo.add(new ActionInfo(ActionType.set_field_vlan_vid, - new String[] { Long.toString(vlanVid) })); - } - } - } - } - } catch (InterruptedException | ExecutionException e) { - logger.warn("Exception when egress actions for interface {}", ifName, e); - } - return listActionInfo; - } - - private List getRemoteBCGroupBucketInfos(ElanInstance elanInfo, InterfaceInfo interfaceInfo) { BigInteger dpnId = interfaceInfo.getDpId(); @@ -540,8 +476,8 @@ public class ElanInterfaceManager extends AbstractDataChangeListener listBucketInfo = getRemoteBCGroupBucketInfos(elanInfo, interfaceInfo); - BigInteger dpnId = interfaceInfo.getDpId(); - long groupId = ElanUtils.getElanRemoteBCGID(elanInfo.getElanTag()); - GroupEntity groupEntity = MDSALUtil.buildGroupEntity(dpnId, groupId, elanInfo.getElanInstanceName(), GroupTypes.GroupAll, listBucketInfo); - mdsalManager.syncInstallGroup(groupEntity, ElanConstants.DELAY_TIME_IN_MILLISECOND); - } - public void removeRemoteBroadcastGroup(ElanInstance elanInfo, InterfaceInfo interfaceInfo) { List listBucketInfo = getRemoteBCGroupBucketInfos(elanInfo, interfaceInfo); BigInteger dpnId = interfaceInfo.getDpId(); @@ -850,7 +778,7 @@ public class ElanInterfaceManager extends AbstractDataChangeListener getInterfacePortActionInfos(InterfaceInfo interfaceInfo) { List listActionInfo = new ArrayList(); - listActionInfo.add(getReg1ActionInfo(interfaceInfo.getInterfaceTag())); + listActionInfo.add(getTunnelIdActionInfo(interfaceInfo.getInterfaceTag())); listActionInfo.add(new ActionInfo(ActionType.nx_resubmit, new String[]{})); return listActionInfo; } @@ -1028,95 +956,33 @@ public class ElanInterfaceManager extends AbstractDataChangeListener getMatchesForFilterEqualsLPortTag(Long LportTag) { + private List getMatchesForFilterEqualsLPortTag(int LportTag) { List mkMatches = new ArrayList(); // Matching metadata mkMatches.add(new MatchInfo(MatchFieldType.metadata, new BigInteger[] { - ElanUtils.getElanMetadataLabel(LportTag), - MetaDataUtil.METADATA_MASK_SERVICE })); - mkMatches.add(new MatchInfo(MatchFieldType.reg1, new long[] {LportTag.longValue()})); + MetaDataUtil.getLportTagMetaData(LportTag), + MetaDataUtil.METADATA_MASK_LPORT_TAG })); + mkMatches.add(new MatchInfo(MatchFieldType.tunnel_id, new BigInteger[] {BigInteger.valueOf(LportTag)})); return mkMatches; } - private List getMatchesForFilterEqualsReg1LPortTag(Long LportTag) { + private List getTunnelIdMatchForFilterEqualsLPortTag(int LportTag) { List mkMatches = new ArrayList(); // Matching metadata - mkMatches.add(new MatchInfo(MatchFieldType.reg1, new long[] { - (LportTag.longValue())})); + mkMatches.add(new MatchInfo(MatchFieldType.tunnel_id, new BigInteger[] { + BigInteger.valueOf(LportTag)})); return mkMatches; } - public static class RegMatch { - - final Class reg; - final Long value; - - public RegMatch(Class reg, Long value) { - super(); - this.reg = reg; - this.value = value; - } - - public static RegMatch of(Class reg, Long value) { - return new RegMatch(reg, value); - } - } - - public static void addNxRegMatch(MatchBuilder match, RegMatch... matches) { - ArrayList extensions = new ArrayList<>(); - for (RegMatch rm : matches) { - Class key; - if (NxmNxReg0.class.equals(rm.reg)) { - key = NxmNxReg0Key.class; - } else if (NxmNxReg1.class.equals(rm.reg)) { - key = NxmNxReg1Key.class; - } else if (NxmNxReg2.class.equals(rm.reg)) { - key = NxmNxReg2Key.class; - } else if (NxmNxReg3.class.equals(rm.reg)) { - key = NxmNxReg3Key.class; - } else if (NxmNxReg4.class.equals(rm.reg)) { - key = NxmNxReg4Key.class; - } else if (NxmNxReg5.class.equals(rm.reg)) { - key = NxmNxReg5Key.class; - } else if (NxmNxReg6.class.equals(rm.reg)) { - key = NxmNxReg6Key.class; - } else { - key = NxmNxReg7Key.class; - } - NxAugMatchNodesNodeTableFlow am = new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg( - new NxmNxRegBuilder().setReg(rm.reg).setValue(rm.value).build()).build(); - extensions.add(new ExtensionListBuilder().setExtensionKey(key) - .setExtension(new ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, am).build()) - .build()); - } - GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder().setExtensionList( - extensions).build(); - match.addAugmentation(GeneralAugMatchNodesNodeTableFlow.class, m); - - } - - - private List getInstructionsInPortForOutGroup( - long GroupId) { - List mkInstructions = new ArrayList(); - List actionsInfos = new ArrayList (); - actionsInfos.add(new ActionInfo(ActionType.nx_resubmit, new String[]{ "123"})); - actionsInfos.add(new ActionInfo(ActionType.group, new String[]{Long.toString(GroupId)})); - mkInstructions.add(new InstructionInfo(InstructionType.write_actions, actionsInfos)); - return mkInstructions; - } - private List getInstructionsInPortForOutGroup( String ifName) { List mkInstructions = new ArrayList(); List actionsInfos = new ArrayList (); - //TODO: modify in-port action - //actionsInfos.add(new ActionInfo(ActionType.set_source_port_field, new String[]{ "255"})); - actionsInfos.addAll(getEgressActionsForInterface(ifName)); - mkInstructions.add(new InstructionInfo(InstructionType.write_actions, actionsInfos)); + actionsInfos.addAll(ElanUtils.getEgressActionsForInterface(ifName)); + mkInstructions.add(new InstructionInfo(InstructionType.apply_actions, actionsInfos)); return mkInstructions; } diff --git a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java index 0ffbf639..823da3e1 100644 --- a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java +++ b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java @@ -28,22 +28,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCase; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; 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.vpnservice._interface.service.rev150602._interface.service.info.ServiceInfo; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.*; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.ExtensionKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.ExtensionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionList; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionListBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.*; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.reg.grouping.NxmNxRegBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.*; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.elan._interface.forwarding.entries.ElanInterfaceMac; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.elan._interface.forwarding.entries.ElanInterfaceMacKey; @@ -68,9 +57,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.e import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.forwarding.entries.MacEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.elan.rev150602.forwarding.entries.MacEntryKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.*; -//import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfIndexesInterfaceMap; -//import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331._if.indexes._interface.map.IfIndexInterface; -//import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331._if.indexes._interface.map.IfIndexInterfaceKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.GetEgressActionsForInterfaceInputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rpcs.rev151003.GetEgressActionsForInterfaceOutput; import org.opendaylight.yangtools.yang.binding.DataObject; @@ -199,54 +185,6 @@ public class ElanUtils { return null; } - public static class RegMatch { - - final Class reg; - final Long value; - - public RegMatch(Class reg, Long value) { - super(); - this.reg = reg; - this.value = value; - } - - public static RegMatch of(Class reg, Long value) { - return new RegMatch(reg, value); - } - } - - public static void addNxRegMatch(MatchBuilder match, RegMatch... matches) { - ArrayList extensions = new ArrayList<>(); - for (RegMatch rm : matches) { - Class key; - if (NxmNxReg0.class.equals(rm.reg)) { - key = NxmNxReg0Key.class; - } else if (NxmNxReg1.class.equals(rm.reg)) { - key = NxmNxReg1Key.class; - } else if (NxmNxReg2.class.equals(rm.reg)) { - key = NxmNxReg2Key.class; - } else if (NxmNxReg3.class.equals(rm.reg)) { - key = NxmNxReg3Key.class; - } else if (NxmNxReg4.class.equals(rm.reg)) { - key = NxmNxReg4Key.class; - } else if (NxmNxReg5.class.equals(rm.reg)) { - key = NxmNxReg5Key.class; - } else if (NxmNxReg6.class.equals(rm.reg)) { - key = NxmNxReg6Key.class; - } else { - key = NxmNxReg7Key.class; - } - NxAugMatchNodesNodeTableFlow am = new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg( - new NxmNxRegBuilder().setReg(rm.reg).setValue(rm.value).build()).build(); - extensions.add(new ExtensionListBuilder().setExtensionKey(key) - .setExtension(new ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, am).build()) - .build()); - } - GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder().setExtensionList( - extensions).build(); - match.addAugmentation(GeneralAugMatchNodesNodeTableFlow.class, m); - } - public static InstanceIdentifier getElanInterfaceConfigurationDataPathId(String interfaceName) { return InstanceIdentifier.builder(ElanInterfaces.class).child(ElanInterface.class, new ElanInterfaceKey(interfaceName)).build(); @@ -519,7 +457,6 @@ public class ElanUtils { elanServiceProvider.getInterfaceManagerRpcService().getEgressActionsForInterface( new GetEgressActionsForInterfaceInputBuilder().setIntfName(ifName).build()); RpcResult rpcResult = result.get(); - System.out.println("Data is populated"); if(!rpcResult.isSuccessful()) { logger.warn("RPC Call to Get egress actions for interface {} returned with Errors {}", ifName, rpcResult.getErrors()); } else { @@ -528,7 +465,6 @@ public class ElanUtils { for (Action action : actions) { org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action actionClass = action.getAction(); if (actionClass instanceof OutputActionCase) { - System.out.println("Data "); listActionInfo.add(new ActionInfo(ActionType.output, new String[] {((OutputActionCase)actionClass).getOutputAction() .getOutputNodeConnector().getValue()})); diff --git a/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/globals/LogicalGroupInterfaceInfo.java b/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/globals/LogicalGroupInterfaceInfo.java index c8206d08..72f820fc 100644 --- a/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/globals/LogicalGroupInterfaceInfo.java +++ b/interfacemgr/interfacemgr-api/src/main/java/org/opendaylight/vpnservice/interfacemgr/globals/LogicalGroupInterfaceInfo.java @@ -8,12 +8,8 @@ package org.opendaylight.vpnservice.interfacemgr.globals; import java.math.BigInteger; -import java.net.InetAddress; -import java.util.*; - -import org.opendaylight.vpnservice.mdsalutil.ActionInfo; -import org.opendaylight.vpnservice.mdsalutil.InstructionInfo; -import org.opendaylight.vpnservice.mdsalutil.MatchInfo; +import java.util.List; +import java.util.ArrayList; public class LogicalGroupInterfaceInfo extends InterfaceInfo { @@ -49,5 +45,3 @@ public class LogicalGroupInterfaceInfo extends InterfaceInfo { } -/*--------------------------------*/ - diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java index f1a9c849..5960c23e 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/InterfacemgrProvider.java @@ -198,7 +198,7 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable } if(interfaceType == InterfaceInfo.InterfaceType.VLAN_INTERFACE){ - interfaceInfo = IfmUtil.getVlanInterfaceInfo(interfaceName, intf, dpId); + interfaceInfo = IfmUtil.getVlanInterfaceInfo(interfaceName, intf, dpId); } else if (interfaceType == InterfaceInfo.InterfaceType.VXLAN_TRUNK_INTERFACE || interfaceType == InterfaceInfo.InterfaceType.GRE_TRUNK_INTERFACE) {/* trunkInterfaceInfo trunkInterfaceInfo = (TrunkInterfaceInfo) ConfigIfmUtil.getTrunkInterfaceInfo(ifName, ConfigIfmUtil.getInterfaceByIfName(dataBroker, ifName)); String higherLayerIf = inf.getHigherLayerIf().get(0); @@ -229,21 +229,21 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable } @Override - public InterfaceInfo getInterfaceInfoFromOperationalDataStore(String interfaceName, InterfaceInfo.InterfaceType interfaceType) { - InterfaceInfo interfaceInfo = new InterfaceInfo(interfaceName); - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils - .getInterfaceStateFromOperDS(interfaceName, dataBroker); - if (ifState == null) { - LOG.error("Interface {} is not present", interfaceName); - return null; - } + public InterfaceInfo getInterfaceInfoFromOperationalDataStore(String interfaceName, InterfaceInfo.InterfaceType interfaceType) { + InterfaceInfo interfaceInfo = new InterfaceInfo(interfaceName); + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils + .getInterfaceStateFromOperDS(interfaceName, dataBroker); + if (ifState == null) { + LOG.error("Interface {} is not present", interfaceName); + return null; + } Integer lportTag = ifState.getIfIndex(); - Interface intf = InterfaceManagerCommonUtils.getInterfaceFromConfigDS(new InterfaceKey(interfaceName), dataBroker); - NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(intf, dataBroker); - if (ncId != null) { - interfaceInfo.setDpId(new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId))); - interfaceInfo.setPortNo(Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId))); - } + Interface intf = InterfaceManagerCommonUtils.getInterfaceFromConfigDS(new InterfaceKey(interfaceName), dataBroker); + NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(intf, dataBroker); + if (ncId != null) { + interfaceInfo.setDpId(new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId))); + interfaceInfo.setPortNo(Integer.parseInt(IfmUtil.getPortNoFromNodeConnectorId(ncId))); + } interfaceInfo.setAdminState((intf.isEnabled() == true) ? InterfaceAdminState.ENABLED : InterfaceAdminState.DISABLED); interfaceInfo.setInterfaceName(interfaceName); interfaceInfo.setInterfaceTag(lportTag); @@ -253,7 +253,7 @@ public class InterfacemgrProvider implements BindingAwareProvider, AutoCloseable return interfaceInfo; - } + } @Override public BigInteger getDpnForInterface(String ifName) { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java index 19ec9da2..07e0e00d 100755 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/ActionType.java @@ -29,14 +29,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.mpls.action._case.PushMplsActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.pbb.action._case.PushPbbActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.push.vlan.action._case.PushVlanActionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetField; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field._case.SetFieldBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.OutputPortValues; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.apply.actions._case.ApplyActions; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder; @@ -47,36 +44,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.PortNumber; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DropActionCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropAction; import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.drop.action._case.DropActionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.action.grouping.action.choice.set.field._case.SetFieldActionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.OfjNxActionOutputRegGrouping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionOutputRegBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionOutputRegRpcAddGroupCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionOutputRegRpcAddGroupCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.add.group.input.buckets.bucket.action.action.NxActionResubmitRpcAddGroupCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionOutputRegNodesNodeGroupBucketsBucketActionsCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionOutputRegNodesNodeGroupBucketsBucketActionsCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.group.buckets.bucket.action.action.NxActionRegLoadNodesNodeGroupBucketsBucketActionsCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nodes.node.table.flow.instructions.instruction.instruction.apply.actions._case.apply.actions.action.action.NxActionOutputRegNodesNodeTableFlowApplyActionsCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.NxOutputReg; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.NxOutputRegBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.resubmit.grouping.NxResubmitBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.src.choice.grouping.src.choice.SrcNxRegCaseBuilder; + public enum ActionType { group { @Override @@ -391,26 +368,6 @@ public enum ActionType { return ab.build(); } }, - set_field_reg { - - @Override - public Action buildAction(ActionInfo actionInfo) { - ActionBuilder ab = new ActionBuilder(); - String[] actionValues = actionInfo.getActionValues(); - NxOutputReg r = new NxOutputRegBuilder().setSrc( - new org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.action.rev140714.nx.action.output.reg.grouping.nx.output.reg.SrcBuilder().setSrcChoice( - new SrcNxRegCaseBuilder().setNxReg(NxmNxReg1.class).build()) - .setOfsNbits(Integer.valueOf(Integer.parseInt(actionValues[0]))) - .build()) - .setMaxLen(Integer.valueOf(0xffff)) - .build(); - ab.setAction(new NxActionOutputRegNodesNodeGroupBucketsBucketActionsCaseBuilder().setNxOutputReg(r).build()); - ab.setKey(new ActionKey(actionInfo.getActionKey())); - return ab.build(); - } - }, - - nx_resubmit { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java index e514e3eb..7e4cfa29 100755 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/MatchFieldType.java @@ -8,8 +8,6 @@ package org.opendaylight.vpnservice.mdsalutil; import java.math.BigInteger; -import java.util.ArrayList; -import java.util.List; import java.util.Map; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; @@ -33,16 +31,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.protocol.match.fields.PbbBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg1; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.GeneralAugMatchNodesNodeTableFlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.grouping.ExtensionBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionList; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.general.rev140714.general.extension.list.grouping.ExtensionListBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlow; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxAugMatchNodesNodeTableFlowBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.NxmNxReg1Key; -import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowplugin.extension.nicira.match.rev140714.nxm.nx.reg.grouping.NxmNxRegBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa; @@ -57,14 +45,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Match import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid; -//import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SalOpenflowBasicClass; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid; -import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch; -import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId; @@ -588,39 +573,6 @@ public enum MatchFieldType { }, - reg1 { - @Override - protected Class getMatchType() { - return MatchField.class; - } - - @Override - public void createInnerMatchBuilder(MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - NxmNxRegBuilder regdataBuilder = (NxmNxRegBuilder) mapMatchBuilder.get(NxmNxRegBuilder.class); - if (regdataBuilder == null) { - regdataBuilder = new NxmNxRegBuilder(); - mapMatchBuilder.put(NxmNxRegBuilder.class, regdataBuilder); - } - long[] metadataValues = matchInfo.getMatchValues(); - regdataBuilder.setValue(metadataValues[0]).build(); - ArrayList extensions = new ArrayList<>(); - NxAugMatchNodesNodeTableFlow am = new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg(new NxmNxRegBuilder().setReg(NxmNxReg1.class).setValue(metadataValues[0]).build()).build(); - extensions.add(new ExtensionListBuilder().setExtensionKey(NxmNxReg1Key.class).setExtension(new ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, am).build()).build()); - GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder().setExtensionList(extensions).build(); - } - - @Override - public void setMatch(MatchBuilder matchBuilderInOut, MatchInfo matchInfo, Map, Object> mapMatchBuilder) { - List extensions = new ArrayList<>(); - long[] matchvalues = matchInfo.getMatchValues(); - NxAugMatchNodesNodeTableFlow am = new NxAugMatchNodesNodeTableFlowBuilder().setNxmNxReg(new NxmNxRegBuilder().setReg(NxmNxReg1.class).setValue(matchvalues[0]).build()).build(); - extensions.add(new ExtensionListBuilder().setExtensionKey(NxmNxReg1Key.class).setExtension(new ExtensionBuilder().addAugmentation(NxAugMatchNodesNodeTableFlow.class, am).build()).build()); - GeneralAugMatchNodesNodeTableFlow m = new GeneralAugMatchNodesNodeTableFlowBuilder().setExtensionList(extensions).build(); - matchBuilderInOut.addAugmentation(GeneralAugMatchNodesNodeTableFlow.class, m); - - } - }, - vlan_vid { @Override protected Class getMatchType() { diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java index d581347d..250a2471 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/vpnservice/mdsalutil/interfaces/IMdsalApiManager.java @@ -11,12 +11,10 @@ import java.math.BigInteger; import java.util.List; import com.google.common.util.concurrent.CheckedFuture; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.vpnservice.mdsalutil.ActionInfo; import org.opendaylight.vpnservice.mdsalutil.FlowEntity; import org.opendaylight.vpnservice.mdsalutil.GroupEntity; -import org.opendaylight.vpnservice.mdsalutil.*; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; public interface IMdsalApiManager { -- 2.36.6