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