原文: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

输出结果如下:

01 {
02     "access": {
03         "serviceCatalog": {},
04         "token": {
05             "expires""2013-01-27T04:55:35Z",
06             "id""a4b6a871ff2f41a797c0b7d45c69f81e"
07         },
08         "user": {
09             "id""4c1a6122fc874a8bb541a34be3b316ad",
10             "name""guol",
11             "roles": [],
12             "roles_links": [],
13             "username""guol"
14         }
15     }
16 }

然后使用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

输出的结果如下:

01 {
02     "tenants": [
03         {
04             "description""\u4e91\u5e73\u53f0\u7ba1\u7406\u5458,\u5168\u5c40\u7ba1\u7406\u6240\u6709\u9879\u76ee",
05             "enabled"true,
06             "id""3a3613f83183435d9c47aa362261f720",
07             "name""admin"
08         }
09     ],
10     "tenants_links": []
11 }

当你按照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

返回值如下:

001 {
002     "access": {
003         "metadata": {
004             "is_admin": 0,
005             "roles": [
006                 "141927156f7a47d98858e51febaea8cf"
007             ]
008         },
009         "serviceCatalog": [
010             {
011                 "endpoints": [
012                     {
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"
018                     }
019                 ],
020                 "endpoints_links": [],
021                 "name""nova",
022                 "type""compute"
023             },
024             {
025                 "endpoints": [
026                     {
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"
032                     }
033                 ],
034                 "endpoints_links": [],
035                 "name""glance",
036                 "type""image"
037             },
038             {
039                 "endpoints": [
040                     {
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"
046                     }
047                 ],
048                 "endpoints_links": [],
049                 "name""volume",
050                 "type""volume"
051             },
052             {
053                 "endpoints": [
054                     {
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"
060                     }
061                 ],
062                 "endpoints_links": [],
063                 "name""ec2",
064                 "type""ec2"
065             },
066             {
067                 "endpoints": [
068                     {
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"
074                     }
075                 ],
076                 "endpoints_links": [],
077                 "name""swift",
078                 "type""object-store"
079             },
080             {
081                 "endpoints": [
082                     {
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"
088                     }
089                 ],
090                 "endpoints_links": [],
091                 "name""keystone",
092                 "type""identity"
093             }
094         ],
095         "token": {
096             "expires""2013-01-27T05:06:50Z",
097             "id""71fb5b7816804febbd89ed315fe67c94",
098             "tenant": {
099                 "description""\u6240\u6709\u516c\u53f8\u81ea\u4e3b\u6e38\u620f\u7684\u524d\u7aef\u53d1\u5e03\u673a,\u5982\u8d5b\u5c14\u53f7,\u529f\u592b\u7b49",
100                 "enabled"true,
101                 "id""170bf7acb88646bc9147085d426c4671",
102                 "name""VM"
103             }
104         },
105         "user": {
106             "id""24a2251c32504957ad2647c2448ffac3",
107             "name""admin",
108             "roles": [
109                 {
110                     "name""\u524d\u7aef\u6e38\u620f"
111                 }
112             ],
113             "roles_links": [],
114             "username""admin"
115         }
116     }
117 }

使用返回的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

返回结果如下

01 {
02     "servers": [
03         {
04             "id""ac561829-dffa-443e-a321-260d48f4cba3",
05             "links": [
06                 {
07                     "href""http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/ac561829-dffa-443e-a321-260d48f4cba3",
08                     "rel""self"
09                 },
10                 {
11                     "href""http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/ac561829-dffa-443e-a321-260d48f4cba3",
12                     "rel""bookmark"
13                 }
14             ],
15             "name""VM1"
16         },
17         {
18             "id""e3b84378-7598-48c8-8a1d-bd555c4c1f90",
19             "links": [
20                 {
21                     "href""http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/e3b84378-7598-48c8-8a1d-bd555c4c1f90",
22                     "rel""self"
23                 },
24                 {
25                     "href""http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/e3b84378-7598-48c8-8a1d-bd555c4c1f90",
26                     "rel""bookmark"
27                 }
28             ],
29             "name""VM2"
30         },
31         {
32             "id""beafef2e-26c4-4320-9b45-70006e71785c",
33             "links": [
34                 {
35                     "href""http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/beafef2e-26c4-4320-9b45-70006e71785c",
36                     "rel""self"
37                 },
38                 {
39                     "href""http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/beafef2e-26c4-4320-9b45-70006e71785c",
40                     "rel""bookmark"
41                 }
42             ],
43             "name""VM3"
44         },
45         {
46             "id""f8450270-9d96-4dba-b1c2-8ebcef1ff012",
47             "links": [
48                 {
49                     "href""http://10.1.1.186:8774/v2/170bf7acb88646bc9147085d426c4671/servers/f8450270-9d96-4dba-b1c2-8ebcef1ff012",
50                     "rel""self"
51                 },
52                 {
53                     "href""http://10.1.1.186:8774/170bf7acb88646bc9147085d426c4671/servers/f8450270-9d96-4dba-b1c2-8ebcef1ff012",
54                     "rel""bookmark"
55                 }
56             ],
57             "name""VM4"
58         }
59     ]
60 }

