如何拓展OpenStack nova
来源:互联网 发布:centos jdk rpm 编辑:程序博客网 时间:2024/04/30 16:02
OpenStack nova api有核心资源与扩展资源,这里记录的是如何拓展OpenStack nova api的拓展资源
1./nova/api/openstack/compute/contrib目录下是nova的扩展资源,在此目录下创建我们的代码,文件名为my_extension.py,应为类名的小写,内容如下例
from nova.api.openstack import extensionsfrom nova.api.openstack import wsgiimport webobfrom webob import excfrom nova import dbfrom nova import exceptionfrom nova.api.openstack import extensionsauthorize = extensions.extension_authorizer('compute', 'my_extension')class MyExtensionController(wsgi.Controller): def index(self, req): result = {} context = req.environ['nova.context'] authorize(context) result["key"] = "index" return result def create(self, req): result = {} context = req.environ['nova.context'] authorize(context) result["key"] = "create" return result def show(self, req, id): result = {} context = req.environ['nova.context'] authorize(context) result["key"] = "show" return result def update(self, req): result = {} context = req.environ['nova.context'] authorize(context) result["key"] = "update" return result def delete(self, req, id): return webob.Response(status_int=202)class My_extension(extensions.ExtensionDescriptor): """my first extension.""" name = "MyExtension" alias = "os-my-extension" namespace = "........" updated = "....." def get_resources(self): resources = [] res = extensions.ResourceExtension('os-my-extension', MyExtensionController(), member_actions={}) resources.append(res) return resources def get_controller_extensions(self): controller = MyExtensionController() extension = extensions.ControllerExtension(self, 'servers', controller) return [extension]
重启nova服务,用如下代码测试
import httplib2http = httplib2.Http()url = 'http://controller:8774/v2/944fbff812a64d00bb12b347f9404e1e/os-my-extension/1'headers = {'X-Auth-Project-Id': 'admin', 'User-Agent': 'python-novaclient', 'Accept': 'application/json','X-Auth-Token': u'7f81cae370e04c8c8e310cad0b917c7b'}response, content = http.request(url, 'GET', headers=headers)print responseprint content
调用的将是show函数,content内容为{"key":"show"}
或者使用curl
curl -v -X GET -H 'X-Auth-Token: 1c6e358a3cc1456db14fc73051ef39c7' http://controller:8774/v2/944fbff812a64d00bb12b347f9404e1e/os-my-extension/1 | python -mjson.tool
2 0
- 如何拓展OpenStack nova
- 如何获取openstack nova各版本源码
- Nova 是如何统计 OpenStack 计算资源
- Nova 是如何统计 OpenStack 计算资源
- openstack nova
- Openstack-nova
- openstack nova
- Nova是如何统计OpenStack计算资源的(转)
- OpenStack Nova Architecture
- OpenStack Compute(Nova)功能分析
- OpenStack Compute(Nova)功能分析
- OpenStack Compute(Nova)功能分析
- openstack nova 源码分析
- OpenStack:Nova基本功能介绍
- 【openstack】Nova中的policy
- 【OpenStack】Nova中的create_image
- OpenStack nova常用命令简介
- openstack nova常用命令
- 7,8天
- 【JQuery】动态加载的图片如何实现LazyLoad
- Javascript模块化编程
- poj 1200 hash
- java switch支持的数据类型
- 如何拓展OpenStack nova
- 如何反编译Android的Apk文件获取其代码和资源文件
- 程序对文本的操作
- git 在patch中的使用
- LSGO软件技术团队2015~2016学年第七周(1012~1018)总结
- 一个简单地ViewPager自定义的轮播图
- Android的资源文件分类
- iOS7编译错误:CGContextSaveGState...please set CG_CONTEXT_SHOW_BACKTRACE...
- api接口、RPC、WebService分别解决什么问题