wsgi的route中添加api流程具体解释(os

时间:2021-11-24 02:20:26


Better Me的博客:blog.csdn.net/tantexian

如需交流,欢迎大家博客留言。

在前面文章中,已经具体介绍了。怎样从页面dashboard调用novaclient然后生成一个url地址 。或从启动nova --debug list 然后调用novaclient然后生成URL地址


url地址形如: GET /v2/b077619bde964a4eb924db869fba977d/servers/detail


今天文章中要解说的是当我们以后生成了这样一个url了,下一步wsgi框架又是怎样依据url去调用nova底层对应的代码。


解说这个之前,先回顾下查看routes已公布的api。

很多其它详情请查看文章:openstack_ice之wsgi具体解释(paste从ini配置文件->routesr具体公布流程)


1、首先将route mapper打印信息出来:

vim /usr/lib/python2.6/site-packages/nova/api/openstack/__init__.py

 

wsgi的route中添加api流程具体解释(os

重新启动openstack-nova-api服务

service  openstack-nova-api restart

tailf /var/log/nova/api.log

 

wsgi的route中添加api流程具体解释(os

以上打印的route信息,,就是底层通过wsgi,将api以加入到route的mapper。公布给外边调用。


2、接下来解说怎样加入自己定义api,并加入到route mapper中,公布出来给外部调用.

注:接下来以网络模块为例,添加一个test_api接口。

下图为未加入前,network的route信息:

wsgi的route中添加api流程具体解释(os


通过之前的文章分析,找到wsgi的入口:

vim /usr/lib/python2.6/site-packages/nova/api/openstack/compute/contrib/os_networks.py

 


wsgi的route中添加api流程具体解释(os

os_network为openstack封装的,用来添加映射route mapper路由的类:


wsgi的route中添加api流程具体解释(os

中加入下图代码:test_member:post、test_collection:

wsgi的route中添加api流程具体解释(os

每次加入完毕须要又一次公布须要重新启动openstack-nova-api服务。

重新启动后查看os-network路由信息例如以下图:

wsgi的route中添加api流程具体解释(os


wsgi的route中添加api流程具体解释(os

如上图发现test_member、test_collection路由信息公布成功。

member_actions公布的api是针对每一个特定的对象,比如获取id为1的person所有信息。

因此须要在url前面添加id字段属性。

collection_actions公布的api是针对对象集合,比如获取全部person的信息。


跟多关于route信息请參考文章:wsgi-restful-routes具体解释


3、解说:公布api成功,后台的route控制器接收到匹配的url之后。怎样控制调用后台代码

url的产生大致有三种方式:

1:用dashboard通过novaclient组装。(网络的由neutronclient组装,简单起见,兴许文章默认仅仅提及novaclient)

2:通过系统命令比如nova list产生。

3:通过curl自己组装。

 


第一和另外一种方式。请參考之前相应文章具体解释。

接下来具体介绍下假设通过curl调用已公布的route,开发自己定义api。

注:底层api开发。多採用第三种方式进行。


第一步获取token:

运行nova --debug list:

wsgi的route中添加api流程具体解释(os

当中X-Auth-Token后面的值为须要获取的token。

第二步:

将token值加入到环境变量中(也能够不加入环境变量,每次请求时带上)

vim  vim .bashrc

wsgi的route中添加api流程具体解释(os


这样以后就能够直接使用$token获取token的值。

export .bashrc文件

echo $token将看到token值


第三步:发送url请求: