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

[经验分享] openstack:RESTful API的查看与调试

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-10-11 09:18:38 | 显示全部楼层 |阅读模式
1 相关文档及官网示例

  官网API介绍:
  《openstack-bk-api-ref.pdf》
  网址:
  http://developer.openstack.org/api-ref.html
  下载pdf
  http://developer.openstack.org/api-ref-guides/bk-api-ref.pdf
  
  关于RESTful可以参考官方文档:
  http://docs.openstack.org/zh_CN/api/quick-start/content/index.html
  pdf版本为:
  svn://200.200.0.10/vt/vt/VTP/Cloud2.0/Documents/13.预研/01.预研报告/预研文档分享/cinder/openstack-restful-api/api-quick-start-onepager.pdf
  
  实例(这里的python -m json.tool可以让输出看起来是json格式):
  # curl -s -X POST http://192.168.15.180:5000/v2.0/tokens -H "Content-Type:application/json" \
   -d '{"auth": {"tenantName":"admin","passwordCredentials":  \ {"username":"admin","password":"83c53e477779468a"}}}'|python -m json.tool
DSC0000.jpg

  输出比较多,一般我们只是看token id,这里把其他信息删除:
  "token": {
  "audit_ids": [
  "d5LrCnXNSB-aGwz0x6bSJg"
  ],
  "expires": "2015-08-26T09:24:07Z",
  "id": "fc62e669e3b0417faac71e0840c30354",
  "issued_at": "2015-08-26T08:24:07.511407",
  "tenant": {
  "description": "admin tenant",
  "enabled": true,
  "id": "5f8211463783496b9621c51d5666e70e",
  "name": "admin"
  }
  },
2 使用--debug查看解析
  可以通过cinder --debug xxx看到发送的具体的RESTful API
   DSC0001.jpg

  
  这里发了三条curl命令:
  (1)curl -g -i -X GET http://192.168.15.180:5000/v2.0/ -H "Accept: application/json" -H "User-Agent: python-keystoneclient"
  (2)curl -g -i -X GET http://192.168.15.180:8776/ -H "Accept: application/json" -H "User-Agent: python-keystoneclient"
  (3)curl -g -i -X GET http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes/detail -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}58e60a153a105abbc64cd8f28ef8de8f227660fc"
  解释:前面两条命令不用管,实际发的是第三条命令。如果自己写API不掉上面两个,实际上也会发上面的两个命令。
  实际上ListAPI只有这一个
  curl -g -i -X GET http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes/detail -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}58e60a153a105abbc64cd8f28ef8de8f227660fc"
3. 使用crul单步实现cinder list示例
  3.1 获取token -- 参考官网文档《http://docs.openstack.org/zh_CN/api/quick-start/content/index.html》给的命令

  
  #curl -s -X POST http://192.168.15.180:5000/v2.0/tokens -H "Content-Type: application/json" -d '{"auth": {"tenantName": "'"$OS_TENANT_NAME"'", "passwordCredentials": {"username": "admin", "password": "83c53e477779468a"}}}' | python -m json.tool
  这里会输出很多东西,只需要看token字段:
  "token": {
  "audit_ids": [
  "UGH_HfiYQBy3DleHiZk0nw"
  ],
  "expires": "2015-08-26T10:52:39Z",
   "id": "aaa9da01640249abb6032cf013a4095c",
  "issued_at": "2015-08-26T09:52:39.549531",
  "tenant": {
  "description": "admin tenant",
  "enabled": true,
  "id": "5f8211463783496b9621c51d5666e70e",
  "name": "admin"
  }
  },所以这里获取的toke id是:aaa9da01640249abb6032cf013a4095c
  3.2 使用获取的token发送HTTP请求
  # curl -g -i -X GET http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes/detail -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: aaa9da01640249abb6032cf013a4095c"  
  这里X-Auth-Token后面就是在上面获取的token
DSC0002.jpg
  
  而这里的5f8211463783496b9621c51d5666e70e为租户ID,可以通过keystone 的命令来查看:
DSC0003.jpg
  
4 整理一下cinder常见的API
4.1 创建卷
  
  curl -g -i -X POST http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes -H "User-Agent: python-cinderclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}c88ee47d56a7d428f347fa1d2776783c405d7df9" -d '{"volume": {"status": "creating", "availability_zone": null, "source_volid": null, "display_description": null, "snapshot_id": null, "user_id": null, "size": 1, "display_name": "volume3", "imageRef": null, "attach_status": "detached", "volume_type": null, "project_id": null, "metadata": {}}}'
