阿拉将要自己新建一个项目,来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 |
from
__future__ import
print_functionfrom
oslo.config import
cfgopt_group
=
cfg.OptGroup(name=‘simple‘, title=‘A
Simple Example‘)simple_opts
=
[ cfg.BoolOpt(‘enable‘,
default=False, help=(‘True
enables, False disables‘))]CONF
=
cfg.CONFCONF.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]#
StrOptmessage
= Hello World#
ListOptusernames
= [‘Joe‘, ‘Jessica‘, ‘Peter‘]#
DictOptusermetadata
= {‘Joe‘: ‘Manager‘, ‘Jessica‘: ‘CEO‘, ‘Peter‘: ‘Security Guard‘}#
IntOptpayday
= 20#
FloatOptpi
= 3.14 |
这里呢,我们添加了很多各种奇奇怪怪的数据类型: StrOpt, ListOpt, DictOpt, IntOp, FloatOpt。
修改 app.py 的代码以获取更多的值:
from
__future__ import
print_functionfrom
oslo.config import
cfgopt_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.CONFCONF.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
当然喽,还有一大堆乱七八糟的数据类型你还可以用用: MultiStrOpt, SubCommandOpt 等等喽。反正我是用不到滴。
翻得比较挫,请多多见谅。
(三) OPENSTACK 学习之 Oslo Config (oslo.config) 自己动手写项目,布布扣,bubuko.com
(三) OPENSTACK 学习之 Oslo Config (oslo.config) 自己动手写项目
原文:http://blog.csdn.net/alvine008/article/details/24364243