OpenStack API的使用套路分享
写在前面
近期有openstack和vmware相关的开发需求,N年前从事虚拟化运维的时候玩过了,所以对它俩的API使用套路早忘得一干二净。这次借这个机会把使用套路做个文档并分享出来,希望可以帮到有需要的盆友。本篇先分享openstack的API使用套路,后续再分享vmware api的使用套路。在本篇中,只给出了1个小例子,更多例子可自行去写代码,API的使用套路当然是万变不离其宗。
OpenStack官方API文档:https://docs.openstack.org/zed/api/
还有最重要的一点,请确保你已经搭建好openstack环境
获取token
https://docs.openstack.org/api-quick-start/api-quick-start.html
通过上面的API页面可得知,认证服务的API是:http://controller:5000/v3/
使用python代码请求token
import requests import json USER = "admin" PASSWORD = "xxxxxx" DOMAIN = "Default" PROJECT = "admin" TOKEN_URL = "http://10.0.0.10:5000/v3/auth/tokens?nocatalog" def getToken(): reqJson = { "auth":{ "identity":{ "methods":["password"], "password":{ "user":{ "domain":{"name":DOMAIN}, "name":USER, "password":PASSWORD } } }, "scope":{ "project":{ "domain":{ "name":DOMAIN }, "name":PROJECT } } } } payload = json.dumps(reqJson) headers = { 'Content-Type': 'application/json' } response = requests.request("POST", TOKEN_URL, headers=headers, data=payload) return response.headers.get("X-Subject-Token") if __name__ == "__main__": token = getToken() print(token)
获取到的token如下:
gAAAAABj2cwy_AOflA6gDQiR8fGK0VzLGawXPScsKB-1hIp46JdKCY68Nuz8ZQ8-USTcyY_3cCoJRpIsq8OrcZl8ztMSkUU26VF_dnkBLm4lXAyM3dZF8lHWoqmEHOevfuC0IwqQdQ66FTUF7Nl9sFElFlB39QEuSR1mZSTBrJy6bwycd8a_C5c
小栗子:获取所有实例详情
假设有个需求,获取所有实例的详情信息。提到虚拟机实例,那肯定就是nova服务,所以要知道nova服务的api。在之前访问API的页面中,就是Compute服务。服务端点是http://controller:8774/v2.1
Compute API 官方文档:https://docs.openstack.org/api-ref/compute/
openstack的api是完全遵循REST风格的api,通过上面的api文档可得知,请求方法是GET,点开detail,可以看到更详细的API说明。
下面使用python写代码
import requests import json USER = "admin" PASSWORD = "xxxxxxxxx" DOMAIN = "Default" PROJECT = "admin" TOKEN_URL = "http://10.0.0.10:5000/v3/auth/tokens?nocatalog" SERVER_DETAIL_URL = "http://10.0.0.10:8774/v2.1/servers/detail" def getToken(): reqJson = { "auth":{ "identity":{ "methods":["password"], "password":{ "user":{ "domain":{"name":DOMAIN}, "name":USER, "password":PASSWORD } } }, "scope":{ "project":{ "domain":{ "name":DOMAIN }, "name":PROJECT } } } } payload = json.dumps(reqJson) headers = { 'Content-Type': 'application/json' } response = requests.request("POST", TOKEN_URL, headers=headers, data=payload) return response.headers.get("X-Subject-Token") def serversDetail(token): headers = { 'X-Auth-Token': token } response = requests.request("GET", SERVER_DETAIL_URL, headers=headers) serversList = response.json().get("servers") for s in serversList: status = s.get("status") name = s.get("name") ip = s.get("addresses").get("my-net")[0].get("addr") print(status, name, ip) if __name__ == "__main__": token = getToken() serversDetail(token)
结果
(u'SHUTOFF', u'app-2', u'172.18.45.60')
(u'SHUTOFF', u'app-4', u'172.18.45.34')
(u'SHUTOFF', u'app-5', u'172.18.45.71')
(u'SHUTOFF', u'app-3', u'172.18.45.67')
(u'SHUTOFF', u'app-1', u'172.18.45.26')
(u'SHUTOFF', u'web', u'172.18.45.38')
到此这篇关于OpenStack API的使用套路分享的文章就介绍到这了,更多相关OpenStack API内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Openstack 使用migrate进行数据库升级实现方案详细介绍
这篇文章主要介绍了Openstack 使用migrate进行数据库升级详细介绍的相关资料,数据库表或者增加字段等是必然的事情,如何比较容易的进行这些数据库升级的适配和管理,这里提供实现方法,需要的朋友可以参考下2016-12-12OpenStack Heat AutoScaling详解及实例代码
这篇文章主要介绍了OpenStack Heat AutoScaling详解及实例代码的相关资料,需要的朋友可以参考下2016-12-12CentOS 6.4下安装部署OpenStack云计算平台的方法
现在好多公司都使用Openstack,所以也想着学习下用OpenStack云计算平台,这篇文章给加详细介绍了CentOS 6.4下安装部署OpenStack云计算平台的方法,有需要的朋友们可以参考借鉴,下面来一起看看吧。2016-10-10OpenStack手动分布式部署Keystone(Queens版)
这篇文章主要介绍了OpenStack手动分布式部署Keystone(Queens版),Keystone是OpenStack框架中负责管理身份验证服务访问规则和服务令牌功能的组件,需要的朋友可以参考下2023-03-03
最新评论