Oslo
在RYU的目录下可以找到cfg.py文件,这个文件中import了oslo的相关模块,以便调用时减少引用数目。从文件中可以发现oslo.config.cfg文件是关键文件,其在系统中的文件位置在:/usr/local/lib/python2.7/dist-packages/oslo/config/cfg.py。想查看源码的读者可以自行查看。在该cfg.py文件中 定义了ConfigOpts类,包含了_opts, _groups等成员变量。该类完成了命令行和配置参数的解析。
如果要快速学习某一个知识,最好的办法就是把它用起来。所以首先我会介绍一个入门的教程。如果你没有看懂,可以去看原始的教程。
首先安装python-virtualenv,此python库可以用于创建一个虚拟的,与外界隔离的运行环境,听起来和docker好像有点像。
1 | sudo apt-get install python-virtualenv |
然后修改app.conf。添加了两个group:simple和morestuff。simple组中有一个BoolOpt:enable。morestuff组有StrOpt, ListOpt, DictOpt, IntOpt,和FloatOpt。
1 | [simple] |
修改app.py文件。首先定义两个group,再对两个group的option进行定义。最后使用register_group和register_opts函数来完成group和option的注册。
1 | from __future__ import print_function |
完成之后,运行app.py文件。可以查看到相关输出。
回到RYU中,之前一篇博客介绍了RYU的main函数。在ryu/ryu/cmd/manager.py文件中我们可以看到如下的代码:
1 | CONF.register_cli_opts([ |
1 |
|
1 | def main(args=None, prog=None): |
oslo模块使用能够使得整个工程的不同模块可以使用同一个配置文件,从而减少了命令冲突的可能,此外,oslo提供的模板,可以让命令解析更方便。在oslo.config之外,还有oslo.db,oslo.messaging等。
针对OpenStack 多个组件,OpenStack社区开发了不少公共组件OSOL:https://github.com/openstack/?query=oslo