oslo_config 實現命令列
阿新 • • 發佈:2018-12-15
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