#Sora#OpenStack基础库oslo.config试用总结
2019独角兽企业重金招聘Python工程师标准>>>
什么是oslo.config?
oslo.config是OpenStack用于解析配置文件和命令行参数的工具,大概是封装了argparse和configparse,令配置应用更方便。
官方文档:http://docs.openstack.org/developer/oslo.config
目前打算在项目sora中引入该库,简化程序配置方式
测试:
准备:安装oslo.config及组织相关目录
pip install oslo.config
mkdir oslo
cd oslo
touch app.conf
touch registry.py
目录树:
相关代码:
#app.conf
[DEFAULT]#defautl这个section有的时候并不需要,但是如果注册的opts没有指定一个group,则会属于default组,建议写上[schedule]
scheduler = simple
enable = True[service]
service_name = sora_compute
service_id = 1213
endpoint_ip = 10.20.10.70
#registry.py
from oslo.config import cfgschedule_opt_group = cfg.OptGroup(name='schedule',title='Scheduler Configuration') #注册一个组,name与app.conf中的schedule section对应scheduler_opts = [ #注册属于schedule_opt_group的配置选项,这里使用了StrOpt与BoolOptcfg.StrOpt('scheduler',default='memory',help='The type of scheduler'),cfg.BoolOpt('enable',default='True',help='Enable the scheduler'),
]service_opt_group = cfg.OptGroup(name='service', #注册service组title='The service which use the scheduler')service_opts = [ #注册属于service_opts组的配置选项,用了StrOpt、IntOpt和IPOptcfg.StrOpt('service',default='sora_compute',help='The default user service'),cfg.IntOpt('service_id',help='The service id'),cfg.IPOpt('endpoint_ip',help='The service endpoint ip'),
]MYCONF = cfg.CONF #注册一个对象,作为容器
MYCONF.register_group(schedule_opt_group) #注册组
MYCONF.register_group(service_opt_group)
MYCONF.register_opts(scheduler_opts,group=schedule_opt_group) #注册以字典格式的配置选项,用group指定所属组
MYCONF.register_opts(service_opts,group=service_opt_group)
MYCONF(default_config_files=['/root/oslo/app.conf']) #注册配置文件,如果没有这个,将会使用default中的数据,配置文件可以为多个,用字典指定。注意绝对路径
使用oslo.config获取配置:
>>> from oslo.config import cfg
>>> import registry
>>> print cfg.CONF.schedule.scheduler
simple
>>> print cfg.CONF.schedule.enable
True
>>> print cfg.CONF.service.service_id
1213
>>> print cfg.CONF.service.endpoint_ip
10.20.10.70
可能的疑问:为什么导入了registry却不直接用它?
回答:这的确是一种奇怪的方式,但它可以工作。我们可以用一种更直观的方式使用registry:
#例子来源于OpenStack源码
from oslo.config import cfg
cfg.CONF.import_opt('host','service') #指定从service.py(一个配置注册文件,类似上面的registry)导入host这个配置选项
hostname = cfg.CONF.host
关于oslo.config所支持的配置选项有:
StrOpt:字符串类型
BoolOpt:布尔型
IntOpt:整数型
FloatOpt:浮点数型
ListOpt:字符串列表类型
DictOpt:字典类型,要求字典中的值为字符串类型
MultiStrOpt:可以分多次配置的字符串列表
IPOpt:Ip地址类型
OptGroup:组类型
在新的oslo.config中,还支持进行类型检查,不过目前大多数的OpenStack项目都用上文的方式配置,故不详细说明。
测试过程中的坑:
在注册配置选项时,如果像:
enabled_apis_opt = cfg.ListOpt('enabled_apis',default=['ec2', 'osapi_compute'],help='List of APIs to enable by default.')
这样的单条配置选项,注册时用CONF.register_opt()
而多条配置选项时,需要用CONF.register_opts()。否则会报错
看到没?就差一个's',坑爹啊!
另外,在注册组中的配置项前,必须先注册组。
参考:
http://docs.openstack.org/developer/oslo.config
*http://www.lihuai.net/program/python/1698.html
http://www.sdnlab.com/5484.html
http://www.360doc.com/content/13/0814/22/3038654_307194414.shtml
http://blog.csdn.net/alvine008/article/details/24364243
转载于:https://my.oschina.net/hochikong/blog/478029
#Sora#OpenStack基础库oslo.config试用总结相关推荐
- #Sora#openstack基础库stevedore试用总结
2019独角兽企业重金招聘Python工程师标准>>> 什么是stevedore? stevedore是建立在setuptools的entry point的功能上的,用于python ...
- python openstack oslo_config使用_OpenStack配置解析库oslo.config的使用方法
OpenStack的oslo项目旨在独立出系统中可重用的基础功能,oslo.config就是其中一个被广泛使用的库,该项工作的主要目的就是解析OpenStack中命令行(CLI)或配置文件(.conf ...
- oslo.config资源
官方文档:http://docs.openstack.org/developer/oslo.config/cfg.html 转载于:https://blog.51cto.com/6374820/166 ...
- oslo config
前段时间开始认真看了一下Ryu的源码,发现oslo是一个非常方便的命令行解析库,可以用于CLI和CONF的解析.oslo是 OpenStack发起的项目,全称为OpenStack Common Lib ...
- 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;
需求场景:微信小程序不少API都有最低版本支持,为了避免不必要的麻烦,我们可以根据需要给小程序设置基础库最低版本,这样若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新微信 ...
- Python中运用的基础库
库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...
- OpenStack 基础知识
OpenStack 基础知识 文章目录 OpenStack 基础知识 前言 一.虚拟化 1.I型虚拟化 2.II型虚拟化 二.KVM & Libvirt 前言 了解openstack之前需要掌 ...
- Openstack基础环境交换机常用配置(CISCO 3750G为例).md
Openstack基础环境交换机常用配置(CISCO 3750G为例) 文章目录 Openstack基础环境交换机常用配置(CISCO 3750G为例) 基础操作 初始化配置 备份原交换机配置 交换机 ...
- 云开发、自定义组件、分包加载、基础库兼容问题、骨架屏使用
一.云开发基本使用(了解) 1.环境初始化 开发前需要在小程序端选择好相应的云环境,一般在小程序的app.js文件中进行处理 onLaunch: function () {if (!wx.cloud) ...
最新文章
- sys连接oracle数据库提示无法解析,用Oracle数据库,用sys登录的时候口令正确,但是却登录不了...
- 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决
- it编年史_Java的编年史和低延迟
- 01.神经网络和深度学习 W1.深度学习概论
- 品牌设计工作室html5模板
- R语言作加权最小二乘_超越谷歌BERT!依图预训练语言理解模型入选NeurIPS
- Linux学习笔记---修改CPU频率为自动调节模式
- android全局livedata,Android 使用ViewModel,LiveData高效、简
- xcode 4 制作静态库(转)
- Hibernate占位符?和:及JPA
- php如何获取手机序列号,Android应用获取设备序列号的方法
- xposed修改微信步数
- nginx配置-优化静态资源
- d3d9.dll丢失怎么办
- 程序员,我要为了这个名号而疯狂
- 华为三层交换机5700系列配置示例
- html设计应用程序,软件工程师-20个HTML5应用程序设计示例(10页)-原创力文档
- SpringBoot 实现 QQ邮箱注册和登录
- K折交叉验证K-CV与StratifiedKFold
- JD旗舰店店铺商品详情接口代码对接教程