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支持的一些类型

最新文章

  1. c/c++的Soap应用
  2. Winform开发框架之客户关系管理系统(CRM)的开发总结系列4-Tab控件页面的动态加载
  3. TNS-01201: Listener cannot find executablen
  4. android 学习随笔五(界面)
  5. Laravel 清空配置缓存
  6. 多项式相乘(C语言)
  7. css 简单 返回顶部 代码及注释说明
  8. Linode VPS上架日本东京2号机房,性能速度评测报告(推荐)
  9. VS2010编译错误 LNK 2019 unresolved external symbol错误解决办法
  10. CodeSmith系列(三)——使用CodeSmith生成ASP.NET页面
  11. ViewPagerIndicator+viewpager指示器详解
  12. ACM常用STL
  13. LR单用户,重复操作日志
  14. 饮冰三年-人工智能-linux-08 软件包管理(Python的安装)
  15. 【洛谷P4289】移动玩具 状压bfs
  16. Shiro笔记(一)基本概念
  17. Oracle 错误代码小结
  18. elementUI和iview兼容么
  19. streamsets excel 数据处理
  20. SQL基于时间的盲注过程

热门文章

  1. 数据库(二)之SQL Server
  2. 天梯 1083 Cantor表
  3. 产品排序 product
  4. 使用转义防御XSS
  5. 使用RegSetValueEx修改注册表时遇到的问题(转)
  6. MySQL分布式集群之MyCAT(二)【转】
  7. python字典解析
  8. Team Foundation Server 2010服务器安装
  9. 分析new delete 的本质
  10. Merkle tree在区块链中的应用