设为首页 收藏本站
查看: 1156|回复: 0

[经验分享] OpenStack REST API使用

[复制链接]
发表于 2015-4-12 10:42:02 | 显示全部楼层 |阅读模式
  以前一直想写博客,但因各种因素一直没写。最近在做OpenStack,而OpenStack对外提供REST API,今天就简要介绍一下OpenStack REST API 使用,关于什么是REST API可以参考以下两篇博文:
  http://www.choudan.net/2013/07/28/OpenStack-Restful-API.html
  http://www.ruanyifeng.com/blog/2011/09/restful.html
  简单的来说,一切都是资源,每个资源对应一个URI。
  我们可以使用linux curl命令使用REST API向OpenStack发送请求,例如根据用户名、密码和tenant得到token:



curl -i 'http://127.0.0.1:5000/v2.0/tokens' -X POST -H "Content-Type: application/json" -H "Accept: application/json"  -d '{"auth": {"tenantName": "admin", "passwordCredentials": {"username": "admin", "password": "secretsecret"}}}'
  但是我觉得用curl命令不太方便,而且有时候返回结果很长很长的时候不太好看,所以就使用了RESTClient,因为是在CentOS环境下工作,于是在火狐下装了个RESTClient插件,像上面的请求可以轻松搞定,加入两个Header,如果要访问其他资源,则还另外需要一个Header:x-auth-token,选择一个Method,然后在Body里面写下需要的东西,截图如下:
  
  Body:
  



{
"auth":{
"passwordCredentials":{
"username":"admin",
"password":"123456"
},
"tenantName":"admin"
}
}
  
  OpenStack的API大多都在官方文档中写了,为什么说大多,而不是全部,是因为有些真没写,我觉得其中没写的分两类:


  • 没有及时更新。
  • 觉得没必要写,认为大家可以猜到,或者可以从源码中找到蛛丝马迹。毕竟搞OpenStack还是得要两把刷子。
  举几个目前API文档中没写或者没有详细说明用法的API,比如:


  • OpenStack中的admin用户如何获得所有tenant(project)下的虚机信息。具体的做法是加上query参数all_tenants,即:/v2/{tenant_id}/servers/detail?all_tenants=true
  • 延伸第一条,admin如何获取某个tenant下的虚机。/v2/{tenant_id}/servers/detail?all_tenants=true&project_id=XXX
  还有好多可以加query参数的API,就不一一列举了。
  
  还有一个问题,在API文档中只有URL的后半部分,那么前半部分去哪了,前半部分就在当初安装OpenStack时创建的endpoint中,我们可以使用以下命令找到:



keystone endpoint-list
keystone endpoint-get --service=XXX
  在实际的编码中我们当然不能在代码里把URL写死,应该通过查数据表得到各个服务的endpoint,然后生成完整的URL。细心的同学就会发现,在每次认证的时候不仅会返回token而且会返回serviceCatalog,里面就有我们想要的endpoint,就不必再单独再去查一次数据库了。
  
  有个问题没太弄懂,不知是否有人解答一下:
  keystone两个端口,一个是5000,一个是35357(adminURL)。两个权限不一样,创建用户什么的必须用35357。我知道OpenStack采用Policy来管理某个用户在某个tenant下的权限。但后台具体是如何区分5000和35357的呢,怎样让35357可以创建用户而5000创建不了用户。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-56220-1-1.html 上篇帖子: Openstack部署工具 下篇帖子: openstack quantum搭建过程中一些有用的链接
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表