• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight
 

Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight

on

  • 196 views

Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight. Will post more details in a blog entry at http://networkstatic.net as soon as time permits for those ...

Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight. Will post more details in a blog entry at http://networkstatic.net as soon as time permits for those looking for more information.

Cheers,
-Brent

Statistics

Views

Total Views
196
Views on SlideShare
196
Embed Views
0

Actions

Likes
0
Downloads
13
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight Presentation Transcript

    • Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight Augment a Layer Augment a Layer Augment a Layer Augment a Layer Root nodes nodes/ (flowcapable) tables table/1 flows flow/1 (OXM) node- connetors node- connetor/1 match Instructions Apply/Write Actions Actions Augment a Layer TunnelIPv4Match SetTunnelIPv4DesMatch Ipv4Destination SetTunnelIPv4DesMatch Ipv4Destination IPv4Match TunnelIPv4DestMatch Brent Salisbury! RedHat ! May 19, 2014! @networkstatic! brent.salisbury@gmail.com
    • OVS OpenStack Neutron Controller NB-Api OVSDB Nbound OVSDB SBound OpenFlowJava OVSDB Neutron OFPlugin Libvirt RabbitMQ Controller SAL OVSDB OpenFlow Example OpenStack Consumption
    • ### OpenFlowJava OXM/NXMs ###! ! ! openflowjava/openflow-protocol-api/src/main/yang/openflow-extensible- match.yang         identity foo_dest {             base match-field;             description "Field for Foo";         }
    • One Example of Extension Rational ! ovs-ofctl add-flow -O OpenFlow13 br-int "table=16,priority=16100,tcp,tp_dst=22,tun_id=0x5,in_port=10 actions=goto_table:20" ovs-ofctl add-flow -O OpenFlow13 br-int "table=16,priority=16200,tcp,tp_src=22,tun_id=0x5,in_port=10 actions=goto_table:20" • The OpenFlow Spec still today favors reactive packet processing. • OVS is the defacto OSS software model. Rough consensus and running code. • Access-Lists with OFv1.3 Doesn't Scale N^2 and worse • Reading TCP State Enables Basic Filtering
    • Other Extension Enablements • ARP Responders. REG(n) - Copy headers from one field to another. • Tunnel IPv4/6 Endpoint Source/Destination. • Recirc to avoid unnecessarily large flow tables. • Functionality required if we want to come close to OpenStack Neutron feature parity. • Take advantage of OSS innovation, rather then OpenFlow HW standards bodies.
    • OF OXM/NXM Constants public abstract class OxmMatchConstants { /** OXM Clazz */ /** Backward compatibility with NXM */ public static final int NXM_0_CLASS = 0x0000; /** Backward compatibility with NXM */ public static final int NXM_1_CLASS = 0x0001; /** Basic class for OpenFlow */ public static final int OPENFLOW_BASIC_CLASS = 0x8000; /** Experimenter class */ public static final int EXPERIMENTER_CLASS = 0xFFFF; ! /** OPENFLOW_BASIC_CLASS Constant Values */ public static final int ICMPV6_TYPE = 29; /** ICMPv6 code. */ public static final int ICMPV6_CODE = 30; /** Target address for ND. */ public static final int IPV6_ND_TARGET = 31; /** Source link-layer for ND. */ public static final int IPV6_ND_SLL = 32; ! /** NXM_1_CLASS Constant Values */ /** NXM IPv4 Tunnel Source */ public static final int NXM_NX_TUN_IPV4_SRC = 31; /** NXM IPv4 Tunnel Destination */ public static final int NXM_NX_TUN_IPV4_DST = 32; /** NXM TCP_Flag reads */ public static final int NXM_NX_TCP_FLAG = 34;
    • Controller:model-flow-base:src/main/yang/opendaylight-match-types.yang! ! grouping "tunnel-ipv4-match-fields" { leaf tunnel-ipv4-source { description "IPv4 tunnel source address."; type inet:ipv4-prefix; } leaf tunnel-ipv4-destination { description "IPv4 tunnel destination address."; type inet:ipv4-prefix; } } !
    • Controller:model-flow-base:src/main/yang/opendaylight-match-types.yang identity mpls_label {! base match-field;! description "Match for MPLS label.";!     }! identity mpls_tc {! base match-field;! description "Match for MPLS TC.";!     }! identity mpls_bos {! base match-field;! description "Match for MPLS BoS bit.";!     }! identity pbb_isid {! base match-field;! description "Match for PBB I-SID.";!     }! identity tunnel_id {! base match-field;! description "Match for Logical Port Metadata";!     }! identity tunnel_ipv4_dst {! base match-field;! description "Match for Logical Port Metadata";!     }! identity tunnel_ipv4_src {! base match-field;! description "Match for Logical Port Metadata";!     }!         ! grouping set-field-match {! list set-field-match {! ! key "match-type";! leaf match-type {! type identityref {! base match-field;!                 }!             }! leaf has-mask {! type boolean;! } !         }!     }
    • Generated Classes
    • Builders and Augmentations
    • Define the Data Type in the Yang Model // openflowjava - openflow-augments.yang augment "/oxm:oxm-container/oxm:match-entries" { ext:augment-identifier "tcp-flag-match-entry"; leaf tcp-flag { type uint16; } } // openflowjava - openflow-extensible-match.yang identity tcp_flag { base match-field; description "NXM field for NXM_NX_TUN_IPV4_SRC"; }
    • Binding Inheritance package org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.MatchField; import org.opendaylight.yangtools.yang.common.QName; /** NXM field for NXM_NX_TUN_IPV4_SRC **/ public abstract class TcpFlag extends MatchField { public static final QName QNAME = org.opendaylight.yangtools.yang.common.QName.create ("urn:opendaylight:openflow:oxm","2013-07-31","tcp_flag"); public TcpFlag() { } } package org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731; import org.opendaylight.yangtools.yang.binding.BaseIdentity; import org.opendaylight.yangtools.yang.common.QName; /** Base identity for OXM Fields **/ public abstract class MatchField extends BaseIdentity { public static final QName QNAME = org.opendaylight.yangtools.yang.common.QName.create ("urn:opendaylight:openflow:oxm","2013-07-31","match-field"); public MatchField() { } } package org.opendaylight.yangtools.yang.binding; ! public abstract class BaseIdentity { public static final org.opendaylight.yangtools.yang.binding.BaseIdentity INSTANCE; protected BaseIdentity() { /* compiled code */ } }
    • Match Initializer public static void registerMatchEntrySerializers(SerializerRegistry serializerRegistry) { // register OF v1.3 OpenflowBasicClass match entry serializers Class<OpenflowBasicClass> oxmClass = OpenflowBasicClass.class; OF13MatchEntriesRegistryHelper<OpenflowBasicClass> registryHelper = new OF13MatchEntriesRegistryHelper<>(EncodeConstants.OF13_VERSION_ID, oxmClass, serializerRegistry); registryHelper.registerSerializer(InPort.class, new OxmInPortSerializer()); registryHelper.registerSerializer(InPhyPort.class, new OxmInPhyPortSerializer()); ! // register OF v1.3 NXM1Class match entry serializer Class<Nxm1Class> nxm1Class = Nxm1Class.class; OF13MatchEntriesRegistryHelper<Nxm1Class> nxm1RegistryHelper = new OF13MatchEntriesRegistryHelper<>(EncodeConstants.OF13_VERSION_ID, nxm1Class, serializerRegistry); nxm1RegistryHelper.registerSerializer(TcpFlag.class, new NxmTcpFlagSerializer()); }
    • OXM Serializer public class NxmTcpFlagSerializer extends AbstractOxmMatchEntrySerializer { @Override public void serialize(MatchEntries entry, ByteBuf outBuffer) { super.serialize(entry, outBuffer); outBuffer.writeShort(entry.getAugmentation(TcpFlagMatchEntry.class).getTcpFlag().shortValue()); writeMask(entry, outBuffer, getValueLength()); } @Override protected int getOxmClassCode() { return OxmMatchConstants.NXM_1_CLASS; } @Override protected int getOxmFieldCode() { return OxmMatchConstants.NXM_NX_TCP_FLAG; } @Override protected int getValueLength() { return EncodeConstants.SIZE_OF_SHORT_IN_BYTES; } }
    • Connecting Low-Level and High Level Models! • Statically defined conversions do NOT get destroyed when a model deprecates fields. • OpenflowPlugin Yang File Match_Types use hyphens ("-") while Table_Types use underscores ("_"). • When testing it might help to name things uniquely so it is obvious if you build the wrong directory and all of your classes and pojos have now refactored themselves into something else. Being able to spot that is the difference between t-shooting for 15 minutes vs. 4 hours. • Conversion is pretty easy to follow the patterns. Heavily typed in each project. • Recommend unique naming between low/high level models to avoid human error. • Lots of boiler plate code that could use some abstraction. • TODO: Create generic interfaces for the user that has constructors for common values/routines. • Augment to include JSON models which would is more native to developers then networking specific Yang. • Higher order models should contain higher order constructs rather then primitives such as uint16, uint32 etc, or at least some enums. • Logging needs to be sanitized. Current logging adds confusion if they are not proficient in the Yangtools implementation. • Yangtools is YangCore. Add the ability to augment from a given project, as opposed to only upstream in the MD_SAL. else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlag.class)) {! setMatchEntry(matchEntryBuilder, org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.TcpFlag.class, currMatch.isHasMask());! } else if (currMatchType! .equals(TcpFlag.class)) {! setMatchEntry(matchEntryBuilder, TcpFlag.class, currMatch.isHasMask());! } .equals Openflowjava Openflowplugin Controller
    • OXM Deserializer public class NxmTcpFlagDeserializer extends AbstractOxmMatchEntryDeserializer implements OFDeserializer<MatchEntries> { @Override public MatchEntries deserialize(ByteBuf input) { MatchEntriesBuilder builder = processHeader(getOxmClass(), getOxmField(), input); addTcpFlagAugmentation(input, builder); if (builder.isHasMask()) { OxmMaskDeserializer.addMaskAugmentation(builder, input, EncodeConstants.SIZE_OF_SHORT_IN_BYTES); } return builder.build(); } private static void addTcpFlagAugmentation(ByteBuf input, MatchEntriesBuilder builder) { TcpFlagMatchEntryBuilder tcpFlagMatchEntryBuilder = new TcpFlagMatchEntryBuilder(); Short tcpFlag = input.readShort(); tcpFlagMatchEntryBuilder.setTcpFlag(tcpFlag.shortValue()); builder.addAugmentation(TcpFlagMatchEntry.class, tcpFlagMatchEntryBuilder.build()); } @Override protected Class<? extends MatchField> getOxmField() { return TcpFlag.class; } @Override protected Class<? extends Clazz> getOxmClass() { return Nxm1Class.class; } }
    • OpenFlow Plugin MatchConvertorImpl.java ! Layer3Match layer3Match = match.getLayer3Match(); if (layer3Match != null) { if (layer3Match instanceof Ipv4Match) { Ipv4Match ipv4Match = (Ipv4Match) layer3Match; if (ipv4Match.getIpv4Source() != null) { matchEntriesList.add(toOfIpv4Prefix(Ipv4Src.class, ipv4Match.getIpv4Source())); } if (ipv4Match.getIpv4Destination() != null) { matchEntriesList.add(toOfIpv4Prefix(Ipv4Dst.class, ipv4Match.getIpv4Destination())); } } // NXM Tunnel Src/Dst if (layer3Match instanceof TunnelIpv4Match) { TunnelIpv4Match tunnelIpv4Src = (TunnelIpv4Match) layer3Match; if (tunnelIpv4Src.getTunnelIpv4Source() != null) { matchEntriesList.add(toOfIpv4Prefix(TunnelIpv4Src.class, tunnelIpv4Src.getTunnelIpv4Source())); } if (tunnelIpv4Src.getTunnelIpv4Destination() != null) { matchEntriesList.add(toOfIpv4Prefix(TunnelIpv4Dst.class, tunnelIpv4Src.getTunnelIpv4Destination())); }
    • OpenFlow Plugin TableFeaturesConvertor.java // NXM Tunnel IPv4 Dst } else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Dst.class)) { setMatchEntry(matchEntryBuilder, TunnelIpv4Dst.class, currMatch.isHasMask()); // NXM Tunnel IPv4 Src } else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Src.class)) { setMatchEntry(matchEntryBuilder, TunnelIpv4Src.class, currMatch.isHasMask()); // NXM TCP_Flag } else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlag.class)) { setMatchEntry(matchEntryBuilder, TcpFlag.class, currMatch.isHasMask()); }
    • OpenFlowPlugin TableFeaturesReplyConvertor.java // NXM Tunnel IPv4 Dst } else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Dst.class)) { setMatchEntry(matchEntryBuilder, TunnelIpv4Dst.class, currMatch.isHasMask()); // NXM Tunnel IPv4 Src } else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Src.class)) { setMatchEntry(matchEntryBuilder, TunnelIpv4Src.class, currMatch.isHasMask()); // NXM TCP_Flag } else if (currMatchType.equals(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlag.class)) { setMatchEntry(matchEntryBuilder, TcpFlag.class, currMatch.isHasMask()); } setFieldMatchBuilder.setMatchType(salMatchField); if (setHasMask) { setFieldMatchBuilder.setHasMask(currMatch.isHasMask()); } setFieldMatchList.add(setFieldMatchBuilder.build()); } return setFieldMatchList; }
    • Test-Provider-Service (openflowplugin) • Start Here!! • Following along if you have not used this service yet, it is likely the most valuable component for the user for educating, testing and validation. ! $ git clone https://git.opendaylight.org/gerrit/openflowplugin.git $ cd openflowplugin/distribution/base/ $ mvn clean install -DskipTests $ cd target/distributions-openflowplugin-base-0.0.3-SNAPSHOT-osgipackage/ opendaylight/ $ ./run.sh
    • MatchBuilder && ActionBuilder private static MatchBuilder createVlanMatch() { MatchBuilder match = new MatchBuilder(); VlanMatchBuilder vlanBuilder = new VlanMatchBuilder(); // vlan match VlanIdBuilder vlanIdBuilder = new VlanIdBuilder(); VlanId vlanId = new VlanId(10); VlanPcp vpcp = new VlanPcp((short) 3); vlanBuilder.setVlanPcp(vpcp); vlanIdBuilder.setVlanId(vlanId); vlanIdBuilder.setVlanIdPresent(true); vlanBuilder.setVlanId(vlanIdBuilder.build()); match.setVlanMatch(vlanBuilder.build()); return match; } ! ! private static InstructionsBuilder createGotoTableInstructions() { ! GoToTableBuilder aab = new GoToTableBuilder(); aab.setTableId((short) 2); ! InstructionBuilder ib = new InstructionBuilder(); ib.setInstruction(new GoToTableCaseBuilder().setGoToTable(aab.build()).build()); ! // Put our Instruction in a list of Instructions InstructionsBuilder isb = new InstructionsBuilder(); List<Instruction> instructions = new ArrayList<Instruction>(); instructions.add(ib.build()); isb.setInstruction(instructions); return isb; }
    • OpenflowpluginTestCommandProvider case "f48": id += 48; flow.setMatch(createTunnelIDMatch().build()); flow.setInstructions(createGotoTableInstructions().build()); break; case "f49": id += 49; flow.setMatch(createVlanMatch().build()); flow.setInstructions(createMeterInstructions().build()); break; Run the above block of code from the OSGI console: osgi> addMDFlow foo:node:1 f49 Or attach an OVS node and use its DPID (printNodes for DPID): osgi> addMDFlow openflow:213570950745421 f13
    • RM Flowmod removeMDFlow openflow:213570950745421 f47
    • Remote OSGI Debugging Eclipse Setup- http://alagalah.wordpress.com/2013/12/14/debugging-opendaylight-in-eclipse/ Start OSGI with remote debugging enabled: # ./run.sh -debugport 5005 -debugsuspend
    • Can be run against a real datapath also vi /usr/share/openvswitch/scripts/ovs-ctl! ! # Start ovs-vswitchd. set ovs-vswitchd unix:"$DB_SOCK" set "$@" -vconsole:emer -vsyslog:dbg -vfile:dbg if test X"$MLOCKALL" != Xno; then set "$@" --mlockall 2014-05-15T23:27:21.927Z|08067|poll_loop|DBG|wakeup due to 0-ms timeout at ofproto/ofproto-dpif.c:1595 (0% CPU usage) 2014-05-15T23:27:21.934Z|08068|poll_loop|DBG|wakeup due to [POLLIN] on fd 34 (192.168.1.49:60967<->192.168.1.47:6633) at lib/stream-fd.c:124 (0% CPU usage) 2014-05-15T23:27:21.934Z|08069|vconn|DBG|tcp:192.168.1.47:6633: received: OFPT_BARRIER_REQUEST (OF1.3) (xid=0x175): 2014-05-15T23:27:21.934Z|08070|vconn|DBG|tcp:192.168.1.47:6633: sent (Success): OFPT_BARRIER_REPLY (OF1.3) (xid=0x175): 2014-05-15T23:27:21.936Z|08071|poll_loop|DBG|wakeup due to [POLLIN] on fd 34 (192.168.1.49:60967<->192.168.1.47:6633) at lib/stream-fd.c:124 (0% CPU usage) 2014-05-15T23:27:21.936Z|08072|vconn|DBG|tcp:192.168.1.47:6633: received: OFPST_FLOW request (OF1.3) (xid=0x174): table=10 tun_id=0x582,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00! 2014-05-15T23:27:21.936Z|08073|vconn|DBG|tcp:192.168.1.47:6633: sent (Success): OFPST_FLOW reply (OF1.3) (xid=0x174): 2014-05-15T23:27:21.937Z|08074|poll_loop|DBG|wakeup due to [POLLIN] on fd 34 (192.168.1.49:60967<->192.168.1.47:6633) at lib/stream-fd.c:124 (0% CPU usage) 2014-05-15T23:27:21.937Z|08075|vconn|DBG|tcp:192.168.1.47:6633: received: OFPT_FLOW_MOD (OF1.3) (xid=0x176): ADD table:10 priority=16384,tun_id=0x582,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 send_flow_rem actions=output:2,goto_table:20
    • When TestOpenFlowProvider Breaks osgi> printNodes Nodes connected to this controller : [MD_SAL|openflow:112583260431181] osgi> addMDFlow openflow:112583260431181 f45 $ addMDFlow openflow:12345678910 f86 osgi> gogo: InvocationTargetException: null =========================================== Rebuild Controller! not just opendaylight/md-sal/model/ $ cd controller/ $ mvn clean install ! ### For Netty ByteBuff Debugging ### setLogLevel org.opendaylight.openflowjava.protocol.impl.core DEBUG ! ! !
    • Debugging FlowMods in OVS $ vi /usr/share/openvswitch/scripts/ovs-ctl! ! # Start ovs-vswitchd. set ovs-vswitchd unix:"$DB_SOCK" set "$@" -vconsole:emer -vsyslog:dbg -vfile:dbg if test X"$MLOCKALL" != Xno; then set "$@" --mlockall ! alias ologs="tail -n 300 /var/log/openvswitch/ovs-vswitchd.log" alias ologs="tail -n 300 /var/log/openvswitch/ovs-vswitchd.log" alias ologf="tail -f /var/log/openvswitch/ovs-vswitchd.log" alias ologd='echo > /var/log/openvswitch/ovs-vswitchd.log' alias ologm='grep -A 20 -B 20 OFPT_FLOW_MOD /var/log/openvswitch/ovs- vswitchd.log' alias ologd='echo > /var/log/openvswitch/ovs-vswitchd.log' alias ologm='grep -A 20 -B 20 OFPT_FLOW_MOD /var/log/openvswitch/ovs- vswitchd.log' alias ologd='echo > /var/log/openvswitch/ovs-vswitchd.log' setLogLevel org.opendaylight.openflowjava.protocol.impl.core DEBUG However, best bet is to use OVS debugging logs.
    • When You Cant Get Anything to Work Anymore $ rm -r ~/.m2/repository/org/opendaylight/openflowplugin/ $ rm -r ~/.m2/repository/org/opendaylight/openflowjava/ $ rm -r ~/.m2/repository/org/opendaylight/controller/model/ $ rm -r ~/.m2/repository/org/opendaylight/controller/md/
    • If a binding is missing.! • If an auto-generated class/POJO is missing, all projects (ofjava/ofplug/controller) will compile but fail on Bind attempts. • More compile time tests and updated aliases to remove -Dskiptests
    • OSGI Logging • If we truly want community adoption, then prior to Helium, please lets focus on OSGI logs generated by MD_SAL. • As a consumer of the MD_SAL it is easily the most frustrating aspect and the most time consuming aspect.
    • How Does Inventory Work? java.lang.NullPointerException: List node (urn:opendaylight:flow:inventory?revision=2013-08-19)action MUST contain leaf (urn:opendaylight:flow:inventory?revision=2013-08-19)order with value. at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:235) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$ListItemNormalization.createBuilder(DataNormalizationOperation.java:280) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:167) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:196) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:193) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:196) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:193) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:196) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:193) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationOperation$CompositeNodeNormalizationOperation.normalize(DataNormalizationOperation.java:196) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer.toNormalized(DataNormalizer.java:115) ~[na:na] at org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizer.toNormalized(DataNormalizer.java:76) ~[na:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:86) ~[na:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:78) ~[na:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedTransaction.doMergeWithEnsureParents(AbstractForwardedTransaction.java:123) ~[na:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker $ForwardedBackwardsCompatibleTransacion.putOperationalData(ForwardedBackwardsCompatibleDataBroker.java:226) ~[na:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker $ForwardedBackwardsCompatibleTransacion.putOperationalData(ForwardedBackwardsCompatibleDataBroker.java:195) ~[na:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.writeFlow(OF13ProviderManager.java:1551) [bundlefile:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.handleLocalInPort(OF13ProviderManager.java:1039) [bundlefile:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.programLocalBridgeRules(OF13ProviderManager.java:309) [bundlefile:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.programLocalRules(OF13ProviderManager.java:551) [bundlefile:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.handleInterfaceUpdate(OF13ProviderManager.java:756) [bundlefile:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.triggerInterfaceUpdates(OF13ProviderManager.java:784) [bundlefile:na] at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.initializeOFFlowRules(OF13ProviderManager.java:2502) [bundlefile:na] at org.opendaylight.ovsdb.neutron.SouthboundHandler.notifyNode(SouthboundHandler.java:313) [bundlefile:na] at org.opendaylight.controller.switchmanager.internal.SwitchManager.notifyNode(SwitchManager.java:1814) [bundlefile:na] at org.opendaylight.controller.switchmanager.internal.SwitchManager.addNode(SwitchManager.java:1036) [bundlefile:na] at org.opendaylight.controller.switchmanager.internal.SwitchManager.updateNode(SwitchManager.java:1137) [bundlefile:na] at org.opendaylight.controller.sal.implementation.internal.Inventory.updateNode(Inventory.java:115) [bundlefile:na] at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.publishNodeUpdate(InventoryAndReadAdapter.java:1039) [bundlefile:na] at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter.onNodeUpdated(InventoryAndReadAdapter.java:635) [bundlefile:na] at org.opendaylight.controller.sal.compatibility.InventoryAndReadAdapter$$Broker$ListenerInvoker.onNotification(InventoryAndReadAdapter$$Broker !2014-05-18 03:23:35.683 EDT [nioEventLoopGroup-11-5] INFO o.o.o.p.i.c.PublishingChannelInitializer - Incoming connection accepted - building pipeline 2014-05-18 03:23:35.771 EDT [nioEventLoopGroup-11-5] INFO o.o.o.p.i.c.ConnectionAdapterImpl - Hello received / branch 2014-05-18 03:23:35.910 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/ (urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:231835414490694}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)description 2014-05-18 03:23:35.913 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/ (urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:231835414490694}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)hardware 2014-05-18 03:23:35.914 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/ (urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:231835414490694}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer 2014-05-18 03:23:35.914 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/ (urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:231835414490694}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number 2014-05-18 03:23:35.914 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/ (urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:231835414490694}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)software
    • Ports and Topology Pys vs. vPort? [_value=openflow:187231598612550:2] [_value=openflow:DPID:Port]
    • Mapping Errors to Models java.lang.NullPointerException: List node (urn:opendaylight:flow:inventory?revision=2013-08-19)action MUST contain leaf (urn:opendaylight:flow:inventory?revision=2013-08-19)order with value.
    • Generated POJOs Located in src/ or target/ Depending on the Project
    • And Warcraft?? Seriously.. Wtf.. The only Yang related tool I found was for Sublime Yang ! Modeling Tools
    • !!2014-05-18 23:13:03.850 EDT [nioEventLoopGroup-10-3] INFO o.o.o.p.i.c.PublishingChannelInitializer - Incoming connection from (remote address): /172.16.86.128:54226 --> :6633 2014-05-18 23:13:03.852 EDT [nioEventLoopGroup-10-3] INFO o.o.o.p.i.c.PublishingChannelInitializer - Incoming connection accepted - building pipeline 2014-05-18 23:13:03.860 EDT [nioEventLoopGroup-10-3] INFO o.o.o.p.i.c.ConnectionAdapterImpl - Hello received / branch 2014-05-18 23:13:03.886 EDT [md-sal-binding-notification-99] INFO o.o.o.n.provider.OF13ProviderManager - Compare openflowNode to OVS br-int node openflow:249065639468610 vs 249065639468610 2014-05-18 23:13:03.890 EDT [md-sal-binding-notification-101] INFO o.o.c.m.s.manager.StatisticsProvider - Attempted to get non-existing handler for Uri [_value=openflow:249065639468610] 2014-05-18 23:13:03.895 EDT [pool-14-thread-2] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)description 2014-05-18 23:13:03.896 EDT [pool-14-thread-2] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)hardware 2014-05-18 23:13:03.896 EDT [pool-14-thread-2] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer 2014-05-18 23:13:03.896 EDT [pool-14-thread-2] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number 2014-05-18 23:13:03.896 EDT [pool-14-thread-2] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)software 2014-05-18 23:13:03.898 EDT [md-sal-binding-notification-99] INFO o.o.o.n.provider.OF13ProviderManager - Transaction Status COMMITED for Flow LLDP 2014-05-18 23:13:03.898 EDT [md-sal-binding-notification-99] INFO o.o.o.n.provider.OF13ProviderManager - Trigger Interface update for Interface [name=br-int, options={}, type=, ofport=[65534], mac=[], statistics={tx_errors=0, collisions=0, tx_bytes=0, rx_crc_err=0, rx_dropped=0, tx_packets=0, rx_packets=0, rx_over_err=0, tx_dropped=0, rx_frame_err=0, rx_errors=0, rx_bytes=0}, status={driver_name=openvswitch}, other_config={}, external_ids={}] 2014-05-18 23:13:03.898 EDT [md-sal-binding-notification-99] INFO o.o.o.n.provider.OF13ProviderManager - Compare openflowNode to OVS br-int node openflow:249065639468610 vs 279770740358729 2014-05-18 23:13:03.907 EDT [pool-18-thread-1] INFO o.o.o.n.provider.OF13ProviderManager - Transaction Status COMMITED for Flow LLDP 2014-05-18 23:13:03.907 EDT [pool-18-thread-1] INFO o.o.o.n.provider.OF13ProviderManager - Trigger Interface update for Interface [name=br-int, options={}, type=, ofport=[65534], mac=[], statistics={tx_errors=0, collisions=0, tx_bytes=0, rx_crc_err=0, rx_dropped=0, tx_packets=0, rx_packets=0, rx_over_err=0, tx_dropped=0, rx_frame_err=0, rx_errors=0, rx_bytes=0}, status={driver_name=openvswitch}, other_config={}, external_ids={}] 2014-05-18 23:13:05.010 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics 2014-05-18 23:13:05.011 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.BindingToNormalizedNodeCodec - Failed to deserialize (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}=ImmutableAugmentationNode{nodeIdentifier=AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)flags, value=[SEND_FLOW_REM], attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)idle-timeout, value=0, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)byte-count, value=0, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)cookie, value=0, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)hard-timeout, value=0, attributes={}}, ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)match, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-type, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)type, value=35020, attributes={}}], attributes={}}], attributes={}}], attributes={}}, ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)duration, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)nanosecond, value=989000000, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)second, value=0, attributes={}}], attributes={}}, ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)instructions, value=[ImmutableMapNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction, value=[ImmutableMapEntryNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}], value=[ImmutableChoiceNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)apply-actions, value=[ImmutableMapNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)action, value=[ImmutableMapEntryNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)action[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}], value=[ImmutableChoiceNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)action, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)output-action, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics? revision=2013-08-19)output-node-connector, value=4294967293, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)max-length, value=0, attributes={}}], attributes={}}]}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)order, value=0, attributes={}}], attributes={}}]}], attributes={}}]}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)order, value=0, attributes={}}], attributes={}}]}], attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)packet-count, value=0, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)priority, value=32768, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)table_id, value=0, attributes={}}], attributes={}}]} to Binding format. Binding path is: KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri [_value=openflow:249065639468610]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table[key=TableKey [_id=0]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow[key=FlowKey [_id=Uri [_value=LLDP]]]]} 2014-05-18 23:13:05.012 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics? revision=2013-08-19)match/(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match/(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-type 2014-05-18 23:13:05.013 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)match/(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match/(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-type=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-type, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)type, value=35020, attributes={}}], attributes={}}, omitting it org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Entry deserialization failed at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:332) ~[bundlefile:na] at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.fromDataDom(RuntimeMappingModule.java:147) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBindingImpl(BindingToNormalizedNodeCodec.java:183) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:132) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:233) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:99) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:183) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getCreatedOperationalData(LegacyDataChangeEvent.java:108) [bundlefile:na] at org.opendaylight.controller.md.statistics.manager.FlowCapableTracker.onDataChanged(FlowCapableTracker.java:93) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$BackwardsCompatibleOperationalDataChangeInvoker.onDataChanged(ForwardedBackwardsCompatibleDataBroker.java:434) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:158) [bundlefile:na] at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_55] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55] Caused by: java.lang.IllegalStateException: Failed to lookup instantiated type for path SchemaPath [path=[(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:flow:inventory?revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)flow, (urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics], absolute=true] at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:208) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl._deserializePathArgument(InstanceIdentifierCodecImpl.java:94) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:193) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:66) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:329) ~[bundlefile:na] ... 16 common frames omitted 2014-05-18 23:13:05.014 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics? revision=2013-08-19)instructions/(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)apply-actions/(urn:opendaylight:flow:statistics?revision=2013-08-19)action[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)output-action 2014-05-18 23:13:05.014 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)instructions/(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction/(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}]/(urn:opendaylight:flow:statistics? revision=2013-08-19)instruction/(urn:opendaylight:flow:statistics?revision=2013-08-19)apply-actions/(urn:opendaylight:flow:statistics?revision=2013-08-19)action/(urn:opendaylight:flow:statistics?revision=2013-08-19)action[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)action/(urn:opendaylight:flow:statistics?revision=2013-08-19)output-action=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)output-action, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)output-node-connector, value=4294967293, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)max-length, value=0, attributes={}}], attributes={}}, omitting it org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Entry deserialization failed at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:332) ~[bundlefile:na] at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.fromDataDom(RuntimeMappingModule.java:147) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBindingImpl(BindingToNormalizedNodeCodec.java:183) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:132) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:233) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:99) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:183) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getCreatedOperationalData(LegacyDataChangeEvent.java:108) [bundlefile:na] at org.opendaylight.controller.md.statistics.manager.FlowCapableTracker.onDataChanged(FlowCapableTracker.java:93) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$BackwardsCompatibleOperationalDataChangeInvoker.onDataChanged(ForwardedBackwardsCompatibleDataBroker.java:434) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:158) [bundlefile:na] at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_55] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55] Caused by: java.lang.IllegalStateException: Failed to lookup instantiated type for path SchemaPath [path=[(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:flow:inventory?revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)flow, (urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics], absolute=true] at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:208) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl._deserializePathArgument(InstanceIdentifierCodecImpl.java:94) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:193) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:66) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:329) ~[bundlefile:na] ... 16 common frames omitted 2014-05-18 23:13:05.015 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics? revision=2013-08-19)instructions/(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}] 2014-05-18 23:13:05.016 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)instructions/(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction/(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction[{(urn:opendaylight:flow:statistics? revision=2013-08-19)order=0}]=ImmutableMapEntryNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction[{(urn:opendaylight:flow:statistics?revision=2013-08-19)order=0}], value=[ImmutableChoiceNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)instruction, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)apply-actions, value=[ImmutableMapNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)action, value=[ImmutableMapEntryNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)action[{(urn:opendaylight:flow:statistics? revision=2013-08-19)order=0}], value=[ImmutableChoiceNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)action, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)output-action, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)output-node-connector, value=4294967293, attributes={}}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)max-length, value=0, attributes={}}], attributes={}}]}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)order, value=0, attributes={}}], attributes={}}]}], attributes={}}]}, ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)order, value=0, attributes={}}], attributes={}}, omitting it org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Entry deserialization failed at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:332) ~[bundlefile:na] at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.fromDataDom(RuntimeMappingModule.java:147) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBindingImpl(BindingToNormalizedNodeCodec.java:183) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:132) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:233) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:99) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:183) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getCreatedOperationalData(LegacyDataChangeEvent.java:108) [bundlefile:na] at org.opendaylight.controller.md.statistics.manager.FlowCapableTracker.onDataChanged(FlowCapableTracker.java:93) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$BackwardsCompatibleOperationalDataChangeInvoker.onDataChanged(ForwardedBackwardsCompatibleDataBroker.java:434) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:158) [bundlefile:na] at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_55] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55] Caused by: java.lang.IllegalStateException: Failed to lookup instantiated type for path SchemaPath [path=[(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:flow:inventory?revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)flow, (urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics], absolute=true] at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:208) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl._deserializePathArgument(InstanceIdentifierCodecImpl.java:94) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:193) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:66) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:329) ~[bundlefile:na] ... 16 common frames omitted 2014-05-18 23:13:05.016 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics? revision=2013-08-19)match/(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match 2014-05-18 23:13:05.017 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)match/(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-type, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)type, value=35020, attributes={}}], attributes={}}], attributes={}}, omitting it org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Entry deserialization failed at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:332) ~[bundlefile:na] at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.fromDataDom(RuntimeMappingModule.java:147) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBindingImpl(BindingToNormalizedNodeCodec.java:183) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:132) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:233) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:99) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:183) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getCreatedOperationalData(LegacyDataChangeEvent.java:108) [bundlefile:na] at org.opendaylight.controller.md.statistics.manager.FlowCapableTracker.onDataChanged(FlowCapableTracker.java:93) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$BackwardsCompatibleOperationalDataChangeInvoker.onDataChanged(ForwardedBackwardsCompatibleDataBroker.java:434) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:158) [bundlefile:na] at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_55] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55] Caused by: java.lang.IllegalStateException: Failed to lookup instantiated type for path SchemaPath [path=[(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:flow:inventory?revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)flow, (urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics], absolute=true] at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:208) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl._deserializePathArgument(InstanceIdentifierCodecImpl.java:94) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:193) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:66) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:329) ~[bundlefile:na] ... 16 common frames omitted 2014-05-18 23:13:05.018 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)match 2014-05-18 23:13:05.019 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)match=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)match, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-match, value=[ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)ethernet-type, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)type, value=35020, attributes={}}], attributes={}}], attributes={}}], attributes={}}, omitting it org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException: Entry deserialization failed at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:332) ~[bundlefile:na] at org.opendaylight.controller.config.yang.md.sal.binding.impl.RuntimeMappingModule$RuntimeGeneratedMappingServiceProxy.fromDataDom(RuntimeMappingModule.java:147) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBindingImpl(BindingToNormalizedNodeCodec.java:183) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:132) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toBinding(BindingToNormalizedNodeCodec.java:233) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.toBinding(AbstractForwardedDataBroker.java:99) ~[bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatedDataChangeEvent.getCreatedData(AbstractForwardedDataBroker.java:183) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.LegacyDataChangeEvent$OperationalChangeEvent.getCreatedOperationalData(LegacyDataChangeEvent.java:108) [bundlefile:na] at org.opendaylight.controller.md.statistics.manager.FlowCapableTracker.onDataChanged(FlowCapableTracker.java:93) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker$BackwardsCompatibleOperationalDataChangeInvoker.onDataChanged(ForwardedBackwardsCompatibleDataBroker.java:434) [bundlefile:na] at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker$TranslatingDataChangeInvoker.onDataChanged(AbstractForwardedDataBroker.java:158) [bundlefile:na] at org.opendaylight.controller.md.sal.dom.store.impl.ChangeListenerNotifyTask.run(ChangeListenerNotifyTask.java:33) [bundlefile:na] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_55] at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_55] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_55] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_55] Caused by: java.lang.IllegalStateException: Failed to lookup instantiated type for path SchemaPath [path=[(urn:opendaylight:inventory?revision=2013-08-19)nodes, (urn:opendaylight:inventory?revision=2013-08-19)node, (urn:opendaylight:flow:inventory?revision=2013-08-19)table, (urn:opendaylight:flow:inventory?revision=2013-08-19)flow, (urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics], absolute=true] at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.LazyGeneratedCodecRegistry.getClassForPath(LazyGeneratedCodecRegistry.java:208) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl._deserializePathArgument(InstanceIdentifierCodecImpl.java:94) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserializePathArgument(InstanceIdentifierCodecImpl.java:193) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.InstanceIdentifierCodecImpl.deserialize(InstanceIdentifierCodecImpl.java:66) ~[bundlefile:na] at org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl.fromDataDom(RuntimeGeneratedMappingServiceImpl.java:329) ~[bundlefile:na] ... 16 common frames omitted 2014-05-18 23:13:05.020 EDT [pool-14-thread-1] WARN o.o.y.s.b.g.i.RuntimeGeneratedMappingServiceImpl - Failed to deserialize entry (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics? revision=2013-08-19)duration 2014-05-18 23:13:05.021 EDT [pool-14-thread-1] WARN o.o.c.m.s.b.i.AbstractForwardedDataBroker - Failed to transform (urn:opendaylight:inventory?revision=2013-08-19)nodes/(urn:opendaylight:inventory?revision=2013-08-19)node/(urn:opendaylight:inventory?revision=2013-08-19)node[{(urn:opendaylight:inventory?revision=2013-08-19)id=openflow:249065639468610}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:inventory?revision=2013-08-19)description, (urn:opendaylight:flow:inventory?revision=2013-08-19)group, (urn:opendaylight:flow:inventory?revision=2013-08-19)hardware, (urn:opendaylight:flow:inventory?revision=2013-08-19)manufacturer, (urn:opendaylight:flow:inventory? revision=2013-08-19)meter, (urn:opendaylight:flow:inventory?revision=2013-08-19)serial-number, (urn:opendaylight:flow:inventory?revision=2013-08-19)software, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-actions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-instructions, (urn:opendaylight:flow:inventory?revision=2013-08-19)supported-match-types, (urn:opendaylight:flow:inventory?revision=2013-08-19)switch-features, (urn:opendaylight:flow:inventory?revision=2013-08-19)table]}/(urn:opendaylight:flow:inventory?revision=2013-08-19)table/(urn:opendaylight:flow:inventory?revision=2013-08-19)table[{(urn:opendaylight:flow:inventory? revision=2013-08-19)id=0}]/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow/(urn:opendaylight:flow:inventory?revision=2013-08-19)flow[{(urn:opendaylight:flow:inventory?revision=2013-08-19)id=LLDP}]/AugmentationIdentifier{childNames=[(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics]}/(urn:opendaylight:flow:statistics?revision=2013-08-19)flow-statistics/(urn:opendaylight:flow:statistics?revision=2013-08-19)duration=ImmutableContainerNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)duration, value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:flow:statistics?revision=2013-08-19)nanosecond My Case for Turning off Flow Statistics Logging! Until Thoroughly Debugged and Operational
    • Things I think would be Helpful • We need to engage the community to contribute, not feature requests to the project to scale. ✦ Examples, Examples, Examples. ✦ OFTestCommandProvider is the Holy Grail and needs to be treated as such. It is the reference implementation, if its wrong, so will the rest be. ✦ NodeConnectors need clarity. Most think in ports, not topology. We are missing an abstraction to say otherwise. ✦ Understand where MD_SAL stops and OFPlugin Starts. ✦ Is MD_SAL + OFPlugin and AD_SAL + OpenflowJ two separate controllers? <-Not trying to stir it up here, I just don’t see the connections short of modules running in OSGI. ✦ OVS specific system integration tests. TestCommandProvider tests the kitchen sink. No datapath can pass all of those so we wind up with expected failures that we will ignore until we shouldn't ignore and it breaks a project. ✦ Turn off FlowStatistics Exception Logs until they are less verbose. ✦ Add debug and trace logging statements to help the consumer not just core MD_SAL devs. Two different needs and levels of understand. ✦ More IT/UT/CI tests. Need examples and tests for all flowmod CRUD operations.
    • /* Some Extra Notes ! ! ### Controller ### ! Yang Models (High Level) -------------------- ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/ ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-action-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-flow-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-group-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-match-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-meter-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-port-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-queue-types.yang ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang/opendaylight-table-types.yang ! Generated Classes -------------- ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/ ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight/action/types/rev131112 ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight/flow/types ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight/group/types/rev131018 ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight/meter/types/rev130918 ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight/model/match/types/rev131026 ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/ urn/opendaylight/table/types/rev131026 ! !
    • Yang Models (Low Level) ### OpenFlowJava ### ------------------- ~/openflowjava/openflow-protocol-api/src/main/yang ~/openflowjava/openflow-protocol-api/src/main/yang/openflow-action.yang ~/openflowjava/openflow-protocol-api/src/main/yang/openflow-augments.yang ~/openflowjava/openflow-protocol-api/src/main/yang/openflow-extensible-match.yang *** ~/openflowjava/openflow-protocol-api/src/main/yang/openflow-instruction.yang ~/openflowjava/openflow-protocol-api/src/main/yang/openflow-protocol.yang ~/openflowjava/openflow-protocol-api/src/main/yang/openflow-types.yang ~/openflowjava/openflow-protocol-api/src/main/yang/system-notifications.yang ! Generated Classes -------------- ~/openflowjava/openflow-protocol-api/target/generated-sources/sal ~/openflowjava/openflow-protocol-api/target/generated-sources/sal/org/ opendaylight/yang/gen/v1/urn/opendaylight/openflow ~/openflowjava/openflow-protocol-api/target/generated-sources/sal/org/ opendaylight/yang/gen/v1/urn/opendaylight/openflow/augments/rev131002 ~/openflowjava/openflow-protocol-api/target/generated-sources/sal/org/ opendaylight/yang/gen/v1/urn/opendaylight/openflow/common ~/openflowjava/openflow-protocol-api/target/generated-sources/sal/org/ opendaylight/yang/gen/v1/urn/opendaylight/openflow/oxm/rev130731 ~/openflowjava/openflow-protocol-api/target/generated-sources/sal/org/ opendaylight/yang/gen/v1/urn/opendaylight/openflow/protocol/rev130731 ~/openflowjava/openflow-protocol-api/target/generated-sources/sal/org/ opendaylight/yang/gen/v1/urn/opendaylight/openflow/system/rev130927 ! !
    • ### OpenFlowPlugin Translates Between Controller (HighLevel) and OpenflowJava (LowLevel) ! ### BUT Controller is not required for OF13 except for class generations from its Yang Models for TestCommandProvider. ###! ! SetFieldMatchBuilder Converts High order Controller to Low order Yang OXM Fields! -----------------------------------------------------------------! ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/table/types/rev131026/! ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/table/types/rev131026/set/field/ match! ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/table/types/rev131026/set/field/ match/SetFieldMatch.java! ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/table/types/rev131026/set/field/ match/SetFieldMatchBuilder.java! ~/controller/opendaylight/md-sal/model/model-flow-base/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/table/types/rev131026/set/field/ match/SetFieldMatchKey.java! ! Actions! -------! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionSetNwDstConvertorImpl.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionSetNwDstConvertorV10Impl.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionSetNwDstReactor.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ ActionSetNwDstReactorMappingFactory.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionSetNwSrcConvertorImpl.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionSetNwSrcConvertorV10Impl.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ActionSetNwSrcReactor.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/action/ ActionSetNwSrcReactorMappingFactory.java! ! Match! -----! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertor.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorImpl.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchConvertorV10Impl.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactor.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/match/MatchReactorMappingFactory.java! ! Convertors! ---------! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java! ~/openflowplugin/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertor.java