原文:http://my.oschina.net/guol/blog/105430
openstack官方有提供api供开发者使用,可以使用api做一些外围的小工具,用来简化对openstack的管理。
api-quickstart:http://docs.openstack.org/api/quick-start/content/index.html
api-doc:http://api.openstack.org/api-ref.html
环境:ubuntu12.10(10.1.1.186)
如果你看了官方的quickstart,他会让你先生成一个X-Auth-Token值,然后使用这个认证的值调用相关的api接口。如下过程:
1 |
curl -k -X 'POST' -v http://10.1.1.186:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "guol", "password":"123456"}}}' -H 'Content-type: application/json' | python -mjson.tool |
输出结果如下:
05 |
"expires": "2013-01-27T04:55:35Z", |
06 |
"id": "a4b6a871ff2f41a797c0b7d45c69f81e" |
09 |
"id": "4c1a6122fc874a8bb541a34be3b316ad", |
然后使用token id调用你使用的api
1 |
curl -X 'GET' -H "X-Auth-Token:a4b6a871ff2f41a797c0b7d45c69f81e" -v http://10.1.1.186:5000/v2.0/tenants | python -mjson.tool |
输出的结果如下:
04 |
"description": "\u4e91\u5e73\u53f0\u7ba1\u7406\u5458,\u5168\u5c40\u7ba1\u7406\u6240\u6709\u9879\u76ee", |
06 |
"id": "3a3613f83183435d9c47aa362261f720", |
当你按照api-doc接着调用compute、image、volume等下面的api接口时,会发现统统没有返回值,经过一段时间的摸索,发现对下剩下的api接口是需要使用认证过的token才能使用的,下面的方法才是王道。
获取认证token值
1 |
curl -X POST -d '{"auth": {"tenantName": "VM", "passwordCredentials":{"username": "admin", "password": "123456"}}}' -H "Content-type: application/json" http://10.1.1.186:35357/v2.0/tokens | python -mjson.tool |
返回值如下:
006 |
"141927156f7a47d98858e51febaea8cf" |
013 |
"adminURL": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671", |
014 |
"id": "e02aaf58a24641049fddfe7385ce9399", |
015 |
"internalURL": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671", |
016 |
"publicURL": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671", |
017 |
"region": "RegionOne" |
020 |
"endpoints_links": [], |
027 |
"adminURL": "http://10.1.1.186:9292/v1", |
028 |
"id": "7c48fa4d876d44e0a3cb324a45a14931", |
029 |
"internalURL": "http://10.1.1.186:9292/v1", |
030 |
"publicURL": "http://10.1.1.186:9292/v1", |
031 |
"region": "RegionOne" |
034 |
"endpoints_links": [], |
041 |
"adminURL": "http://10.1.1.186:8776/v1/170bf7acb88646bc9147085d426c4671", |
042 |
"id": "c08114987bc0443d879436db6290dd08", |
043 |
"internalURL": "http://10.1.1.186:8776/v1/170bf7acb88646bc9147085d426c4671", |
044 |
"publicURL": "http://10.1.1.186:8776/v1/170bf7acb88646bc9147085d426c4671", |
045 |
"region": "RegionOne" |
048 |
"endpoints_links": [], |
055 |
"adminURL": "http://10.1.1.186:8773/services/Admin", |
056 |
"id": "cd6c3c2ac44340d6a78cb903ec9bcab3", |
057 |
"internalURL": "http://10.1.1.186:8773/services/Cloud", |
058 |
"publicURL": "http://10.1.1.186:8773/services/Cloud", |
059 |
"region": "RegionOne" |
062 |
"endpoints_links": [], |
069 |
"adminURL": "http://10.1.1.186:8080/v1", |
070 |
"id": "a75755093500441ea954f4874ccecf15", |
071 |
"internalURL": "http://10.1.1.186:8080/v1/AUTH_170bf7acb88646bc9147085d426c4671", |
072 |
"publicURL": "http://10.1.1.186:8080/v1/AUTH_170bf7acb88646bc9147085d426c4671", |
073 |
"region": "RegionOne" |
076 |
"endpoints_links": [], |
078 |
"type": "object-store" |
083 |
"adminURL": "http://10.1.1.186:35357/v2.0", |
084 |
"id": "196e553f9bcc4c8fa425bc0fa28a144b", |
085 |
"internalURL": "http://10.1.1.186:5000/v2.0", |
086 |
"publicURL": "http://10.1.1.186:5000/v2.0", |
087 |
"region": "RegionOne" |
090 |
"endpoints_links": [], |
096 |
"expires": "2013-01-27T05:06:50Z", |
097 |
"id": "71fb5b7816804febbd89ed315fe67c94", |
099 |
"description": "\u6240\u6709\u516c\u53f8\u81ea\u4e3b\u6e38\u620f\u7684\u524d\u7aef\u53d1\u5e03\u673a,\u5982\u8d5b\u5c14\u53f7,\u529f\u592b\u7b49", |
101 |
"id": "170bf7acb88646bc9147085d426c4671", |
106 |
"id": "24a2251c32504957ad2647c2448ffac3", |
110 |
"name": "\u524d\u7aef\u6e38\u620f" |
使用返回的token id和tenant id调用api返回该tenant下的servers
1 |
curl -X GET -H "X-Auth-Token:71fb5b7816804febbd89ed315fe67c94" -H "Content-type: application/json" http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers | python -mjson.tool |
返回结果如下
04 |
"id": "ac561829-dffa-443e-a321-260d48f4cba3", |
07 |
"href": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/ac561829-dffa-443e-a321-260d48f4cba3", |
11 |
"href": "http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/ac561829-dffa-443e-a321-260d48f4cba3", |
18 |
"id": "e3b84378-7598-48c8-8a1d-bd555c4c1f90", |
21 |
"href": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/e3b84378-7598-48c8-8a1d-bd555c4c1f90", |
25 |
"href": "http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/e3b84378-7598-48c8-8a1d-bd555c4c1f90", |
32 |
"id": "beafef2e-26c4-4320-9b45-70006e71785c", |
35 |
"href": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/beafef2e-26c4-4320-9b45-70006e71785c", |
39 |
"href": "http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/beafef2e-26c4-4320-9b45-70006e71785c", |
46 |
"id": "f8450270-9d96-4dba-b1c2-8ebcef1ff012", |
49 |
"href": "http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/f8450270-9d96-4dba-b1c2-8ebcef1ff012", |
53 |
"href": "http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/f8450270-9d96-4dba-b1c2-8ebcef1ff012", |
通过返回值可以看到vm tenant中共包含VM1 VM2 VM3 VM4四台实例。
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- OpenStack云计算快速入门之一:OpenStack及其构成简介
原文:http://blog.chinaunix.net/uid-22414998-id-3263551.html OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助 ...
- Html5 学习系列(五)Canvas绘图API快速入门(1)
引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...
- 引言:Canvas绘图API快速入门
引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...
- Node.js API快速入门
Node.js API 快速入门 一.事件EventEmitter const EventEmitter = require('events'); class MyEmitter extends Ev ...
- 腾讯位置服务API快速入门
前言 之前项目有个需求,在网页上显示微信发送过来的位置信息,该开始想用百度地图,后来发现腾讯地图相对简单一点 快速入门 申请Key https://lbs.qq.com/guides/startup. ...
- OpenStack云计算快速入门之三:OpenStack镜像管理
原文:http://blog.chinaunix.net/uid-22414998-id-3272059.html 第三部分 OpenStack镜像管理 一.简介 很多源都有为OpenStack已经编 ...
- Html5 学习系列(五)Canvas绘图API快速入门(2)
Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片 ...
- 瓜娃《guava》api快速入门
1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API C ...
随机推荐
- 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)
建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它 ...
- 机器学习 1 regression
Linear regerssion 线性回归 回归: stock market forecast f(过去10年股票起伏的资料) = 明天道琼指数点数 self driving car f(获取的道路 ...
- SQL Server里的闩锁耦合(Latch Coupling)
几年前,我写了篇关于闩锁和为什么SQL Server需要它们的文章.在今天的文章里,我想进一步谈下非缓存区闩锁(Non-Buffer Latches),还有在索引查找操作期间,SQL Server如何 ...
- java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得
我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...
- [Asp.net 5] Logging-其他日志系统的实现
Microsoft.Framework.Logging.NLog 使用Nlog扩展日志系统:按照我们上节说的,对于扩展的日志系统都要实现俩个接口ILogger.ILoggerProvider.所以在当 ...
- 【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去
适用于:.net2.0+ Winform项目 ------------------201508261813更新(源码有更新.Demo未更新)------------------ 重新绘制调整大小手柄( ...
- Xamarin android 之Activity详解
序言: 上篇大概的讲解了新建一个android的流程.今天为大家带来的是Activity详解,因为自己在开发过程中就遇到 好几次坑,尴尬. 生命周期 和Java里头一样一样的,如图 图片来源于网上哈, ...
- 使用SwipeListView实现滑动效果
QQ的滑动删除效果很不错,要实现这种效果,可以使用SwipeListView.1. 下载com.fortysevendeg.swipelistview这个项目(以前GitHub上有,现在GitHub上 ...
- 复杂的xml转化为java实体
一.样例一: 以根据订单号向支付宝查询支付是否成功为例(成功信息) 失败信息: <?xml version="1.0" encoding="utf-8"? ...
- Java基础学习 -- 接口
interface是一种特殊的class 接口是纯抽象类 所有的成员函数都是抽象函数: 所有的成员变量都是public static final; 接口是为了方便类的调用 一个类如果要去实现某个接口, ...