OpenStack API的使用套路分享

 更新时间:2023年02月16日 14:03:25   作者:TtrOps  
近期有openstack和vmware相关的开发需求,N年前从事虚拟化运维的时候玩过了,所以对它俩的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云计算组件glance部署及操作步骤

    openstack云计算组件glance部署及操作步骤

    这篇文章主要为大家介绍了openstack云计算之glance部署及操作步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 详解Openstack组件部署 — Overview和前期环境准备

    详解Openstack组件部署 — Overview和前期环境准备

    本篇文章主要介绍了详解Openstack组件部署 — Overview和前期环境准备,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • 什么是OpenStack 开源的云计算管理平台项目

    什么是OpenStack 开源的云计算管理平台项目

    OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台
    2016-11-11
  • OpenStack API的使用套路分享

    OpenStack API的使用套路分享

    近期有openstack和vmware相关的开发需求,N年前从事虚拟化运维的时候玩过了,所以对它俩的API使用套路早忘得一干二净。这次借这个机会把使用套路做个文档并分享出来,希望可以帮到有需要的盆友
    2023-02-02
  • OpenStack 创建windows镜像实现步骤

    OpenStack 创建windows镜像实现步骤

    这篇文章主要介绍了 OpenStack 创建windows镜像实现步骤的相关资料,需要的朋友可以参考下
    2016-11-11
  • OpenStack 中的Nova组件详解

    OpenStack 中的Nova组件详解

    Nova是OpenStack云中的计算组织控制器。支持OpenStack云中实例(instances)生命周期的所有活动都由Nova处理。本文给大家介绍OpenStack 中的Nova组件,感兴趣的朋友一起看看吧
    2016-11-11
  • OpenStack Mitaka 版本中的 domain 和 admin详解

    OpenStack Mitaka 版本中的 domain 和 admin详解

    这篇文章主要介绍了OpenStack Mitaka 版本中的 domain 和 admin详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Openstack 创建项目和虚拟机详细介绍

    Openstack 创建项目和虚拟机详细介绍

    这篇文章主要介绍了Openstack 创建项目和虚拟机详细介绍的相关资料,这里举例说明如何实现,图文教程,需要的朋友可以参考下
    2016-11-11
  • CentOS系统中一键安装Openstack图文教程

    CentOS系统中一键安装Openstack图文教程

    最近在学习Openstack,一直想试试安装一下,可是参考了很多资料,并不如人意。由于一直用的Linux版本为CentOS,大部分Openstack安装都要求在Ubuntu上进行。本文介绍的是在CentOS系统中一键安装Openstack的方法,有需要的朋友们可以参考学习,下面来一起看看吧。
    2016-10-10
  • 详解VMware接入Openstack—使用Openstack创建vCenter虚拟机

    详解VMware接入Openstack—使用Openstack创建vCenter虚拟机

    本篇文章主要介绍了VMware接入Openstack—使用Openstack创建vCenter虚拟机,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03

最新评论