SlideShare a Scribd company logo
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

More Related Content

What's hot

PHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryPHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success Story
Michael Spector
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyDaniel Bimschas
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
Julien Vermillard
 
A Taste of Open Fabrics Interfaces
A Taste of Open Fabrics InterfacesA Taste of Open Fabrics Interfaces
A Taste of Open Fabrics Interfaces
seanhefty
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Arnaud Bouchez
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
Maarten Balliauw
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
Tim Burks
 
Coap based application for android phones
Coap based application for android phonesCoap based application for android phones
Coap based application for android phones
Md Syed Ahamad
 
Polyglot Applications with GraalVM
Polyglot Applications with GraalVMPolyglot Applications with GraalVM
Polyglot Applications with GraalVM
jexp
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabberl xf
 
Node js internal
Node js internalNode js internal
Node js internal
Chinh Ngo Nguyen
 
Servlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use CasesServlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use Cases
VMware Tanzu
 
What you need to know about .NET Core 3.0 and beyond
What you need to know about .NET Core 3.0 and beyondWhat you need to know about .NET Core 3.0 and beyond
What you need to know about .NET Core 3.0 and beyond
Jon Galloway
 
.NET Core Today and Tomorrow
.NET Core Today and Tomorrow.NET Core Today and Tomorrow
.NET Core Today and Tomorrow
Jon Galloway
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-Design
Arnaud Bouchez
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
Chun-Yu Wang
 
Build a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded SystemBuild a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded System
Jian-Hong Pan
 
Reactive Programming in Java and Spring Framework 5
Reactive Programming in Java and Spring Framework 5Reactive Programming in Java and Spring Framework 5
Reactive Programming in Java and Spring Framework 5
Richard Langlois P. Eng.
 
Understanding OpenFlow
Understanding OpenFlowUnderstanding OpenFlow
Understanding OpenFlow
Saurabh Agarwal
 

What's hot (20)

PHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success StoryPHP Development Tools 2.0 - Success Story
PHP Development Tools 2.0 - Success Story
 
Zero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with NettyZero-Copy Event-Driven Servers with Netty
Zero-Copy Event-Driven Servers with Netty
 
Hands on with CoAP and Californium
Hands on with CoAP and CaliforniumHands on with CoAP and Californium
Hands on with CoAP and Californium
 
A Taste of Open Fabrics Interfaces
A Taste of Open Fabrics InterfacesA Taste of Open Fabrics Interfaces
A Taste of Open Fabrics Interfaces
 
Java one2013
Java one2013Java one2013
Java one2013
 
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
Ekon20 mORMot Legacy Code Technical Debt Delphi Conference
 
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
ConFoo Montreal - Microservices for building an IDE - The innards of JetBrain...
 
Enforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code GenerationEnforcing API Design Rules for High Quality Code Generation
Enforcing API Design Rules for High Quality Code Generation
 
Coap based application for android phones
Coap based application for android phonesCoap based application for android phones
Coap based application for android phones
 
Polyglot Applications with GraalVM
Polyglot Applications with GraalVMPolyglot Applications with GraalVM
Polyglot Applications with GraalVM
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabber
 
Node js internal
Node js internalNode js internal
Node js internal
 
Servlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use CasesServlet vs Reactive Stacks in 5 Use Cases
Servlet vs Reactive Stacks in 5 Use Cases
 
What you need to know about .NET Core 3.0 and beyond
What you need to know about .NET Core 3.0 and beyondWhat you need to know about .NET Core 3.0 and beyond
What you need to know about .NET Core 3.0 and beyond
 
.NET Core Today and Tomorrow
.NET Core Today and Tomorrow.NET Core Today and Tomorrow
.NET Core Today and Tomorrow
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-Design
 
How to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machineHow to implement a simple dalvik virtual machine
How to implement a simple dalvik virtual machine
 
Build a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded SystemBuild a Micro HTTP Server for Embedded System
Build a Micro HTTP Server for Embedded System
 
