应用场景:Nova(openstack)
openstack提供了许多的api,这些api大多是以restful形式发布的,也就是所称的小web server。相信通过这个web server一词,很多的同志都已经知道如何去扩展一个nova的api,它的内部方法该如何定义。如果你还是很好奇它的格式是什么样的,可到openstack官网查看https://developer.openstack.org/zh_CN/api-guide/quick-start/进行查看。
接下来我们简要介绍nova api扩展的步骤和注意项:
1.在nova/nova/api/openstack/compute/contrib目录下创建要扩展的api模块。
2.在这个model文件里创建一个class,这个class的名字要和model的名字一致并且首字母大写。
3.这个class还应继承extensions.ExtensionDescriptor。
4.根据https://wiki.openstack.org/wiki/WritingRequestExtensions
所给,还应该覆盖name、alias、namespace、updated属性。
5.然后对get_resources方法进行复写,这个方法内可以放置许多个资源扩展的列表。
6.对资源对象定义一个controller来控制对资源的增删改查,也可以不使用约定好的函数,使用自定义函数需要在member_actions={}中定义。但推荐采用约定的函数,约定优于配置,这也是软件设计的一种原则。其中index查询所有,show查询一个,create添加资源,update对资源进行修改,delete删除资源
网友评论