千家信息网

openstack-wsgi的route中怎样增加api

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,今天就跟大家聊聊有关openstack-wsgi的route中怎样增加api,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。今天要讲解的是当我们
千家信息网最后更新 2026年11月02日openstack-wsgi的route中怎样增加api

今天就跟大家聊聊有关openstack-wsgi的route中怎样增加api,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

今天要讲解的是当我们以后生成了这样一个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

重启openstack-nova-api服务

service openstack-nova-api restart

tailf /var/log/nova/api.log

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


2、接下来讲解如何添加自定义api,并加入到route mapper中,发布出来给外部调用.

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

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


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

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


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


在

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

每次添加完成需要重新发布需要重启openstack-nova-api服务。

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


如上图发现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:

其中X-Auth-Token后面的值为需要获取的token。

第二步:

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

vim vim .bashrc


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

export .bashrc文件

echo $token将看到token值


第三步:发送url请求:

curl -i 'http://192.168.1.158:8774/v2/b077619bde964a4eb924db869fba977d/servers/f664204b-d4ec-4d01-aec9-757719a8d06b' -X GET -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token:$token"


对应的route为:


当执行上述url请求时候:则对应找到上述路由。


4、请求自定义的路由test_collection:

根据路由信息,拼接url为:


curl -i 'http://192.168.1.158:8774/v2/b077619bde964a4eb924db869fba977d/os-networks/test_collection' -X POST -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token:$token"

错误为404没有找到:


打开route发布源码:

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


进入到路由控制器:NetworkController():

可以看到路由控制器类有方法show(),delete()等。

在控制器类定义test_collection方法,如下图:

重启nova-api服务添加的代码生效。(每次修改api模块代码则必须重启服务,后面将不再重复)


再次请求url:

curl -i 'http://192.168.1.158:8774/v2/b077619bde964a4eb924db869fba977d/os-networks/test_collection' -X POST -H "X-Auth-Project-Id: admin" -H "User-Agent: python-novaclient" -H "Accept: application/json" -H "X-Auth-Token:$token"

api日志:

在test_collection函数中,添加自定义的底层代码即可。

到此添加底层api完成。

看完上述内容,你们对openstack-wsgi的route中怎样增加api有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。

信息 路由 代码 底层 文章 控制 控制器 服务 接下来 内容 方式 成功 下图 变量 后台 对象 文件 更多 模块 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技图片 互联网科技公司的优势 金融科技与互联网金融 平安科技 互联网 为想互联网科技 互联网未来科技 智慧科技互联网 互联网科技宣传片 互联网养老 桔豆科技 中国最先进互联网科技公司 互联网科技公司招聘 顶级互联网科技成果有哪些 世界互联网科技公司市值排名 华夏互联网科技业 深圳育鹏互联网科技有限公司招聘 用友工业互联网科技发展 互联网金融科技公司的优势 伍佰万互联网科技怎么赚钱 雨阳互联网卡科技有限公司 如何强化互联网金融科技 中国互联网科技工作委员会毛军 互联网科技公司官网 科技大学互联网专业好不好 山东吉时兔互联网科技有限公司 中国科技互联网公司收入 赶超互联网科技 微信多开 西安小鹰速贷互联网科技有限公司 互联网公司属于科技吗 西安左小互联网科技有限公司 银川新华互联网科技学校招聘
0