openstack公共库——oslo_config之cfg

本文详细介绍了oslo_config.cfg的作用,包括解析命令行和配置文件。讲解了如何注册配置项(opt)及其语法,如StrOpt、BoolOpt等,以及配置组的定义方法。此外,还阐述了配置的加载过程,如定义、注册配置项和配置组的步骤,并给出了完整示例。最后,提到了oslo_config.types用于检查命令行输入参数的功能。
摘要由CSDN通过智能技术生成

目录

 

一、oslo_config.cfg的主要作用

二、oslo_config.cfg注册opt

1.定义opt的语法

通用定义配置项的参数

StrOpt

BoolOpt(name)

IntOpt(name, min=None, max=None)

FloatOpt(name, min=None, max=None)

ListOpt(name, item_type=None, bounds=None)

DictOpt(name)

IPOpt(name, version=None)

PortOpt(name, min=None, max=None, choices=None)

HostnameOpt(name)

HostAddressOpt(name, version=None)

URIOpt(name, max_length=None, schemes=None)

MultiOpt(name, item_type)

MultiStrOpt(name)

SubCommandOpt(name, dest=None, handler=None,title=None, description=None, help=None)

2.定义group的语法

OptGroup(self, name, title=None, help=None,dynamic_group_owner='',driver_option='')

三、加载配置

1.定义配置项

2.定义配置组

3.注册配置组

4.注册配置项

5.完整示例

四、定义命令行

1.定义命令行参数

2.定义配置组

3.注册配置组

4.注册命令行

5.代码

五、oslo_config.types


一、oslo_config.cfg的主要作用

  • 解析命令行
  • 解析配置文件

二、oslo_config.cfg注册opt

1.定义opt的语法

  • 通用定义配置项的参数

name:option的名称,对应conf文件section下各个option的名称;
type:option值的数据类型,必须是oslo_config.types模块下不同数据类型对应的类的实例。能够接收string,返回转换后且经过验证的值;
dest:CONF中相对应属性名;
short:命令行中option名称的单字母缩写;
default:option的默认值;
positional:是否为命令行中固定位置的argument;
metavar:--help中显示的argument信息;
help:此option的使用帮助信息;
secret:是否不在log中显示相关信息;
required:是否值不能为空;
deprecated_name:option注册时,将覆写的相关option的名称。类似别名;
deprecated_group:别名所在的section,如果不填则代表同option所在一样的section;
deprecated_opts: option注册时,将要覆写的别名信息列表,元素为oslo_config.cfg.DeprecatedOpt类实例;
deprecated_for_removal:标明是否在未来版本中,此项option将会被废弃;
deprecated_reason:对于此项option在未来版本中被废弃的解释;
deprecated_since:标明在哪个未来版本中此项option将会被废弃;
mutable:是否此option可以被重载;
advanced:是否此option是一个高级选项,默认不被大部分用户使用。
  • StrOpt

    StrOpt的参数如下,此类继承于Opt类,因此除了下列选项,上面的通用配置项中的参数也可以在此类型中使用。

用法:
StrOpt(name, choices=None, quotes=None,regex=None, ignore_case=None, max_length=None, **kwargs)

参数:
choices:option的可选值,[1,2,3],与regex不可同时存在;
quotes:如果为True,则传入的string如果被单引号或双引号包围,则会去掉引号。如果引号不成对,则会raise错误。在string为容器结构如列表等时比较有用。默认为False;
regex:option值由正则表达式匹配出,与choices不可同时存在;
ignore_case:如果为True,则对大小写不敏感;
max_length:option值的长度最大值;
type_name:标明的option值类型的字符串,默认为'string value'

示例
配置
[zpp]
z=4

代码
from oslo_config import cfg,types

conf = cfg.CONF
cli_opt = cfg.StrOpt('z', choices=['4', '5'])
cfg.CONF.register_group(cfg.OptGroup('zpp'))
cfg.CONF.register_opt(cli_opt, 'zpp')

if __name__ == "__main__":
    import sys
    conf(default_config_files=['/root/neutron.conf'])
    print conf.zpp.z #4,当z的值不在choices中会抛出异常


  • BoolOpt(name)

#参数
name:配置项的名称或者参数名称

#示例
##配置
[zpp]
z=True

##代码
from oslo_config import cfg,types

conf = cfg.CONF
cli_opt = cfg.BoolOpt('z')
cfg.CONF.register_group(cfg.OptGroup('zpp'))
cfg.CONF.register_opt(cli_opt, 'zpp')

if __name__ == "__main__":
    import sys
    conf(default_config_files=['/root/neutron.conf'])
    print conf.zpp.z #True
    print type(conf.zpp.z) #bool对象
  • IntOpt(name, min=None, max=None)

#参数
name: the option's name
min: 最小值 #当配置的值小于此值时,会抛出异常
max: 最大值 #当配置的值大于此值时,会抛出异常

#示例
##配置
[zpp]
z=8


##代码
from oslo_config import cfg,types

conf = cfg.CONF
cli_opt = cfg.IntOpt('z', min=1, max=65535)
cfg.CONF.register_group(cfg.OptGroup('zpp'))
cfg.CONF.register_opt(cli_opt, 'zpp')

if __name__ == "__main__":
    import sys
    conf(default_config_files=['/root/neutron.conf'])
    print conf.zpp.z  #8
    print type(conf.zpp.z) #<type 'int'>


  • FloatOpt(name, min=None, max=None)

#参数
name: the option's name
min: 最小值 #当配
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值