之前做过扩展openstack nova,附带着也摸索了一下如何扩展openstack python novaclient,但是忘了记录一下,最近又有这方面的需求,又重新摸索了一下,记录之,因为是摸索,虽然最后的效果也达到了,但是存在很多问题,所以就不把代码贴出来。
第一步,在novaclient/v1_1下增加一个文件,例如叫my_extension.py,里面内容的编写可以参考该目录下其他文件的编写格式,例如image.py,这个文件主要的职责是负责将具体的需求发送到nova后台,需要注意的是url,要对应到nova后台。
第二步,在novaclient/v1_1的shell.py里添加你要增加的命令。可以看到,nova的命令在这里都有相应的映射,例如nova image-list在这里对应的函数为do_image_list,模仿它,假如要增加nova my-extension-list,则需要增加一个do_my_extension_list函数,然后用传入的client调用第一步增加的文件cs.my.list()实现nova my-extension-list。delete和show类似。