将自己的参数传递给ryu代理应用程序

时间:2013-07-02 11:52:30

标签: python open-source command-line-arguments

我正在开发ryu应用。该应用程序基本上是一个python脚本。 ryu应用程序由ryu-manager调用,如此

  

ryu-manager {filename}

ryu-manager有一些参数。我想知道是否有办法将参数传递给我的文件?

用于解析命令行选项的python的{p> argparse模块是存在但不确定它是否会起作用,因为我提供的所有参数都由ryu-manager使用而不是我的脚本。

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:3)

我没试过,但是:

  

“Ryu目前使用oslo.config.cfg进行命令行解析。   (柳/了contrib /奥斯陆/配置)。   树中有几个例子。柳/应用/ tunnel_port_updater.py“

http://comments.gmane.org/gmane.network.ryu.devel/2709

另见 https://github.com/osrg/ryu/blob/master/ryu/app/tunnel_port_updater.py

Ryu'入门'页面只是建议:

ryu-manager [--flagfile <path to configuration file>] [generic/application specific options…]

http://www.osrg.net/ryu/_sources/getting_started.txt

答案 1 :(得分:1)

这样做分为4个步骤。我将展示一个示例,您可以在其中读取参数然后打印它们,但您可以通过参考此过程将它们分配给变量或执行任何操作。

  1. 创建.conf文件(例如params.conf)

    #Example Conf File
    
    [DEFAULT]
    
    param1_int = 42
    param2_str = "You read my data :)"
    param3_list = 1,2,3
    param4_float = 3.14
    
  2. 将以下代码添加到__init__方法中。我这样做是为ryu提供的simple_switch_13.py:

    from ryu import cfg
    :
    :
    class SimpleSwitch13(app_manager.RyuApp):
        def __init__(self, *args, **kwargs):
            super(SimpleSwitch13, self).__init__(*args, **kwargs)
               :
            CONF = cfg.CONF
            CONF.register_opts([
                cfg.IntOpt('param1_int', default=0, help = ('The ultimate answer')),
                cfg.StrOpt('param2_str', default='default', help = ('A string')),
                cfg.ListOpt('param3_list', default = None, help = ('A list of numbers')),
                cfg.FloatOpt('param4_float', default = 0.0, help = ('Pi? Yummy.'))])
    
            print 'param1_int = {}'.format(CONF.param1_int))
            print 'param2_str = {}'.format(CONF.param2_str))
            print 'param3_list = {}'.format(CONF.param3_list))
            print 'param4_float = {}'.format(CONF.param4_float))
    
  3. 运行脚本

    ryu-manager paramtest.py --config-file [PATH/TO/FILE/params.conf]
    
  4. 利润

  5. 在汇总我的答案时,我引用了以下内容,它们可以提供更多细节(例如oslo.config内容,这是我在遇到此问题之前从未听说过的。)

    有关oslo.config的更多信息:http://www.giantflyingsaucer.com/blog/?p=4822

    此问题上的Ryu电子邮件链:https://sourceforge.net/p/ryu/mailman/message/33410077/

答案 2 :(得分:0)

我还没有找到一种方法将参数传递给ryu控制器。我用来解决这个问题的一种方法是将参数作为环境变量传递。例如,我有一个调用ryu-manager的程序,需要将参数传递给app。我这样做如下:ARG=value ryu-manager app.py