通过返回值可以看到vm tenant中共包含VM1 VM2 VM3 VM4四台实例。

openstack api快速入门的更多相关文章

  1. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

  2. OpenStack云计算快速入门之一:OpenStack及其构成简介

    原文:http://blog.chinaunix.net/uid-22414998-id-3263551.html OpenStack云计算快速入门(1) 该教程基于Ubuntu12.04版,它将帮助 ...

  3. Html5 学习系列(五)Canvas绘图API快速入门(1)

    引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...

  4. 引言:Canvas绘图API快速入门

    引言:Canvas绘图API快速入门 在接触HTML5的初学者包括我都在很多地方见到非常炫的一些页面,甚至好多学习HTML5的开发者都是冲着Web端的页游去的,那么HTML5那么绚丽的页面效果以及游戏 ...

  5. Node.js API快速入门

    Node.js API 快速入门 一.事件EventEmitter const EventEmitter = require('events'); class MyEmitter extends Ev ...

  6. 腾讯位置服务API快速入门

    前言 之前项目有个需求,在网页上显示微信发送过来的位置信息,该开始想用百度地图,后来发现腾讯地图相对简单一点 快速入门 申请Key https://lbs.qq.com/guides/startup. ...

  7. OpenStack云计算快速入门之三:OpenStack镜像管理

    原文:http://blog.chinaunix.net/uid-22414998-id-3272059.html 第三部分 OpenStack镜像管理 一.简介 很多源都有为OpenStack已经编 ...

  8. Html5 学习系列(五)Canvas绘图API快速入门(2)

    Canvas绘图API Demos 上一篇文章中,笔者已经给大家演示了怎么快速用Canvas的API绘制一个矩形出来.接下里我会在本文中给各位介绍Canvas的其他API:绘制线条.绘制椭圆.绘制图片 ...

  9. 瓜娃《guava》api快速入门

    1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API C ...

随机推荐

  1. [Java IO]04_系统标准IO

    System表示系统类,它有3个与 Java IO 有关的常量. System.out——系统标准输出 System.in——系统标准输入 System.err——错误信息输出 System.out ...

  2. 在ASP.NET Core中怎么使用HttpContext.Current

    一.前言 我们都知道,ASP.NET Core作为最新的框架,在MVC5和ASP.NET WebForm的基础上做了大量的重构.如果我们想使用以前版本中的HttpContext.Current的话,目 ...

  3. 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结

    今年4月,自从微信浏览器X5 升级Blink内核之后,各前端社区一片高潮,仿佛看到了前端er,眼含热泪进而抱头痛头的说:终于可以不用兼容这"移动端的IE6 "了,可以早点回家了!! ...

  4. C#基础-FileStream实现多线程断点续传

    一.前言 网上有许多的多线程断点续传操作,但总是写的很云里雾里,或者写的比较坑长.由于这几个月要负责公司的在线升级项目,所以正好顺便写了一下 代码如下: using System; using Sys ...

  5. 基于Metronic的Bootstrap开发框架经验总结(11)--页面菜单的几种呈现方式

    在常规的后台管理系统或者前端界面中,一般都有一个导航菜单提供给用户,方便选择所需的内容.基于Metronic的Bootstrap开发框架,是整合了Metroinc样式,以及Boostrap组件模块的内 ...

  6. chrome 调试 SASS

    第一步: 执行sass预编译命令 先来我的项目文件夹结构: ->进入sass /css文件下->打开cmd命令 ->输入sass --watch --scss  test.scss: ...

  7. SharePoint 2013 Excel Services ECMAScript 示例之明日限行

    前言:最近遇到一个“明日限行”的功能,北京的交通啊,这个不在今天讨论范围内,暂不吐槽,想想代码开发,还要写WebPart部署,很麻烦,而且部署服务器,需要领导审批,想绕过这个麻烦事儿,就想到客户端了, ...

  8. SharePoint 2013 Word 转换PDF服务介绍及示例

    前言:在SharePoint使用过程中,经常会发现将文档进行格式转换的需求,之前,看到SharePoint 2013有将PPT转换PDF文档的服务,后来,才发现SharePoint 2010开始,就有 ...

  9. maven:用appassembler-maven-plugin打包含有自定义目录的JAVA程序

    问题说明: 用maven构建了一个项目,目录结构如下: appassemblerd的配置: <plugin> <groupId>org.codehaus.mojo</gr ...

  10. AndRodi Strudio中的按钮时件

    AndRodi Studio中的按钮时件注册一定要写在onCraete中 @Override protected void onCreate(Bundle savedInstanceState) { ...