Revision history [back]

Error Handling with MD-SAL FRM

Have tried to program flows through FRM, by adding flows to the config datastore and see that these flows never got programmed in the switch (and hence not seen in the operation data store). Further debugging have found that the switch rejected the flow programming (due to switch specific capabilities), but as an APP how could I identify the error from FRM/ODL in this scenario.

Essentially from APP programming, looking at the error handling for scenario where the switch could fail to program the provided flow. Right now the only way we could identify such failure is that the flow never makes it to the operational datastore, but how could we find what was the reason/error this flow failed to get programmed.

Also how do we troubleshoot such scenarios from ODL, in real time we could hit such issues and it becomes tough to isolate/troubleshoot the same.

Really appreciate any insight to the same.

Further looking at the FRM code, don't see it to be handling the error returned from the openflow-plugin?

controller/opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/frm/impl/FlowForwarder.java

<snip>

@Override

public void add(final InstanceIdentifier<Flow> identifier,

final InstanceIdentifier<FlowCapableNode> nodeIdent) {

final TableKey tableKey = identifier.firstKeyOf(Table.class, TableKey.class);

builder.setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class)));

builder.setFlowRef(new FlowRef(identifier));

builder.setFlowTable(new FlowTableRef(nodeIdent.child(Table.class, tableKey)));

builder.setTransactionUri(new Uri(provider.getNewTransactionId()));

provider.getSalFlowService().addFlow(builder.build()); <<<<<<<<<<<<<<<<< The return value from salFlowService is just not handled.

}

}


</snip>