Hi, On 2015年06月22日 18:17, Haruka Oguchi wrote: > Hi, > > I am trying to combine a ryu app that detects topology with my python > program that calculate Dijkstra. > But I can’t pass correct value to my python program from ryu app > because I don’t know exactly how > @handler.set_ev_cls(event.EventLinkAdd) handler works. > > ***My Ryu app that detects topology is following:*** > > from ryu.controller import handler > from ryu.controller import dpset > from ryu.controller import ofp_event > from ryu.ofproto import ofproto_v1_3 > from ryu.ofproto import ofproto_v1_3_parser > from ryu.base import app_manager > from ryu.ofproto.ofproto_parser import MsgBase, msg_pack_into, msg_str_attr > from ryu.topology import api > from ryu.topology import event > > class OF13(app_manager.RyuApp): > OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION] > > _CONTEXTS = { > 'dpset': dpset.DPSet, > } > > def __init__(self, *args, **kwargs): > super(OF13, self).__init__(*args, **kwargs) > self.dpset = kwargs['dpset'] > > def _get_hwaddr(self, dpid, port_no): > return self.dpset.get_port(dpid, port_no).hw_addr > > @handler.set_ev_cls(event.EventLinkAdd) > def link_add(self, ev): > srcid, dstid = ev.link.src.dpid, ev.link.dst.dpid > srcpt, dstpt = ev.link.src.port_no, ev.link.dst.port_no > > print srcid, srcpt, dstid, dstpt > #####I would like to pass these four values to my python program. > > #####but this part below doesn’t work correctly. > f = open(‘topology.txt’, ‘w’) > print >> f, srcid, srcpt, dstid, dstpt > f.close() > > > ***The result output:*** > loading app /home/haruka/ryu/ryu/app/topo_detect.py > loading app ryu.topology.switches > loading app ryu.controller.ofp_handler > instantiating app None of DPSet > creating context dpset > instantiating app ryu.topology.switches of Switches > instantiating app /home/haruka/ryu/ryu/app/topo_detect.py of OF13 > instantiating app ryu.controller.ofp_handler of OFPHandler > 4 3 3 3 > 2 2 3 2 > 1 2 3 1 > 2 3 4 2 > 1 3 4 1 > 4 1 1 3 > 2 1 1 1 > 4 2 2 3 > 1 1 2 1 > 3 3 4 3 > 3 1 1 2 > 3 2 2 2 > > > ***topology.txt:*** > 4 1 1 3 > #####This value changes every time I run the program above. > > > I would like to ask the following questions: > ●Why does “print srcid, srcpt, dstid, dstpt” part output multiple > lines without the if statement nor the while statement?
Please specify 'a' for appending mode. (https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files) > ●Where should I refer to see the contents of the event handler such as > event.EventLinkAdd? The event classes of topology.event are defined as follows. (https://github.com/osrg/ryu/blob/master/ryu/topology/event.py) > ●In the first place, can Ryu Apps transfer values to other python > program inside Ryu? Does 'other python program inside Ryu' means other RyuApp? or Other python process? Ryu can do both. > Better idea, Any suggestion will be helpful. > > thanks, > > ------------------------------------------------------------------------------ > Monitor 25 network devices or servers for free with OpManager! > OpManager is web-based network management software that monitors > network devices and physical & virtual servers, alerts via email & sms > for fault. Monitor 25 devices for free with no restriction. Download now > http://ad.doubleclick.net/ddm/clk/292181274;119417398;o > _______________________________________________ > Ryu-devel mailing list > Ryu-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/ryu-devel > ------------------------------------------------------------------------------ Monitor 25 network devices or servers for free with OpManager! OpManager is web-based network management software that monitors network devices and physical & virtual servers, alerts via email & sms for fault. Monitor 25 devices for free with no restriction. Download now http://ad.doubleclick.net/ddm/clk/292181274;119417398;o _______________________________________________ Ryu-devel mailing list Ryu-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ryu-devel