openstack oslo.config简短学习笔记

本文介绍了OpenStack中oslo.config模块的功能与用法。该模块主要用于解析命令行及配置文件中的配置选项,支持多种配置类型如字符串、布尔值等,并可通过配置管理器访问配置值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

是什么

简单讲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。

如何使用

  1. 配置选项(options)可以通过命令行或者是配置文件的形式进行定义。
  2. 定义完成后需要想配置管理器(config manager)进行注册。
  3. 通过配置管理器直接访问配置选项的值。
from oslo.config import cfg

CONF = 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)
  1. 配置文件中是有分区(section/group)的概念,每个配置选项属于某一个配置分区。如果配置项没有指明分区的话,那就是属于默认分区(default)。
  2. 如果配置选项不属于默认分区的话,那么在通过配置管理器访问该配置项时,需要添加配置分区。
from oslo.config import cfg

rabbit_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

转载于:https://my.oschina.net/alazyer/blog/737946

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值