扩展 OpenStack 的 REST API 的方法
来源:互联网 发布:淘宝客服头像图片女 编辑:程序博客网 时间:2024/05/19 18:46
以Nova REST API为例, 你应该按照以下步骤来扩展 Nova REST API
(使用 类nova.api.openstack.compute.contrib.floating_ips.Floating_ips 作为例子)
1) 创建一个新的extension 子类. Extension子类应该派生于“nova.api.openstack.extensions ExtensionDescriptor”
以 Floating_ips 类为例
2) 在 Nova API 中 添加一个新的资源类型
在Floating_ips 类中
- 覆写父类中的方法 “get_resources()”
- 在方法 “get_resources()” 中,, 返回 ResourceExtensions 列表, 来注册你的新的 资源类型 / URL路径 / Controller 等等
例如, 以下代码会创建一个新的资源类型 “os-floating-ips”.
def get_resources(self):
resources = []
res =extensions.ResourceExtension('os-floating-ips',
FloatingIPController(),
member_actions={})
resources.append(res)
return resources
新资源 “os-floating-ips” 会和以下URL匹配.
3) 为Nova API中已有的资源类型, 添加新的 controller 方法
在Floating_ips 类中
- 覆写父类中的方法 “get_controller_extensions”
- 在函数 “get_controller_extensions”,中 返回一系列controller列表
例如, 以下代码会为 已有资源“servers” 添加新的controller(/opt/stack/nova/nova/api/openstack/compute/servers.py)
defget_controller_extensions(self):
controller =FloatingIPActionController(self.ext_mgr)
extension =extensions.ControllerExtension(self, 'servers',controller)
return [extension]
新的controller会和以下URL匹配
4) 注册我们的extension 子类到Nova API中
- Extension Module 命名规则
比如我们的extension子类名字叫: classFloating_ips(extensions.ExtensionDescriptor):
那么python module的文件名就要叫(注意全部小写): floating_ips.py
- Extension Module 位置
把新的module文件放到路径 “/opt/stack/nova/nova/api/openstack/compute/contrib/”
e.g /opt/stack/nova/nova/api/openstack/compute/contrib/floating_ips.py
Nova API会在启动时, 自动发现我们的extension, 并进行注册
- 扩展 OpenStack 的 REST API 的方法
- 扩展 OpenStack 的 REST API 的方法
- openstack 中的Routes + webob 的 REST API
- OpenStack REST API 的 SSL 配置
- OpenStack API 通用扩展方法
- 使用cURL操作Openstack对象存储的ReST API
- 使用cURL操作Openstack对象存储的ReST API
- OpenStack REST API问题
- Openstack rest api理解
- 关于 DataSnap Rest Api 方法的定义
- openstack kilo 扩展nova api方法
- ALM11的REST API
- REST风格的API
- rest api的编写
- 通过Rest API调用OpenStack
- openstack学习笔记 --- Rest API
- Openstack API 类型 & REST 风格
- openstack rest api 调用示例
- Linux中通过/proc/stat等文件计算Cpu使用率
- 体会棋盘游戏中的数据存储
- 黑马程序员 :交通灯系统的学习
- drupal自定义node权限
- Invalid location of tag 解决办法分析
- 扩展 OpenStack 的 REST API 的方法
- 函数参数的获取:嵌入汇编的方法
- 理解NS2中的OTcl/tclCL
- 利用PaceMaker+Qpid(持久化消息)+NFS的Qpid高可用配置
- 如何解决SQL Server内存不断增加问题
- Git中文教程
- spdofsound 340.29定义
- POJ3207——Ikki's Story IV - Panda's Trick
- Javascript面向对象编程(三):非构造函数的继承