(三) OPENSTACK 学习之 Oslo Config (oslo.config) 自己动手写项目

阿拉将要自己新建一个项目,来show 一下 oslo config的用法。我用的环境是:配有virtualenv的ubuntu系统。

首先让我们创建一个简单的项目:

$ virtualenv example-app
$ cd example-app
$ source bin/activate
$ pip install oslo.config
$ touch app.py
$ touch app.conf

 pip 安装 oslo.config 并且创建两个python文件:

app.py ----我们的主代码

app.conf----用来保存我们的一些配置 

首先,在app.conf里面放个吧参数:

[simple]
enable = True

接着给app.py 添加一些又simple又naive的代码:
from __future__ import print_function
from oslo.config import cfg
 
 
opt_group = cfg.OptGroup(name = 'simple' ,
                          title = 'A Simple Example' )
 
simple_opts = [
     cfg.BoolOpt( 'enable' , default = False ,
                 help = ( 'True enables, False disables' ))
]
 
CONF = cfg.CONF
CONF.register_group(opt_group)
CONF.register_opts(simple_opts, opt_group)
 
 
if __name__ = = "__main__" :
     CONF(default_config_files = [ 'app.conf' ])
     print (CONF.simple.enable)

观察一下代码,你可以注意到,首先呢设置opt_group和simple_opts的变量,之后再设置一下simple_opts列表来保存config 文件的enable变量的值。最后一步是注册对应的组别。需要强调一下,你可以同时使用多个配置文件。例子如下:

CONF(default_config_files = [ 'app.conf' , 'mything.conf' ])

实际应用中,你还可能更加经常地用到如下的形式:

CONF(default_config_files = [ '/etc/example-app/app.conf' ])

运行这个程序,程序会打出enable的值为True。:)

继续编辑 app.conf的内容:

enable = False

再次运行程序,你将得到False.

要走就走得远!让我们更加深入一些,咱再往app.conf里面添加一些乱七八糟的数据:

[simple]
 
enable = True
 
[morestuff]
 
# StrOpt
message = Hello World
 
# ListOpt
usernames = ['Joe', 'Jessica', 'Peter']
 
# DictOpt
usermetadata = {'Joe': 'Manager', 'Jessica': 'CEO', 'Peter': 'Security Guard'}
 
# IntOpt
payday = 20
 
# FloatOpt
pi = 3.14

这里呢,我们添加了很多各种奇奇怪怪的数据类型: StrOpt, ListOpt, DictOpt, IntOp, FloatOpt。

修改 app.py 的代码以获取更多的值:

from __future__ import print_function
from oslo.config import cfg
 
 
opt_simple_group = cfg.OptGroup(name = 'simple' ,
                          title = 'A Simple Example' )
 
opt_morestuff_group = cfg.OptGroup(name = 'morestuff' ,
                          title = 'A More Complex Example' )
 
simple_opts = [
     cfg.BoolOpt( 'enable' , default = False ,
                 help = ( 'True enables, False disables' ))
]
 
morestuff_opts = [
     cfg.StrOpt( 'message' , default = 'No data' ,
                help = ( 'A message' )),
     cfg.ListOpt( 'usernames' , default = None ,
                 help = ( 'A list of usernames' )),
     cfg.DictOpt( 'jobtitles' , default = None ,
                 help = ( 'A dictionary of usernames and job titles' )),
     cfg.IntOpt( 'payday' , default = 30 ,
                 help = ( 'Default payday monthly date' )),
     cfg.FloatOpt( 'pi' , default = 0.0 ,
                 help = ( 'The value of Pi' ))
]
 
CONF = cfg.CONF
 
CONF.register_group(opt_simple_group)
CONF.register_opts(simple_opts, opt_simple_group)
 
CONF.register_group(opt_morestuff_group)
CONF.register_opts(morestuff_opts, opt_morestuff_group)
 
 
if __name__ = = "__main__" :
     CONF(default_config_files = [ 'app.conf' ])
     print ( '(simple) enable: {}' . format (CONF.simple.enable))
     print ( '(morestuff) message :{}' . format (CONF.morestuff.message))
     print ( '(morestuff) usernames: {}' . format (CONF.morestuff.usernames))
     print ( '(morestuff) jobtitles: {}' . format (CONF.morestuff.jobtitles))
     print ( '(morestuff) payday: {}' . format (CONF.morestuff.payday))
     print ( '(morestuff) pi: {}' . format (CONF.morestuff.pi))

现在呢,当咱run起来这个程序的时候,得到的结果应该是兹样子的:

(simple) enable: True
(morestuff) message :Hello World
(morestuff) usernames: ["['Joe'", "'Jessica'", "'Peter']“]
(morestuff) jobtitles: {“{‘Joe’”: “‘Manager’”, “‘Peter’”: “‘Security Guard’}”, “‘Jessica’”: “‘CEO’”}
(morestuff) payday: 20
(morestuff) pi: 3.14

当然喽,还有一大堆乱七八糟的数据类型你还可以用用: MultiStrOptSubCommandOpt 等等喽。反正我是用不到滴。

翻得比较挫,请多多见谅。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值