oslo_config 实现命令行

oslo_config 是openstack 的命令行和配置库.本文用oslo_config 实现一个简单的命令行工具mycmd.主要实现 "mycmd ls" 和 "mycmd cd".由于目的主要在于介绍oslo_config实现命令行.因此两个命令并没有实际功能只是打印.

1. 创建包MyCmd:

# tree
.
├── __init__.py
├── mycmd.py

0 directories, 2 files

其中mycmd.py内容如下:

from oslo_config import cfg
import sys

CONF = cfg.CONF

class MyCommand(object):
    def ls(self):
        print "MyCommand ls"

    def cd(self):
        print "MyCommand cd"

def add_command_parsers(subparsers):
    commond_object = MyCommand()
    parser = subparsers.add_parser('ls',
        help="This is mycmd ls")

    parser.add_argument('-m', '--message')
    parser.add_argument('-a', '--all')
    parser.set_defaults(func=commond_object.ls)

    parser=subparsers.add_parser('cd',
        help="This is mycmd cd")

    parser.add_argument('-m', '--message')
    parser.add_argument('-r', '--directory')
    parser.set_defaults(func=commond_object.cd)

def main():
    command_opt = cfg.SubCommandOpt('mycmd',
                title='MyCmd', handler=add_command_parsers,
                help='My Command')
    CONF.register_cli_opt(command_opt)
    CONF(sys.argv[1:], __name__)
    CONF.mycmd.func()


2. 将包移动到python的site-package下面:/usr/lib/python/site-package/下面

3. 在/usr/bin目录下实现脚本mycmd,内容如下:

import sys 

from MyCmd.mycmd import main                                                                                                                    


if __name__ == "__main__":
    sys.exit(main())                                                                                                                                       
                                                                                                                           

4. 使用命令

# mycmd ls
MyCommand ls
# mycmd cd
MyCommand cd

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值