Bumping this thread. Can someone from the openflowplugin team please respond to Jim's request.
Thanks, Ryan On Mon, Feb 20, 2017 at 3:47 PM, Jim West <[email protected]> wrote: > I have some more data on this and I believe there is a functionality > regression in the API as of Boron-SR > > > I was able to configure the system to get a notification when a > OFPT_FLOW_REMOVED message is received, but I believe its the wrong callback. > > > > *./model/model-flow-service/src/main/yang-gen-sal/org/opendaylight/yang/gen/v1/urn/opendaylight/flow/service/rev130819/SalFlowListener.java* > > > is generated from the > *./model/model-flow-service/src/main/yang/sal-flow.yang* yang file. It > defines the following methods: > > > void onNodeErrorNotification(NodeErrorNotification notification); > void onFlowRemoved(FlowRemoved notification); > void onSwitchFlowRemoved(SwitchFlowRemoved notification); > void onNodeExperimenterErrorNotification( > NodeExperimenterErrorNotification notification); > void onFlowAdded(FlowAdded notification); > void onFlowUpdated(FlowUpdated notification); > > > This class has existed at least since the Helium release. In helium, when > an OFPT_FLOW_REMOVED was received, the onSwitchFlowRemoved method of the > listener was called. As of Boron-SR2, the onFlowRemoved. The problem is > that the data contained in the SwitchFlowRemoved contains information > that isn't in the FlowRemoved class. > > > As far as I can tell, the call flow is this: > > DeviceContextImpl.processFlowRemovedMessage(FlowRemoved) > > - line 348 : We call flowRemovedTranslator.translate(flowRemoved, > deviceInfo, null); > - This is supposed to translate the > > *org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FlowRemoved* > (from the openflowjava module) class into > > *org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemoved* > (from the openflowplugin module). > - I believe *rev130819.FlowRemoved* is wrong and it should > actually be > > *org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.* > *SwitchFlowRemoved* > - After line 348, we've lost the data from openflowjava about WHY > the flow was removed. > - As a result of the translated class being *rev130819.FlowRemoved*, > we call the 'onFlowRemoved' callback and NOT the 'onSwitchFlowRemoved' > as > we did in helium. > > Can someone confirm or disprove my hypothesis? > > - The code doesn't seem to use the > *org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.* > *SwitchFlowRemoved* class. > > > Jim > > ------------------------------ > *From:* Jim West <[email protected]> > *Sent:* Friday, February 17, 2017 5:19 PM > *To:* [email protected] > *Subject:* What's the correct way to register for switch-flow-removed and > node-error-notification in Boron? > > > Hi Everyone, > > > I developed some java code in ODL-Helium that registered a listener to get > notified when the openflowplugin received a OFPT_FLOW_REMOVED message or an > Open Flow error message. I'm trying to move this code to ODL-Boron-SR2 and > I'm having a problem where I'm not being notified when flows are removed on > the switch. > > > In Helium, my code looked like this: > > final MyListener listener = new MyListener(); // MyListener > implements org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service. > rev130819.SalFlowListener; > > final NotificationService notificationService = context.getSALService( > org.opendaylight.controller.sal.binding.api.NotificationService.class); > > if (notificationService != null) > > { > > notificationService.registerNotificationListener(listener); > > } > > This code has worked well in helium, but it doesn't work in Boron (the > classes still appear to be available, but they've been deprecated) > > > In Helium, the notifications I'm interested in were defined in the > controller project in the YANG file *sal-flow.yang* > > > By Boron, the sal.flow.yang has been moved to the openflowplugin project > and the *switch-flow-removed* notification has been deprecated. What I'd > like to understand is what's the best way to receive these events. > > > Here's what I've tried: > > > *First attempt:* > > final MyPktListener pktList = new MyPktListener(); // implements > org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709. > PacketProcessingListener > > final MyListener listener = MyListener(); // MyListener > implements org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service. > rev130819.SalFlowListener; > > final NotificationService srvc = OsgiUtils.findOsgiService(org. > opendaylight.controller.md.sal.binding.api.NotificationService); > > if (srvc != null) > { > > srvc.registerNotificationListener(pktList) > > srvc.registerNotificationListener(listener) > > } > > > - I get packet in events, but I'm not getting events to indicate > a flow as aged out on the switch (I can see the message come up from > OpenFlow) > > > *2nd attempt (use the old Helium class, but I still don't get the events):* > > final MyPktListener pktList = new MyPktListener(); // implements > org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709. > PacketProcessingListener > final MyListener listener = MyListener(); // MyListener > implements org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service. > rev130819.SalFlowListener; > > final NotificationService srvc = OsgiUtils.findOsgiService(org. > opendaylight.controller.sal.binding.api.NotificationService); > > if (srvc != null) > { > > srvc.registerNotificationListener(pktList) > > srvc.registerNotificationListener(listener) > > } > > I'm looked at the code in the samples directory in the openflowplugin (but > no example for the flow-removed-on-switch event). I've been unable to find > a *blueprint* registration of a service that implements any of the > NotificationService API's. > > What am I missing. This seems so basic I'm assuming I'm registering the > wrong class/interface as a listener. > > Does anyone have an example of Boron (or Beryllium) code that does this? > > Thanks in advance, > > Jim > > > > _______________________________________________ > openflowplugin-dev mailing list > [email protected] > https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev > >
_______________________________________________ openflowplugin-dev mailing list [email protected] https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
