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所支持的配置选项有:

  1. StrOpt:字符串类型

  2. BoolOpt:布尔型

  3. IntOpt:整数型

  4. FloatOpt:浮点数型

  5. ListOpt:字符串列表类型

  6. DictOpt:字典类型,要求字典中的值为字符串类型

  7. MultiStrOpt:可以分多次配置的字符串列表

  8. IPOpt:Ip地址类型

  9. 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试用总结相关推荐

  1. #Sora#openstack基础库stevedore试用总结

    2019独角兽企业重金招聘Python工程师标准>>> 什么是stevedore? stevedore是建立在setuptools的entry point的功能上的,用于python ...

  2. python openstack oslo_config使用_OpenStack配置解析库oslo.config的使用方法

    OpenStack的oslo项目旨在独立出系统中可重用的基础功能,oslo.config就是其中一个被广泛使用的库,该项工作的主要目的就是解析OpenStack中命令行(CLI)或配置文件(.conf ...

  3. oslo.config资源

    官方文档:http://docs.openstack.org/developer/oslo.config/cfg.html 转载于:https://blog.51cto.com/6374820/166 ...

  4. oslo config

    前段时间开始认真看了一下Ryu的源码,发现oslo是一个非常方便的命令行解析库,可以用于CLI和CONF的解析.oslo是 OpenStack发起的项目,全称为OpenStack Common Lib ...

  5. 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;

    需求场景:微信小程序不少API都有最低版本支持,为了避免不必要的麻烦,我们可以根据需要给小程序设置基础库最低版本,这样若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新微信 ...

  6. Python中运用的基础库

    库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主要用于在终端或浏览器端构建格式 ...

  7. OpenStack 基础知识

    OpenStack 基础知识 文章目录 OpenStack 基础知识 前言 一.虚拟化 1.I型虚拟化 2.II型虚拟化 二.KVM & Libvirt 前言 了解openstack之前需要掌 ...

  8. Openstack基础环境交换机常用配置(CISCO 3750G为例).md

    Openstack基础环境交换机常用配置(CISCO 3750G为例) 文章目录 Openstack基础环境交换机常用配置(CISCO 3750G为例) 基础操作 初始化配置 备份原交换机配置 交换机 ...

  9. 云开发、自定义组件、分包加载、基础库兼容问题、骨架屏使用

    一.云开发基本使用(了解) 1.环境初始化 开发前需要在小程序端选择好相应的云环境,一般在小程序的app.js文件中进行处理 onLaunch: function () {if (!wx.cloud) ...

最新文章

  1. sys连接oracle数据库提示无法解析,用Oracle数据库,用sys登录的时候口令正确,但是却登录不了...
  2. 将Linux系统下交叉编译的依赖库推到ARM平台下无法建立以来关系解决
  3. it编年史_Java的编年史和低延迟
  4. 01.神经网络和深度学习 W1.深度学习概论
  5. 品牌设计工作室html5模板
  6. R语言作加权最小二乘_超越谷歌BERT!依图预训练语言理解模型入选NeurIPS
  7. Linux学习笔记---修改CPU频率为自动调节模式
  8. android全局livedata,Android 使用ViewModel,LiveData高效、简
  9. xcode 4 制作静态库(转)
  10. Hibernate占位符?和:及JPA
  11. php如何获取手机序列号,Android应用获取设备序列号的方法
  12. xposed修改微信步数
  13. nginx配置-优化静态资源
  14. d3d9.dll丢失怎么办
  15. 程序员,我要为了这个名号而疯狂
  16. 华为三层交换机5700系列配置示例
  17. html设计应用程序,软件工程师-20个HTML5应用程序设计示例(10页)-原创力文档
  18. SpringBoot 实现 QQ邮箱注册和登录
  19. K折交叉验证K-CV与StratifiedKFold
  20. JD旗舰店店铺商品详情接口代码对接教程

热门文章

  1. .NET简谈组件程序设计之(AppDomain应用程序域)
  2. 如何定义研发KPI:以团队速度为标准
  3. Spring Security源码分析八:Spring Security 退出
  4. selenium+python自动化84-chrome手机wap模式
  5. codeforces 700B Connecting Universities
  6. 前端模块化--这是我看过讲得比较好的东东
  7. Linux上安装paramiko模块
  8. 重写了博客上的代码着色脚本
  9. android 图片加载过多崩溃
  10. 交换机复习笔记 广播风暴抑制