Openstack Api分析(三)

本文详细介绍了如何在OpenStack中自定义API,包括在现有资源上增加函数、添加扩展资源和定义新的核心资源三种方式。同时,文章还讨论了HTTP请求处理、身份权限验证、API请求流量控制等高级功能,以及如何使用pastedeploy灵活开发WSGIServer。

转自http://www.choudan.net/2013/07/31/OpenStack-API%E5%88%86%E6%9E%90(%E4%B8%89).html

自定义API

根据前面的介绍,我们就可以按照它的规则自定义自己的API了。创建自己的API有三种方式:

*.在原有的资源上增加函数,例如在servers上增加一个接口,查看虚拟机的资源利用情况
*.添加扩展资源,定义新的扩展资源
*.添加核心资源,定义新的核心资源

method 1
对于第一种情况,应该是最简单的,我们想在现有的servers上添加一个接口,意味着在servers的controller中添加一个函数,如何能够正确的添加了,我们需要像下图一样,给该函数添加几个装饰器,其中@wsgi.action装饰器需要起一个短名字,然后再http请求的body中添加一条记录{action:name},这样就OK了。

这里写图片描述

method 2

添加新的扩展资源,我们需要写一个py文件,定义一个class,将其放在nova.api.openstack.compute.contrib目录下面,文件名小写,然后再文件中定义一个class,类名和文件一样,只是首字母大写,该class要继承于ExtensionDescriptor,并且定义四个变量,name,alias,updated,namespace,并且要保证alias不和其他的冲突,唯一性。

1.如果新定义的扩展资源只是扩展已存在的核心资源,需要重写get_controller_extensions方法,该方法需要有一个新的Controller class,该class 继承于所扩展的核心资源的controller,并且该class的成员函数需要添加@wsgi.extends装饰器 2.如果新定义的扩展资源也定义了新的资源,那么需要再定义个属于自己的Controller类,包含,index,create,delete等等函数 3.以上可以二者兼备
参考下面这张图:

这里写图片描述

这里写图片描述

这里写图片描述

method 3
定义一个新的核心资源,我们需要在nova.api.openstack.compute目录下面创建一个新的py文件,按照servers这样的文件来写一个自己的核心资源,大家可以参考servers.py的方法,还有上面两种方法,最复杂的是在nova.api.openstack.compute.init.py文件中的APIRouter class中使用mapper.resource方法。
这里写图片描述

首先创建该资源,然后调用mapper.resource方法,该方法有很多可选的变量用来对url进行约束。除了前三个参数是必须的外,后面的都是可选的,至于这些参数到底什么作用,参考这篇文章中的链接,概念和Rails routes 中的一样。

总结

OpenStack API的框架设计的很灵活,可以很方便灵活的添加api,扩展功能,参考它的实现方式,可以学习到该如何优雅的实现一套API接口。关于HTTP request,抽象的带过了,其中还有很多知识值得学习,例如,在filter层,可以进行身份权限验证,API请求流量控制,Debug开关等等,使用paste deploy来开发WSGI Server确实很灵活很方便,只需要简单的更改paste.ini文件就可以,如果想做一个日志统计,也可以想filter一样,添加一层。

如果理解了Restful所谓的对资源定义,就能够明白你哪些URL,其中的Resource,Extension等等,并且这些概念这OpenStack的其他service中也是一样,在python-****client中同样也存在这样的概念,方便来补充功能。

理解了HTTP 请求的处理,再加上前面分析的RPC机制,这样就理清除了OpenStack中间的两大通信方式,把底层的基础扫清除了,为后面更好的关注于OpenStack的功能和云平台的设计奠定基础。

这一块都是自己在阅读源码的基础上思考得来,可能不存在错误,不够严谨,欢迎大家批评指导!任何问题都及时回复大家!

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 常见问题解答 网页打开速度慢或者打不开网页? 受到多种因素的影响,对于非会员用户我们无法提供最优质的服务。 如果您希望得到最棒的体验,请至大会员页面("右上角菜单 → 大会员")根据说明操作。 请注意:受制于国际网络的诸多不确定性,我们无法对任何服务的可靠性做出任何保证。 如果出现了网络连接相关的问题,我们建议您先等待一段时间,之后再重试。 如果您在重试后发现问题仍然存在,请联系我们,并说明网络问题持续的时间。 图片下载后无法找到? 打开"右上角菜单 → 更多 → 修改下载路径",在弹出的对话框中可以看到当前图片的保存路径。 此外,由于网络因素,在保存图片之后,等待屏幕下方出现"已保存到..."后,才能在本地找到图片。 如何更改图片保存的目录? 请参见"右上角菜单 → 更多 → 修改下载路径"。 翻页不方便? 在点进某个图片后,通过在图片上向左或向右滑动,即可翻页查看下一个作品。 如何保存原图/导出动图? 长按图片/动图,在弹出的菜单中选择保存/导出即可。 输入账号密码后出现"进行人机身份验证"? 此为pixiv登陆时的验证码,请按照要求点击方框或图片。 在pxvr中注册pixiv账号后,收到验证邮件,无法访问邮件中的验证链接? 请复制邮件中的链接,打开pxvr中的"右上角菜单 → 输入地址"进行访问。 能否自动将页面内容翻译为汉语? 很抱歉,pxvr暂不提供语言翻译服务。 图片下载类型是否可以选择? 能否批量下载/批量管理下载? 已支持批量下载多图作品中的所有原图:找到一个多图作品,进入详情页面后,点击图片进入多图浏览模式,长按任意一张图片即可看到批量下载选项。 关于上述其他功能,我们...
考虑局部遮阴的光伏PSO-MPPT控制模型(Simulink仿真实现)内容概要:本文介绍了基于Simulink仿真实现的考虑局部遮阴的光伏PSO-MPPT控制模型,旨在通过粒子群优化(PSO)算法解决光伏发电系统在局部阴影条件下最大功率点跟踪(MPPT)的效率问题。文档不仅提供了该模型的技术实现方法,还列举了大量相关的MATLAB/Simulink仿真资源,涵盖电力系统、智能优化算法、机器学习、路径规划、信号处理等多个科研方向,适用于复现高水平期刊论文和开展创新性研究。文中强调科研需逻辑缜密、善于借力,并提倡结合实际仿真与理论分析以提升研究深度。 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事光伏系统优化、智能算法应用或相关领域研究的研发人员及硕博研究生。 使用场景及目标:①研究局部遮阴下光伏系统MPPT控制策略的性能提升;②利用PSO等智能优化算法解决非线性、多峰值优化问题;③复现SCI/EI级别论文中的MPPT控制模型;④开展光伏系统建模与仿真教学或项目开发。 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码与模型文件,按照目录顺序逐步学习,重点理解PSO算法在MPPT中的应用机制,并通过修改参数、对比实验等方式深入掌握仿真细节,提升工程实践与科研创新能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值