SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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 StoryMichael 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 CaliforniumJulien Vermillard
 
A Taste of Open Fabrics Interfaces
A Taste of Open Fabrics InterfacesA Taste of Open Fabrics Interfaces
A Taste of Open Fabrics Interfacesseanhefty
 
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 GenerationTim Burks
 
Coap based application for android phones
Coap based application for android phonesCoap based application for android phones
Coap based application for android phonesMd Syed Ahamad
 
Polyglot Applications with GraalVM
Polyglot Applications with GraalVMPolyglot Applications with GraalVM
Polyglot Applications with GraalVMjexp
 
Messaging With Erlang And Jabber
Messaging With  Erlang And  JabberMessaging With  Erlang And  Jabber
Messaging With Erlang And Jabberl xf
 
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 CasesVMware 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 beyondJon Galloway
 
.NET Core Today and Tomorrow
.NET Core Today and Tomorrow.NET Core Today and Tomorrow
.NET Core Today and TomorrowJon Galloway
 
Ekon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignEkon23 (1) Kingdom-Driven-Design
Ekon23 (1) Kingdom-Driven-DesignArnaud 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 machineChun-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 SystemJian-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 5Richard Langlois P. Eng.
 

Tendances (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
 

Similaire à 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 MedvedOpenDaylight
 
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 AirflowKaxil 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 300Timothy Spann
 
Developing OpenResty Framework
Developing OpenResty FrameworkDeveloping OpenResty Framework
Developing OpenResty FrameworkOpenRestyCon
 
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 Sparkfelixcss
 
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 developersJulien Anguenot
 
Enterprise Deep Learning with DL4J
Enterprise Deep Learning with DL4JEnterprise Deep Learning with DL4J
Enterprise Deep Learning with DL4JJosh 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 FLaNKData 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 2015rvagg
 
Scalable up genomic analysis with ADAM
Scalable up genomic analysis with ADAMScalable up genomic analysis with ADAM
Scalable up genomic analysis with ADAMfnothaft
 
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 2020Timothy 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 OutTravis 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_futureTakayuki Muranushi
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills 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 2018Guglielmo 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
 

Similaire à 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 @ ...
 

Plus de 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 DriversBrent 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 SecurityBrent Salisbury
 
Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Software Defined Data Centers - June 2012
Software Defined Data Centers - June 2012Brent Salisbury
 
OpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosOpenStack and OpenFlow Demos
OpenStack and OpenFlow DemosBrent Salisbury
 

Plus de 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
 

Dernier

WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 

Dernier (20)

WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

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