首页 > 代码库 > OpenStack配置解析库——oslo.config

OpenStack配置解析库——oslo.config

  OpenStack的oslo项目旨在独立出系统中可重用的基础功能,oslo.config就是其中一个被广泛使用的库,该项工作的主要目的就是解析OpenStack中命令行(CLI)或配置文件(.conf)中的配置信息。下面先给一个high-level的过程说明一下如何使用这个库。

  OpenStack中配置文件的使用主要有以下几个步骤,

  step1. 正确配置各个服务主配置文件(.conf文件),在各个服务中完成。

  step2. 在要使用到配置文件的模块中声明这个模块将会用到的那些配置项(比如‘auth_host‘...),包括配置项的名称、数据类型、默认值和说明等;

  step3. 创建一个对象,创建该对象的类充当配置管理器,这个对象以后将成为配置文件中配置项的容器。

  step3. 调用刚刚创建了的对象的注册方法,注册我们要用到的配置项,这个过程将会解析配置文件,从里面提取我们所需要的配置项的实际设定值,然后这些配置项的名称就可以作为这个对象的属性直接使用。

  一个完整的实例如下:

  先正确设置配置文件(.conf文件),这里只给出了部分示意。

[DEFAULT]bind_host = 0.0.0.0
bind_port = 9292...[rabbit]host = localhostport = 5672use_ssl = Falseuserid = guestpassword = guest...

  接着在需要查看配置文件信息的模块中这么写:

  先加载库,

from oslo.config import cfg

  接着声明这个模块中将会使用到的配置信息,  

opts = [     cfg.StrOpt(‘bind_host‘, default=‘0.0.0.0‘),     cfg.IntOpt(‘bind_port‘, default=9292),   ]

  然后调用对象,生成容器,

CONF = cfg.CONF

  接着调用对象自己的方法注册目标配置项,目标配置文件将被解析,需要的配置项值将被提取,存储到调用的对象中,属性名就是配置项的名称,属性的值就是配置文件中相应配置项的值。

CONF.register_opts(opts)CONF(default_config_files=‘glance.conf‘)
 然后就可以使用提取到的配置信息了。
def start(server, app):     server.start(app, CONF.bind_port, CONF.bind_host)