openstack源码阅读笔记2 配置与oslo_config

原创 2016年08月30日 00:10:42

Openstack提取了一些在多数项目中经常使用的功能,做成了共公的包,这些公共包同样在nova中的各个服务模块大量使用。这此公共包都以oslo开头。

在分析具体代码之前,必须先熟悉这些公共包,以下先对这些共公包结合nova做一下分析,以便在分析具体的服务模块代码时,不必再解释公共包的功能。

Oslo_config包用于解析命令行和配置文件中的配置选项。

 

Oslo_config包是对python标准库中argparse包的增强和包装,要理解oslo_config必须理解argparse包。

argparse分为三个步骤,定义选项,解释命令行,反回解释的结果对象。用户利用结果对象就可以查看选项的具体值,结果对象把它看成是一个普通的对象即可,这个对象的属性就是选项名称,值就是解释出来的具体值。

 

而oslo_config包是对argparse的增强,定义选项方面,用Opt类做了包装,更面向对象,并且用一个容器类(ConfigOpts)来包含选项。

解释选项值方面,除了能从命令行中解释出选项的值外,还能从配置文件中解释出选项的值。而解释出来的结果对象,直接存放在ConfigOpts中,并利用ConfigOpts是类dict的对象,使得可以直接像操作字典一样的操作选项值。所以在openstack中,可以直接用CONF.port这样来获取得port这个选项的值。

 

简单结合nova解释一下:

nova.conf包中,

导入了oslo_config包中的cfg模块,并定义了:

CONF = cfg.CONF
api.register_opts(CONF)
 
#而nova.conf.api模块中
def register_opts(conf):
conf.register_opts(ALL_OPTS)
 
#以上是定义选项。

#在nova.cmd.api中
from nova importconfig
def main():
	config.parse_args(sys.argv)

#在nova.config中
def parse_args(argv, default_config_files=None, configure_db=True,
               init_rpc=True):

    #省略部分
   CONF(argv[1:],
         project='nova',
         version=version.version_string(),
        default_config_files=default_config_files)

#以上是解释选项,直接对命令行做解释,且带了配置文件进去。


CONF(…)直接调用CONFCONF是类ConfigOpts的实例,且类定义有__call__方法,CONF(…)就是调用__call__方法。解释完后,会把结果放在CONF._namespace中。

 

引用选项值,我们是直接用:

CONF.optname 或是CONF.groupname.optname

对于这样的引用,会调用类ConfigOpts中的__getattr__方法,最终就是对CONF._namespace中值的提取。

 

补充说明一下:

cfg.CONF是类cfg.ConfigOpts的一个实例。

cfg中有定义:

CONF=ConfigOpts()

从中可知,cfg.CONF是一个模块单例模式的一个应用。在nova运行的过程中,只会存在一个ConfigOpts实例。

再看ConfigOpts类,是一个继承了collections.Mapping的一个类,即你可以把它当成一个dict看待和操作。

 

 

以下是nova对于配置方面的代码结构

nova.conf包,定义了所有相关服务的选项,每个服务一个模块,如api的选项放在

api.py这个模块下,非常清楚,也集中管理。

nova.cmd包,是所有服务的入口点,必然的,会在这里对具体的配置项做解释,从命令行中,从配置文件中取得配置值,然后解释进CONF实例中,后面即可直接用CONF实例引用配置项的值.

 

配置方面相关的代码就是以上部分,非常容易仿照使用。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

OpenStack配置解析库oslo.config的使用方法

OpenStack的oslo项目旨在独立出系统中可重用的基础功能,Oslo.config组件,主要是来负责CLI和CONF配置项的解析。在老版本之前,这个功能都是是放在cfg模块中的,但是后来社区老大...

OpenStack开发基础-oslo.config

The cfg Modulecfg Module来自于OpenStack中的重要的基础组件oslo.config,通过cfg Module可以用来通过命令行或者是配置文件来配置一些options,对于...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

(二)、Openstack 之 oslo.config

今天给大家介绍OpenStack中负责CLI和CONF配置项解析的组件—— Oslo.config。E版本前,这个功能是放在cfg模块中的,后来社区中考虑将OpenStack中共性的组件都剥离出来,统...

OpenStack 实现技术分解 (7) 通用库 — oslo_config

目录目录 前文列表 扩展阅读 osloconfig argparse cfgpy class Opt class ConfigOpts CONF 对象的单例模式前文列表OpenStack 实现技术分解...
  • Jmilk
  • Jmilk
  • 2017-03-30 23:52
  • 805

openstack通用库Oslo之config

oslo config库用于解析命令行和配置文件中的配置(config)选项(opts)。

mybatis源码学习之执行过程分析(2)——config.xml配置文件和mapper.xml映射文件解析过程

在上一篇中跟踪了SqlSessionFactory及SqlSession的创建过程。这一篇,主要跟踪Mapper接口和XML文件映射及获取。1.Mapper文件的解析1.1Mybatis-config...

openstack oslo_config 和 oslo_log库

一、oslo.config库的作用和概念理解 openstack中的 oslo.config库用于解析命令行和配置文件中的配置选项,把配置项直接融入代码内。在本文的语境下,有这么几个概念: 配置文件:...

关于OSLO光线型评价函数源码分析

如同我学习编程一样,什么都想知道个究竟,最近算是深入学习OSLO光学设计软件,选择你,是因为你很透明,你能让我知道你干了什么,也能可以让我想让你干什么你就干什么,你是光软的VC++,连自带的CCL编程...

(三) OPENSTACK 学习之 Oslo Config (oslo.config) 自己动手写项目

阿拉将要自己新建一个项目,来show 一下 oslo config的用法。我用的环境是:配有virtualenv的ubuntu系统。 首先让我们创建一个简单的项目: ...

C# 读取保存App.config配置文件的完整源码参考

最近出差在北京做一个小项目,项目里需要读取配置文件的小功能,觉得挺有参考意义的就把代码发上来给大家参考一下。我们选择了直接用微软的读取配置文件的方法。 这个是程序的运行设计效果,就是把这些参数可以进行...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)