如何把oslo.config使用到自己的项目中

本文就简单阐述,如何把openstack的子项目oslo(配置项解析,利用oslo可以很方便做到配置项的敏感项分离,这样带来的好处就不多说了。)运用到自己的项目中,而不用再多个项目中copy重复的代码。


本文先介绍如何在自己项目中借用oslo,配置项分离的实现后续介绍。


其实oslo也不神秘,就是把common/cfg.py 文件单独拉出来,形成一个通用的Package。其主要功能是完成解析client配置项和普通配置项,下面就进入主题:


第一步:因为项目的进程启动时,就需要读取一些配置项,如config_file,verbose,debug,log_dir,log_file,log_config等供加载application使用,在我的项目里此函数为:def load_paste_app(app_name, flavor=None, conf_file=None)


第二步:使用register_cli_opts注册以上命令行配置项。


第三步:这里很关键,需要修改当前项目中bin/myproject-api的启动脚本,因为是启动脚本嘛,所以一切都是在这里开始了,故保证第一,第二步的文件在此脚本中被首先import,从而把命令行以及其他必备配置项提前加载进来。


第四步:如果此项目涉及到project-manage 命令,如db_sync、db_version、do_upgrade、do_downgrade等,这里的命令行参数的解析就不在上面第二步中的client一起加载了,而是需要使用oslo.config.cfg.SubCommandOpt函数来解析,并调用对应命令参数的函数,可以简单理解为钩子函数一样,哈哈,可能描述不太准确,感觉更加类似回调函数了。为了更加清晰,附上一段代码:


from oslo.config import cfg
import otherpackage

CONF = cfg.CONF


def do_db_version():
    """Print database's current migration level"""
    print project.db.sqlalchemy.migration.db_version()


def do_upgrade():
   pass


def do_downgrade():
    pass


def do_db_sync():
    pass


def add_command_parsers(subparsers):
    parser = subparsers.add_parser('db_version')
    parser.set_defaults(func=do_db_version)

    parser = subparsers.add_parser('upgrade')
    parser.set_defaults(func=do_upgrade)
    parser.add_argument('version', nargs='?')

    parser = subparsers.add_parser('downgrade')
    parser.set_defaults(func=do_downgrade)
    parser.add_argument('version')

    parser = subparsers.add_parser('db_sync')
    parser.set_defaults(func=do_db_sync)
    parser.add_argument('version', nargs='?')
    parser.add_argument('current_version', nargs='?')


command_opt = cfg.SubCommandOpt('command',
                                title='Commands',
                                help='Available commands',
                                handler=add_command_parsers)


def main():
    CONF.register_cli_opt(command_opt)
    .....
    pass

如果哪位在使用oslo时,遇到其他问题了,比如DuplicateOptError,ArgsAlreadyParsedError等,欢迎留言,一起讨论之。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值