4.2 删除卷
  curl -g -i -X DELETE http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes/73cbde94-c0e6-4b8a-85fb-0ad873d075eb -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}74c65bdbf3449ec167c6779cd358e0b9fbaab4d7"
  
4.3 卷列表
  命令:
  cinder --debug list
  请求:
  curl -g -i -X GET http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes/detail -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}784a77f98f76124171231264290e63b9546f5b74"
4.4 创建快照
  创建命令:
  # cinder --debug  snapshot-create --display-name snap-volume2 volume2
  所发请求:
  curl -g -i -X POST http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/snapshots -H "User-Agent: python-cinderclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}00577623ba3ac3e4b349b3f08b3025b68a17e4a7" -d '{"snapshot": {"display_name": "snap-volume2", "force": false, "display_description": null, "volume_id": "40a7c155-30df-4235-93c7-b237616fdd15"}}'
  DEBUG:keystoneclient.session:RESP: [200] content-length: 267 x-compute-request-id: req-a9bf8f39-5cf8-4bec-9ec5-d231852f8ae8 connection: keep-alive date: Wed, 26 Aug 2015 10:48:26 GMT content-type: application/json x-openstack-request-id: req-a9bf8f39-5cf8-4bec-9ec5-d231852f8ae8
  
  请求返回:
  RESP BODY: {"snapshot": {"status": "creating", "display_name": "snap-volume2", "created_at": "2015-08-26T10:48:26.817644", "display_description": null, "volume_id": "40a7c155-30df-4235-93c7-b237616fdd15", "metadata": {}, "id": "c75753ef-ecc6-400a-b717-bdebc03f4bf2", "size": 1}}
  格式化输出:
  [iyunv@controller-rdo ~(keystone_admin)]# cat test| awk -F"," '{print $1;print $2;print $3;print $4;print $5;print $6;print $7}'
  {"snapshot": {"status": "creating"
  "display_name": "snap-volume2"
  "created_at": "2015-08-26T10:48:26.817644"
  "display_description": null
  "volume_id": "40a7c155-30df-4235-93c7-b237616fdd15"
  "metadata": {}
  "id": "c75753ef-ecc6-400a-b717-bdebc03f4bf2"
4.5 删除快照
  命令:
  cinder --debug  snapshot-delete snap-volume2
  请求:
  curl -g -i -X DELETE http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/snapshots/c75753ef-ecc6-400a-b717-bdebc03f4bf2 -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}e51ce4e914925d9dec15ff307a388b988c792740"
  
  备注:c75753ef-ecc6-400a-b717-bdebc03f4bf2为快照ID
4.6 快照列表
  命令:
  cinder --debug snapshot-list
  请求:
  curl -g -i -X GET http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/snapshots/detail -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}92d62b8f42ce1dfb102b31419ba8b4e93f538ffd"
  
  返回RESP BODY:
  {"snapshots": [{"status": "available", "display_name": "snap-volume2", "created_at": "2015-08-26T10:48:26.000000", "display_description": null, "os-extended-snapshot-attributes:progress": "100%", "volume_id": "40a7c155-30df-4235-93c7-b237616fdd15", "os-extended-snapshot-attributes:project_id": "5f8211463783496b9621c51d5666e70e", "metadata": {}, "id": "c75753ef-ecc6-400a-b717-bdebc03f4bf2", "size": 1}]}
  
4.7 修改卷大小
  命令:
  cinder --debug  extend volume2 2
  请求:
  curl -g -i -X POST http://192.168.15.180:8776/v1/5f8211463783496b9621c51d5666e70e/volumes/40a7c155-30df-4235-93c7-b237616fdd15/action -H "User-Agent: python-cinderclient" -H "Content-Type: application/json" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}5c2b388fa9230f5da4f03d6a5b93b00ac996f6eb" -d '{"os-extend": {"new_size": 2}}'
  



         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-125292-1-1.html 上篇帖子: HDFS文件系统和OpenStack swift对象存储有何不同 下篇帖子: RHEL6.4上搭建OpenStack dashboard (Havana)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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