oslo.config组件初探

solo.config是一个用于从命令行和配置文件中解析配置项的OpenStack通用库

一、从配置文件中读取
  1. 目录结构:

    -- src
        |-- resolve.py
        |-- myconf.cfg 
    
  2. myconf.cfg
    要解析的配置文件,有三个组

    [DEFAULT]
    name = default
    age = 20
    [pql]
    name = pengqinglan
    age = 22
    ip = 10.0.0.1
    port = 888
    [wcr]
    name = wuchunrong
    age = 23
    ip = 10.0.0.2
    port = 8888
  3. resolve.py:
    首先引入cfg,得到CONF(cfg.py 中 ConfigOpts的实例)

    from oslo_config import cfg
    CONF = cfg.CONF

    然后定义要匹配的配置项和配置组

    
    # default_opts用于匹配[default]组
    
    default_opts = [
        cfg.StrOpt('name',
                   default='default',
                   help='default name'),
        cfg.IntOpt('age',
                default=20,
                help='default name'),
    ]
    
    # opts用于匹配[pql]组和[wcr]
    
    opts = [
            cfg.StrOpt('name', default='dog', help='name'),
            cfg.IntOpt('age', default=1, help='age'),
            cfg.IPOpt('ip', default='0.0.0.0', help='ip'),
            cfg.IntOpt('port', default=1, help='port'),
    ]
    
    # 定义配置组 group1 用于匹配pql组,group2 用于匹配wcr组
    
    group1 = cfg.OptGroup(name='pql', title='t1')
    group2 = cfg.OptGroup(name='wcr', title='t2')

    接着注册配置组和配置项

    conf.register_group(group1)
    conf.register_opts(opts, group=group1)
    conf.register_group(group2)
    conf.register_opts(opts, group=group2)
    
    # 注册时默认组为deault组
    
    conf.register_opts(default_opts)

    最后测试结果

    
    # 配置要解析的文件
    
    conf(default_config_files=['setup.cfg'])
    print conf.pql.name
    print conf.pql.age
    print conf.pql.ip
    print conf.pql.port
    
    print conf.wcr.name
    print conf.wcr.age
    print conf.pql.ip
    print conf.pql.port
    
    print conf.name
    print conf.age

    输出

    pengqinglan
    22
    10.0.0.1
    888
    wuchunrong
    23
    10.0.0.1
    888
    default
    20
二、从命令行中读取
  1. 引入cfg,定义匹配项

    from oslo_config import cfg
    
    CONF = cfg.CONF
    cli_opts = [
        cfg.StrOpt('name', default='name', help='This is name'),
        cfg.IntOpt('age', default=1, help='This is age'),
    ]
  2. 注册配置项,注入命令参数

    CONF.register_cli_opts(cli_opts);
    CONF(sys.argv[1:])
    
    # 打印解析结果
    
    print CONF.name
    print CONF.age
  3. 测试

    $ python oslo_config_cli_test.py --name pengqinglan --age 22
    pengqinglan
    22

    查看用法,已经可以发现参数 –name 与 –age

    $ python oslo_config_cli_test.py -h                         
    usage: oslo_config_cli_test [-h] [--age AGE] [--config-dir DIR]
                                [--config-file PATH] [--name NAME]
    
    optional arguments:
      -h, --help          show this help message and exit
      --age AGE           This is age
      --config-dir DIR    Path to a config directory to pull *.conf files from.
                          This file set is sorted, so as to provide a predictable
                          parse order if individual options are over-ridden. The
                          set is parsed after the file(s) specified via previous
                          --config-file, arguments hence over-ridden options in
                          the directory take precedence.
      --config-file PATH  Path to a config file to use. Multiple config files can
                          be specified, with values in later files taking
                          precedence. Defaults to None.
      --name NAME         This is name
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值