On Wed, 20 Jun 2018 12:11:59 +0900,
Marcio Vinicius de Queiroz Santos wrote:
> 
> [1  <multipart/alternative (7bit)>]
> [1.1  <text/plain; UTF-8 (7bit)>]
> Dear,
> 
> My Friend is facing difficulties to perform a route deletion using Ryu and
> REST API. So, I'm here to show you the following message from him. Could
> someone help with this case? I'll be very thankfull.
> 
> "Hi friends!
> 
> I'm trying to delete a route from inside a python program *extract.py*,
> using the simple topology: h1-s1.
> *extract.py* extends *wflow.py*, and this one is a version from the
> *rest_router.py* and *simple_monitor.py* with some modifications.

simple_monitor.py's flow stat handler assumes something on flow match
fields. Flows generated by rest_router.py don't work well there.


> I am using this code to delete a route:
> 
> *print(">>>>>>>>>>>>>> EXTRACT.PY", stat.duration_sec)*
> *        if stat.duration_sec == 120:*
> *            print("changing routes....")*
> 
> *            url     = 'http://localhost:8080/router/0000000000000001
> <http://localhost:8080/router/0000000000000001>'*
> *            payload = '{"route_id": "2"}'*
> *            res = requests.delete(url, data=payload)*
> 
> But it's not working. The messages that I receive are:
> 
> *('>>>>>>>>>>>>>> EXTRACT.PY', 120)*
> *changing routes....*
> *Starting new HTTP connection (1): localhost*
> 
> After a few seconds I receive:
> 
> *(31783) accepted ('127.0.0.1', 55789)*
> *Setting read timeout to None*
> *127.0.0.1 - - [20/Jun/2018 01:26:39] "DELETE /router/0000000000000001
> HTTP/1.1" 200 218 1.001163*
> *"DELETE /router/0000000000000001 HTTP/1.1" 200 109*
> *('>>>>>>>>>>>>>> EXTRACT.PY', 12090)*
> *changing routes....*
> *Starting new HTTP connection (1): localhost*
> 
> After a more few seconds I receive:
> 
> 
> *Setting read timeout to None*
> *(31783) accepted ('127.0.0.1', 55790)*
> *127.0.0.1 - - [20/Jun/2018 01:27:10] "DELETE /router/0000000000000001
> HTTP/1.1" 200 218 1.000890*
> *"DELETE /router/0000000000000001 HTTP/1.1" 200 109*

It seems the delete command has succeeded.

> And then:
> 
> *Logged from file wflow.py, line 77*
> *SimpleMonitor13: Exception occurred during handler processing. Backtrace
> from offending handler [_flow_stats_reply_handler] servicing event
> [EventOFPFlowStatsReply] follows.*
> *Traceback (most recent call last):*
> *  File "/usr/local/lib/python2.7/dist-packages/ryu/base/app_manager.py",
> line 290, in _event_loop*
> *    handler(ev)*
> *  File "/home/wilson_siqueira/8-berrondo/wflow.py", line 81, in
> _flow_stats_reply_handler*
> *    key=lambda flow: (flow.match['in_port'],*
> *  File "/home/wilson_siqueira/8-berrondo/wflow.py", line 81, in <lambda>*
> *    key=lambda flow: (flow.match['in_port'],*
> *  File
> "/usr/local/lib/python2.7/dist-packages/ryu/ofproto/ofproto_v1_3_parser.py",
> line 857, in __getitem__*
> *    return dict(self._fields2)[key]*
> *KeyError: 'in_port'*

Flows generated by rest_router.py don't have in_port match field, but
such flows are somehow fed to simple_monitor's flow stats handler.

If you need to use rest_router and simple_monitor together,
the simplest way would be to write your flow stats handler.

> The switch was configured with the script below when I start the controller
> from the first time:
> 
> curl -X POST -d '{"address": "10.0.0.2/8"}' http://localhost:8080/router/
> 0000000000000001
> curl -X POST -d '{"destination": "20.0.0.0/8", "gateway": "10.0.0.1"}'
> http://localhost:8080/router/0000000000000001
> curl -X POST -d '{"destination": "30.0.0.0/8", "gateway": "10.0.0.1"}'
> http://localhost:8080/router/0000000000000001
> 
> 
> When I delete the route manualy it works.
> I don't face the problem when I POST the routes from inside this same
> program (extract.py) with the command below:
> 
> *url     = 'http://localhost:8080/router/0000000000000001
> <http://localhost:8080/router/0000000000000001>'*
> *            payload = '{"destination": "40.0.0.0/8 <http://40.0.0.0/8>",
> "gateway": "10.0.0.1"}'*
> *            res = requests.post(url, data=payload)*
> 
> It seems that the controller looses its configuration when I try to delete
> a route. "Data is nothing" was one of the messages that I saw when I used
> pdb to trace the problem.
> So what I have to do to delete a route from a python program?"

--
IWAMOTO Toshihiro

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to