是什么
简单讲oslo.config模块是Openstack中用来解析从命令行或者是配置文件提供的配置的一个python library.
An OpenStack library for parsing configuration options from the command line and configuration files.
整体结构
oslo.config模块一共有8个实现模块,以及对应的测试模块。8个模块分别为:
- cft.py
- cfgfilter.py
- fixture.py
- generator.py
- iniparser.py
- 定义了一个ini配置文件解析类BaseParser,用来解析指定可iter对象。
- sphinxconfiggen.py
- sphinxext.py
- types.py
- 定义了配置参数的可选类型,一共定义了9个类,1个基类型,还有8种可选参数类型。ConfigType(基础类型), String, MultiString, Boolean, Integer, Float, List, Dict, IPAddress。
如何使用
- 配置选项(options)可以通过命令行或者是配置文件的形式进行定义。
- 定义完成后需要想配置管理器(config manager)进行注册。
- 通过配置管理器直接访问配置选项的值。
from oslo.config import cfgCONF = cfg.CONF# 配置选项定义common_opts = [ cfg.StrOpt('bind_host', default='0.0.0.0', help='IP address to listen on'), cfg.IntOpt('bind_port', default=9292, help='Port number to listen on')]cli_opts = [ cfg.BoolOpt('verbose', short='v', default=False, help='Print more verbose output'), cfg.BoolOpt('debug', short='d', default=False, help='Print debugging output'),]# 向配置管理器进行注册CONF.register_opts(common_opts)CONF.register_cli_opts(cli_opts)# 通过配置管理器访问配置选项的值print "The server is binded on: %s, with port: %d" % (CONF.bind_host, CONF.bind_port)
- 配置文件中是有分区(section/group)的概念,每个配置选项属于某一个配置分区。如果配置项没有指明分区的话,那就是属于默认分区(default)。
- 如果配置选项不属于默认分区的话,那么在通过配置管理器访问该配置项时,需要添加配置分区。
from oslo.config import cfgrabbit_group = cfg.OptGroup(name='rabbit', title='RabbitMQ options'))rabbit_host_opt = cfg.StrOpt('host', default='localhost', help='IP/hostname to listen on')rabbit_port_opt = cfg.IntOpt('port', default=5672, help='Port number to listen on')def register_rabbit_opts(conf): conf.register_group(rabbit_group) # options can be registered under a group in either of these ways: conf.register_opt(rabbit_host_opt, group=rabbit_group) conf.register_opt(rabbit_port_opt, group='rabbit') regitser_rabbit_opts(cfg.CONF)cfg.CONF.rebbit.host