zoukankan      html  css  js  c++  java
  • oslo.config

    cfg Module来自于OpenStack中的重要的基础组件oslo.config,通过cfg Module可以用来通过命令行或者是配置文件来配置一些options,

    对于每一个选项使用Opt类或者其子类来定义。首先我们来看一个定义option的例子:

    #-*- coding:utf-8 -*-
    #!/usr/bin/env python 
    from oslo_config import cfg
    from oslo_config import types
    import sys 
    
    #定义组
    keystone_authtoken = cfg.OptGroup(name='keystone_authtoken',
                                title='keystone_authtoken options')
    
    #自定义类型和范围
    PortType = types.Integer(1,65535)
    
    
    #定义配置文件中的值K/V,可以设置默认值
    opts = [  
    #定义了一个Str类型的选项,名字是bind_host,默认值是0.0.0.0,还有帮助信息,用的是Opt的子类来定义的,所以无需指定类类型,因为类型已经定下来了就是Str类型(StrOpt) cfg.StrOpt(
    'bind_host', default='0.0.0.0',help='help info'),
    #使用Opt类来定义一个选项,因为用的是基类,类型可以是任意的,所以需要使用type字段明确其类型,使用这种方式的好处我觉得就是可以定制类型的值范围 cfg.Opt(
    'bind_port', default=9292,type=PortType), ] keystone_opts = [
    cfg.StrOpt(
    'auth_uri', default='http://controller:5000'), cfg.StrOpt('auth_url', help='Parameter can not be empty'), cfg.StrOpt('memcached_servers', help='Parameter can not be empty'), cfg.StrOpt('auth_type', help='Parameter can not be empty') ] #参数不解释-h就能看出参数的意义 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.'), ] #定义完成参数,必须注册才可以使用 def add_register(): #默认组就default,这里的group指定就是配置文件的[default]这个 CONF.register_opts(opts) #这么写就可以不用事先定义group自己就会创建,group='keystone_authtoken' CONF.register_opts(keystone_opts,group='keystone_authtoken') #注册cli命令,可以用-h查看效果 CONF.register_cli_opts(cli_opts) def start(): add_register() #配置文件路径['glance-api.conf']绝对相对都可以.一般这样用CONF(sys.argv[1:] --config-dir CONF(default_config_files=['glance-api.conf']) #CONF(sys.argv[1:]) if __name__ == '__main__': # CONF = cfg.CONF start() print(CONF.bind_port,CONF.bind_host,CONF.keystone_authtoken.auth_uri)

    Opt是父类,其下有很多特定类型的子类。下面是cfg Module支持的一些类型

     

  • 相关阅读:
    linux查看系统类型和版本
    javascript 中的继承实现, call,apply,prototype,构造函数
    redis原理分析
    HashTable 简述
    算法之 快速排序
    react js 之生命周期
    Java源代码编译过程
    Java字节码文件结构---概述
    Java程序运行时内存划分
    数据结构--汉诺塔--借助栈实现非递归---Java
  • 原文地址:https://www.cnblogs.com/menkeyi/p/7086139.html
Copyright © 2011-2022 走看看