目前 OpenStack中消息传递有两种机制,一种是消息队列,另一种就是Restful API。其中OpenStack项目的接口遵循REST原则,即使用Restful Api实现OpenStack各Server与Client交互通信。下面测试一下直接使用OpenStack中Restful API去实现相应的功能。Postman是一款前端调用工具,本文采用该工具来测试后端的接口。
token是环境可操作的前提,OpenStack登陆时填写的用户名+密码,登陆之后的操作都是使用token。下面使用postman工具测试keystone服务的接口,尝试向keystone服务的endpoint地址发送携带用户名及用户名密码的POST请求,具体要求如下:
若发送POST请求后传入的用户名密码参数验证通过,则返回状态信息200,并成功获取token数据。
从上述截图返回的body信息来看,除了获取到认证的token外,并且获取到了Openstack全部服务的请求地址,详见下面"serviceCatalog"字段,后续将可以拿着该token去访问Openstack其他服务,如:nova、glance。
"serviceCatalog": [ { "endpoints": [ { "adminURL": "http://10.154.4.65:8774/v2/fc6c592284bb4d6d87f2dada93a0d144", "region": "RegionOne", "internalURL": "http://10.154.4.65:8774/v2/fc6c592284bb4d6d87f2dada93a0d144", "id": "786c8981ea6c4a50ab1e9b6889fd54ae", "publicURL": "http://10.154.4.65:8774/v2/fc6c592284bb4d6d87f2dada93a0d144" } ], "endpoints_links": [], "type": "compute", "name": "nova" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:9696", "region": "RegionOne", "internalURL": "http://10.154.4.65:9696", "id": "858213266aac4d7794be98faf2cbd820", "publicURL": "http://10.154.4.65:9696" } ], "endpoints_links": [], "type": "network", "name": "neutron" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:8776/v2/fc6c592284bb4d6d87f2dada93a0d144", "region": "RegionOne", "internalURL": "http://10.154.4.65:8776/v2/fc6c592284bb4d6d87f2dada93a0d144", "id": "268616abc7944cb4a8fa1f3f6dded4d4", "publicURL": "http://10.154.4.65:8776/v2/fc6c592284bb4d6d87f2dada93a0d144" } ], "endpoints_links": [], "type": "volumev2", "name": "cinderv2" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:9292", "region": "RegionOne", "internalURL": "http://10.154.4.65:9292", "id": "71cbec44c42746048bcd77f9fe9487b0", "publicURL": "http://10.154.4.65:9292" } ], "endpoints_links": [], "type": "image", "name": "glance" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:8777", "region": "RegionOne", "internalURL": "http://10.154.4.65:8777", "id": "0533e2fc65594f308c689a4b26df450b", "publicURL": "http://10.154.4.65:8777" } ], "endpoints_links": [], "type": "metering", "name": "ceilometer" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:8776/v1/fc6c592284bb4d6d87f2dada93a0d144", "region": "RegionOne", "internalURL": "http://10.154.4.65:8776/v1/fc6c592284bb4d6d87f2dada93a0d144", "id": "1d81e66df8524baa8c7dc483a7257efd", "publicURL": "http://10.154.4.65:8776/v1/fc6c592284bb4d6d87f2dada93a0d144" } ], "endpoints_links": [], "type": "volume", "name": "cinder" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:8773/services/Admin", "region": "RegionOne", "internalURL": "http://10.154.4.65:8773/services/Cloud", "id": "2c7fb3475aac4eec928316ee8818a765", "publicURL": "http://10.154.4.65:8773/services/Cloud" } ], "endpoints_links": [], "type": "ec2", "name": "nova_ec2" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:8080", "region": "RegionOne", "internalURL": "http://10.154.4.65:8080/v1/AUTH_fc6c592284bb4d6d87f2dada93a0d144", "id": "589c8c52ddb84882811403b77e260673", "publicURL": "http://10.154.4.65:8080/v1/AUTH_fc6c592284bb4d6d87f2dada93a0d144" } ], "endpoints_links": [], "type": "object-store", "name": "swift" }, { "endpoints": [ { "adminURL": "http://10.154.4.65:35357/v2.0", "region": "RegionOne", "internalURL": "http://10.154.4.65:5000/v2.0", "id": "7b5cd0dfbb6e41a69841aa6a69760df6", "publicURL": "http://10.154.4.65:5000/v2.0" } ], "endpoints_links": [], "type": "identity", "name": "keystone" } ],下面用上述拿到的token和nova服务的endpoint信息来查询admin租户下的全部虚机。
填写Postman,填写的内容有4个点,分别是: 1.请求类型:GET。 2.请求的URL地址:/servers。 3.设置访问的header,这里是设置token的key。第一步已经获取了token的值,剩余的访问都是使用token处理。 4.设置token的值。
可知上图返回的body信息中查询到一台“wy”虚机。更多有关nova的操作,可参看官方文档中nova服务的API的描述,从API使用手册中进入Compute API(https://developer.openstack.org/api-ref/compute/)。下面给出一些nova server的操作请求地址:
同nova操作,我们使用postman工具查看OpenStack的glance服务中存在的镜像。glance服务的访问地址参看官方glance服务的API文档(https://developer.openstack.org/api-ref/image/v2/)
查询image-list需要在Postman填写的内容如下: 1.请求类型:GET。 2.请求的URL地址:/v2/images。 3.设置访问的header,这里是设置token的key。第一步已经获取了token的值,剩余的访问都是使用token处理。 4.设置token的值。
可知上图返回的body信息中查询到windows2012的镜像以及它的各种属性。
使用接口测试工具Postman简单测试一下发现,Restful API客户端能够调用keytone、nova、glance服务。下篇将以创建虚拟机为例,讲述使用Restful API客户端能够调用OpenStack各种服务,并各服务之间的相互配合也是通过其完成。