实验目标:
为OpenStack Nova 增加一个扩展API os-tests
实验环境:
CentOS 6.4
OpenStack Grizzly
操作流程:
1、在/nova/api/openstack/compute/contrib下创建一个Python文件 tests.py
from nova import exception
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
authorize = extensions.extension_authorizer('compute', 'tests')
class TestsController(wsgi.Controller):
'''
classdocs
'''
def __init__(self, *args, **kwargs):
LOG.debug("tests_api_init")
super(TestsController, self).__init__(*args, **kwargs)
def index(self,req):
result={}
result["test"] = "extension-api work"
return result
def show(self, req, id):
pass
def create(self,req,body):
pass
def delete(self, req, id):
pass
class Tests(extensions.ExtensionDescriptor):
'''Tests'''
name = "Tests"
alias = "os-tests"
namespace = "http://docs.openstack.org"
updated = "2013-03-25T00:00:00+00:00"
def get_resources(self):
resources = [extensions.ResourceExtension('os-tests',TestsController())]
return resources;
2、重启nova-api 服务:
]# service openstack-nova-api restart
实验结果:
使用curl测试API,执行:
curl -v -X GET -H "Content-type: application/json" http://127.0.0.1:8774/v2/cea139d0c11246608986917c6a43076a/os-tests | python -mjson.tool
返回:
{
"test": "extension-api work"
}