Reactive Programming in Java and Spring Framework 5
Reactive Programming in Java and Spring Framework 5Reactive Programming in Java and Spring Framework 5
Reactive Programming in Java and Spring Framework 5
 
Understanding OpenFlow
Understanding OpenFlowUnderstanding OpenFlow
Understanding OpenFlow
 

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

Yang in ODL by Jan Medved
Yang in ODL by Jan MedvedYang in ODL by Jan Medved
Yang in ODL by Jan Medved
OpenDaylight
 
Sparkling Water 5 28-14
Sparkling Water 5 28-14Sparkling Water 5 28-14
Sparkling Water 5 28-14Sri Ambati
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache Airflow
Kaxil Naik
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300
Timothy Spann
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty Framework
OpenRestyCon
 
Sparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with SparkSparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with Spark
felixcss
 
Introduction to Cassandra and CQL for Java developers
Introduction to Cassandra and CQL for Java developersIntroduction to Cassandra and CQL for Java developers
Introduction to Cassandra and CQL for Java developers
Julien Anguenot
 
Enterprise Deep Learning with DL4J
Enterprise Deep Learning with DL4JEnterprise Deep Learning with DL4J
Enterprise Deep Learning with DL4J
Josh Patterson
 
Design for Scalability in ADAM
Design for Scalability in ADAMDesign for Scalability in ADAM
Design for Scalability in ADAMfnothaft
 
Real-time Streaming Pipelines with FLaNK
Real-time Streaming Pipelines with FLaNKReal-time Streaming Pipelines with FLaNK
Real-time Streaming Pipelines with FLaNK
Data Con LA
 
The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015
rvagg
 
Scalable up genomic analysis with ADAM
Scalable up genomic analysis with ADAMScalable up genomic analysis with ADAM
Scalable up genomic analysis with ADAM
fnothaft
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
Espen Brækken
 
Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020
Timothy Spann
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?
Ronny
 
Scaling PyData Up and Out
Scaling PyData Up and OutScaling PyData Up and Out
Scaling PyData Up and Out
Travis Oliphant
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
Takayuki Muranushi
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
Skills Matter
 
Guglielmo iozzia - Google I/O extended dublin 2018
Guglielmo iozzia - Google  I/O extended dublin 2018Guglielmo iozzia - Google  I/O extended dublin 2018
Guglielmo iozzia - Google I/O extended dublin 2018
Guglielmo Iozzia
 
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
Chris Fregly
 

Similar to Augmenting Flow Operations and Feedback on the Model Driven MD_SAL Approach in OpenDaylight (20)

Yang in ODL by Jan Medved
Yang in ODL by Jan MedvedYang in ODL by Jan Medved
Yang in ODL by Jan Medved
 
Sparkling Water 5 28-14
Sparkling Water 5 28-14Sparkling Water 5 28-14
Sparkling Water 5 28-14
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache Airflow
 
ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300ApacheCon 2021 - Apache NiFi Deep Dive 300
ApacheCon 2021 - Apache NiFi Deep Dive 300
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty Framework
 
Sparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with SparkSparkly Notebook: Interactive Analysis and Visualization with Spark
Sparkly Notebook: Interactive Analysis and Visualization with Spark
 
Introduction to Cassandra and CQL for Java developers
Introduction to Cassandra and CQL for Java developersIntroduction to Cassandra and CQL for Java developers
Introduction to Cassandra and CQL for Java developers
 
Enterprise Deep Learning with DL4J
Enterprise Deep Learning with DL4JEnterprise Deep Learning with DL4J
Enterprise Deep Learning with DL4J
 
Design for Scalability in ADAM
Design for Scalability in ADAMDesign for Scalability in ADAM
Design for Scalability in ADAM
 
Real-time Streaming Pipelines with FLaNK
Real-time Streaming Pipelines with FLaNKReal-time Streaming Pipelines with FLaNK
Real-time Streaming Pipelines with FLaNK
 
The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015The Future of Node - @rvagg - NodeConf Christchurch 2015
The Future of Node - @rvagg - NodeConf Christchurch 2015
 
