Hi Alan and Victor,
Thank you very much for your suggestions and patch!
But, I am just one of the contributers for Ryu.
Then, would you review my attached patch?
If this patch looks good, this might be adopted through Ryu-devel.
FYI, with this patch, ryu-manager will outputs messages as follows
when killed by keyboard.
e.g.)
$ ryu-manager --verbose
loading app ryu.controller.ofp_handler
instantiating app ryu.controller.ofp_handler of OFPHandler
BRICK ofp_event
CONSUMES EventOFPSwitchFeatures
CONSUMES EventOFPHello
CONSUMES EventOFPEchoReply
CONSUMES EventOFPEchoRequest
CONSUMES EventOFPPortDescStatsReply
CONSUMES EventOFPErrorMsg
CONSUMES EventOFPPortStatus
^CKeyboard Interrupt received. Closing RYU application manager...
$
Thanks,
Iwase
On 2016年07月20日 22:24, alan_ford...@keysight.com wrote:
Hi Iwase,
Taking on board Victor's comments I made the following changes to my manager.py
file...
LOG = logging.getLogger('ryu.cmd.manager')
if CONF.enable_debugger:
msg = 'debugging is available (--enable-debugger option is turned on)'
LOG.info(msg)
else:
hub.patch(thread=True)
...
try:
hub.joinall(services)
except KeyboardInterrupt:
LOG.debug("Keyboard Interrupt received - RYU application manager
closing")
finally:
app_mgr.close()
Is this something you would consider including in the next RYU release?
Thanks again,
Alan.
-----Original Message-----
From: alan_ford...@keysight.com [mailto:alan_ford...@keysight.com]
Sent: Wednesday, July 20, 2016 11:39 AM
To: v...@duke.edu
Cc: ryu-devel@lists.sourceforge.net
Subject: Re: [Ryu-devel] KeyboardInterrupt (ctrl-c) and RYU
Your suggestion of a log message is probably the best approach.
Thanks,
Alan.
-----Original Message-----
From: Victor Orlikowski [mailto:v...@duke.edu]
Sent: Wednesday, July 20, 2016 11:36 AM
To: FORDYCE,ALAN (K-Scotland,ex1) <alan_ford...@keysight.com>
Cc: ryu-devel@lists.sourceforge.net
Subject: Re: [Ryu-devel] KeyboardInterrupt (ctrl-c) and RYU
Also - should be obvious - but include a comment on the pass, explaining that you're
"papering over" the fact that eventlet doesn't properly wrap the
KeyboardInterrupt inside select()/poll()/epoll().
Another suggestion: instead of a pass, a log message, at debug level (or
whatever desired default priority), that notes that Ctrl-C was received and
applications are terminating.
Best,
Victor
--
Victor J. Orlikowski <> vjo@[cs.]duke.edu
On Jul 20, 2016, at 11:20 AM, Victor Orlikowski <v...@duke.edu> wrote:
Suggest just silently swallowing the KeyboardInterrupt (with a "pass"), since
the finally block will cover the close().
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel
>From c083f7484d6283317845b616f57b4ac62ea55509 Mon Sep 17 00:00:00 2001
From: IWASE Yusuke <iwase.yusu...@gmail.com>
Date: Thu, 21 Jul 2016 10:22:34 +0900
Subject: [PATCH] manager: Except KeyboardInterrupt to suppress traceback
Currently, ryu-manager displays tracback messages when killed by the
keyboard interrupt.
This patch enables to catch KeyboardInterrupt exceptions and suppress
these messages to close down cleanly.
Signed-off-by: Victor J. Orlikowski <v...@duke.edu>
Signed-off-by: Alan Fordyce <alan_ford...@keysight.com>
Signed-off-by: IWASE Yusuke <iwase.yusu...@gmail.com>
---
ryu/cmd/manager.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/ryu/cmd/manager.py b/ryu/cmd/manager.py
index b1ce8da..1e1a6b4 100755
--- a/ryu/cmd/manager.py
+++ b/ryu/cmd/manager.py
@@ -66,11 +66,11 @@ def main(args=None, prog=None):
project='ryu', version='ryu-manager %s' % version)
log.init_log()
+ logger = logging.getLogger(__name__)
if CONF.enable_debugger:
- LOG = logging.getLogger('ryu.cmd.manager')
msg = 'debugging is available (--enable-debugger option is turned on)'
- LOG.info(msg)
+ logger.info(msg)
else:
hub.patch(thread=True)
@@ -80,7 +80,7 @@ def main(args=None, prog=None):
pid_file.write(str(os.getpid()))
app_lists = CONF.app_lists + CONF.app
- # keep old behaivor, run ofp if no application is specified.
+ # keep old behavior, run ofp if no application is specified.
if not app_lists:
app_lists = ['ryu.controller.ofp_handler']
@@ -97,6 +97,9 @@ def main(args=None, prog=None):
try:
hub.joinall(services)
+ except KeyboardInterrupt:
+ logger.debug("Keyboard Interrupt received. "
+ "Closing RYU application manager...")
finally:
app_mgr.close()
--
2.7.4
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports.http://sdm.link/zohodev2dev
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel