openstack kilo 擴展nova api方法


在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'})
        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相關技術文章,在這裏,只有純乾貨。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章