From c9f6b1b992fbd0078a266f74affa1ed4aa803b5f Mon Sep 17 00:00:00 2001 From: FUJITA Tomonori Date: Sat, 9 Jun 2012 19:43:45 +0900 Subject: support commandline application initialization You can run your Ryu applicaiton in the following way: $ ryu-manager yourapp.py Signed-off-by: FUJITA Tomonori Reviewed-by: Isaku Yamahata --- bin/ryu-manager | 11 ++++++----- ryu/utils.py | 10 +++++++++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/bin/ryu-manager b/bin/ryu-manager index 43e0cba4..bb945570 100755 --- a/bin/ryu-manager +++ b/bin/ryu-manager @@ -1,6 +1,6 @@ #!/usr/bin/env python # -# Copyright (C) 2011 Nippon Telegraph and Telephone Corporation. +# Copyright (C) 2011, 2012 Nippon Telegraph and Telephone Corporation. # Copyright (C) 2011 Isaku Yamahata # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -35,17 +35,18 @@ from ryu.controller import controller FLAGS = gflags.FLAGS gflags.DEFINE_multistring('app_lists', - ['ryu.app.simple_isolation', - 'ryu.app.rest', - ], + [], 'application module name to run') def main(): utils.find_flagfile() - _args = FLAGS(sys.argv) + args = FLAGS(sys.argv) log.init_log() + if len(args) > 1: + FLAGS.app_lists += args[1:] + app_mgr = AppManager() app_mgr.load_apps(FLAGS.app_lists) contexts = app_mgr.create_contexts() diff --git a/ryu/utils.py b/ryu/utils.py index 6dd8c520..065672e2 100644 --- a/ryu/utils.py +++ b/ryu/utils.py @@ -24,7 +24,15 @@ LOG = logging.getLogger('ryu.utils') def import_module(modname): - __import__(modname) + try: + __import__(modname) + except: + sys.path.append(os.path.dirname(os.path.abspath(modname))) + name = os.path.basename(modname) + if name.endswith('.py'): + name = name[:-3] + __import__(name) + return sys.modules[name] return sys.modules[modname] -- cgit v1.2.3