您的位置:首页 > 运维架构

openstack kilo 扩展nova api方法

2016-07-06 16:21 260 查看
在nova/api/openstack/compute/contrib目录下创建一个自己的文件,我这里是storage_pool.py

from nova.api.openstack import wsgi
from nova.api.openstack import extensions

#authorize = extensions.extension_authorizer('compute', 'storage_pool')

class Controller(wsgi.Controller):
def detail(self, req):
return {'pool_name':'ssd'}

class Storage_pool(extensions.ExtensionDescriptor):
"""self-defined Nova-api"""
name = "Storage_pool"
alias = "os-storage-pool"
namespace = "http://docs.openstack.org/compute/ext/storage_pool/api/v1.1"
updated = "2011-08-08T00:00:00Z"

def get_resources(self):
resources = []
res = extensions.ResourceExtension(
'os-storage-pool',
Controller(),
collection_actions={'detail':'GET'})
4000

resources.append(res)
return resources

要是先一个extensions api需要创建一个类继承ExtensionDescriptor,并复写get_resources方法。在这里的get_resources方法中,定义了一个自定义的集合操作detail,这个操作对应的处理方法是detail方法,detail方法在Controller类中定义,它返回一个字典。

验证

curl -v -X GET -H "X-Auth-Token: $OS_TOKEN" http://controller:8774/v2/f429c2349d0b03aa3c70c73723/os-storage-pool/detail |python -m json.tool

返回
{
"pool_name": "ssd"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  openstack restful api 扩展