好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Openstack API 开发 快速入门

Openstack API 开发 快速入门

Openstack 做为流行的开源云计算平台,其最大特性是利用其提供的基础设施API,让我们可以以软件的方式来动态管理IAAS资源。Openstack 提供的api是流行的Rest API.

    闲话少说,我们来开始使用Openstack API。

   

   前提:搭建Openstack 环境是必须,可以根据参考资料搭建一个单机虚拟机环境.

 

   假设我们搭建的环境信息为:

   

物理服务器地址: 192.168.1.1 
管理员用户名:admin
管理员密码:password
管理员租户ID:3942bfc544a24f748788c06dbc486ffa 

 

   做好环境后,我们先验证一下,API是否正常工作.使用Curl工具验证;

curl -k -X 'POST' -v http://192.168.1.1:5000/v2.0/tokens -d '{"auth":{"passwordCredentials":{"username": "admin", "password":"password"}, "tenantId":"3942bfc544a24f748788c06dbc486ffa"}}' -H 'Content- type : application/json'

返回一串的json字符串:

View Code

需要的是前面几行:

{"access": {"token": {"expires": "2013-01-23T02:22:40Z", "id": "dba0a6722b86483e83b07e5556bafb02"...

其中的ID一项,即为我们以后认证需要的token,记下来:

 

其它的server 及region信息,是根据你的keystone配置,会将各个服务的访问地址(endpoint)列出来,你可以从这里获得Image,compute,volume等API接口访问地址.

 

特别提醒:

认证的请求json字符串正确格式为:

 {
     "auth" :{
         "passwordCredentials" :{
             "username":"admin" ,
             "password":"password" 
        },
         "tenantId":"3942bfc544a24f748788c06dbc486ffa" 
    }
} 

缺少了tenantId选项依然可以获得token ,然而这样的token只能在keystone组件中使用,当使用此token去nova 或者image组件认证时,会失败(401错误)

而截止目前,官方api文档 http://api.openstack.org/api-ref.html  为

 

   tenantName (可选项),按此文档请求会出现token不能在其它组件中认证的情况.

 

获得正确的的tokens后,便可以参考官方的api参考页面,测试其它的api了.

如instance  列表:

curl -v -H "X-Auth-Token:dba0a6722b86483e83b07e5556bafb02" http: //  192.168.1.1:8774/v2/3942bfc544a24f748788c06dbc486ffa/servers 

curl毕竟是命令行,比较麻烦,大家可以使用rest客户端去操作。这里推存一个JAVA的:

 

https://code.google.com/p/rest-client/

 

下面我们通过API完成创建一个虚拟机的工作.

 

第一步:获取镜像列表:

协议为 GET http://192.168.1.1:9292/v1/images

这里使用Rest-client提交

 

第二步:获取虚拟机创建方案.

协议为: GET http://192.168.1.1:8774/v2/3942bfc544a24f748788c06dbc486ffa/flavors

 

使用rest-client请求:

 

第三步,创建虚拟机

协议:POST http://192.168.1.1:8774/v2/3942bfc544a24f748788c06dbc486ffa/servers

BODY:

 {
     "server" :{
         "flavorRef":"100" ,
         "imageRef":"03419abb-c27f-4dde-bc74-b8387d1ccb30" ,
         "metadata" :{
             "My Server Name":"Apache1" 
        },
         "name":"new-server-test" ,
         "personality" :[
            {
                 "contents":"" ,
                 "path":"/etc/banner.txt" 
            }
        ]
    }
} 

restclient 请求:

由于我的虚拟机资源用限,超出容量,所以创建失败了。成功的请求是这样的

 {
     "server" :{
         "adminPass":"MVk5HPrazHcG" ,
         "id":"5bbcc3c4-1da2-4437-a48a-66f15b1b13f9" ,
         "links" :[
            {
                 "href":"http://openstack.example.com/v2/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9" ,
                 "rel":"self" 
            },
            {
                 "href":"http://openstack.example.com/openstack/servers/5bbcc3c4-1da2-4437-a48a-66f15b1b13f9" ,
                 "rel":"bookmark" 
            }
        ]
    }
} 

用openstack 的Horizon的验证。

其它的api可以参考Openstack的文档完成了 http://api.openstack.org

 

常用工具

 

JSON格式化

    <http://www.cnblogs.com/biangbiang/archive/2013/01/11/2856431.html>

Java REST Client

    <http://rest-client.googlecode.com/>

Groovy RESTCLIENT (groovyx.net.http.RESTClient)    

    <http://groovy.codehaus.org/modules/http-builder/doc/rest.html>

HttpClient入门

    <http://www.ibm.com/developerworks/cn/opensource/os-httpclient/>

    <http://www.ibm.com/developerworks/cn/aix/library/au-aix-systemsdirector/section2.html>

 

 

 

分类:  Openstack

标签:  Openstack API REST

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Openstack API 开发 快速入门的详细内容...

  阅读:48次