Scalable up genomic analysis with ADAM
Scalable up genomic analysis with ADAMScalable up genomic analysis with ADAM
Scalable up genomic analysis with ADAM
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
 
Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020
 
Who pulls the strings?
Who pulls the strings?Who pulls the strings?
Who pulls the strings?
 
Scaling PyData Up and Out
Scaling PyData Up and OutScaling PyData Up and Out
Scaling PyData Up and Out
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Guglielmo iozzia - Google I/O extended dublin 2018
Guglielmo iozzia - Google  I/O extended dublin 2018Guglielmo iozzia - Google  I/O extended dublin 2018
Guglielmo iozzia - Google I/O extended dublin 2018
 
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
High Performance TensorFlow in Production -- Sydney ML / AI Train Workshop @ ...
 

More from Brent Salisbury

Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan Drivers
Brent Salisbury
 
Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...
Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...
Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...
Brent Salisbury
 
SDN Service Provider use cases Network Function Virtualization (NFV)
SDN Service Provider use cases Network Function Virtualization (NFV)SDN Service Provider use cases Network Function Virtualization (NFV)
SDN Service Provider use cases Network Function Virtualization (NFV)
Brent Salisbury
 
The Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on SecurityThe Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on Security
Brent Salisbury
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012
Brent Salisbury
 
OpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosOpenStack and OpenFlow Demos
OpenStack and OpenFlow Demos
Brent Salisbury
 

More from Brent Salisbury (6)

Docker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan DriversDocker Networking with New Ipvlan and Macvlan Drivers
Docker Networking with New Ipvlan and Macvlan Drivers
 
Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...
Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...
Network Virtualization Implementation in OpenDaylight by the OVSDB Plugin Pro...
 
SDN Service Provider use cases Network Function Virtualization (NFV)
SDN Service Provider use cases Network Function Virtualization (NFV)SDN Service Provider use cases Network Function Virtualization (NFV)
SDN Service Provider use cases Network Function Virtualization (NFV)
 
The Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on SecurityThe Potential Impact of Software Defined Networking SDN on Security
The Potential Impact of Software Defined Networking SDN on Security
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012
 
OpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosOpenStack and OpenFlow Demos
OpenStack and OpenFlow Demos
 

Recently uploaded

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
Roshan Dwivedi
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
Google
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 

Recently uploaded (20)

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Launch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in MinutesLaunch Your Streaming Platforms in Minutes
Launch Your Streaming Platforms in Minutes
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
AI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website CreatorAI Genie Review: World’s First Open AI WordPress Website Creator
AI Genie Review: World’s First Open AI WordPress Website Creator
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 

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

  • 1. 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
  • 3. ### OpenFlowJava OXM/NXMs ###! ! ! openflowjava/openflow-protocol-api/src/main/yang/openflow-extensible- match.yang         identity foo_dest {             base match-field;             description "Field for Foo";         }
  • 4. 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
  • 5. 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.
  • 6. 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;
  • 7. 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; } } !
  • 8. 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;! } !         }!     }
  • 11. 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"; }
  • 12. 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 */ } }
  • 13. 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()); }
  • 14. 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; } }
  • 15. 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
  • 16. 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; } }
  • 17. 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())); }
  • 18. 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()); }
  • 19. 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; }
  • 20. 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
  • 21. 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; }
  • 22. 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
  • 24. 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
  • 25. 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
  • 26. 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 ! ! !
  • 27. 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.
  • 28. 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/
  • 29. 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
  • 30. 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.
  • 31. 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
  • 32. Ports and Topology Pys vs. vPort? [_value=openflow:187231598612550:2] [_value=openflow:DPID:Port]
  • 33. 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.
  • 34. Generated POJOs Located in src/ or target/ Depending on the Project
  • 35. And Warcraft?? Seriously.. Wtf.. The only Yang related tool I found was for Sublime Yang ! Modeling Tools
  • 36. !!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
  • 37. 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.
  • 38. /* 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 ! !
  • 39. 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 ! !
  • 40. ### 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