Administrator
发布于 2025-03-20 / 0 阅读
0

OpenStack API 文档使用

OpenStack API 文档使用

文档位置

OpenStack Docs: 2023.2 API references

比较常用的组件

Identity service (keystone): API Reference

Image service (glance): API Reference

Placement service (placement): API Reference

Compute service (nova): API Reference API Guide

Networking service (neutron): API Reference

Object Storage service (swift): API Reference

Block Storage service (cinder): API Reference

Orchestration service (heat): API Reference API Documentation

文档使用教程

以user创建举例

0.查看组件使用API

image-20240313192651665

1.打开组件文档

打开api官网文档,选择要使用的组件的API文档

image-20240313192949305

2.选择API版本

选择需要使用的API版本,有些没有多个API版本的文档会直接进入到详情页面

image-20240313192250529

我们是v3的API 选择v3.0的API进入,进入后是一些介绍,左侧是目录

image-20240313193507933

3.找到需要使用的API介绍

我们要使用API创建用户,所以下滑到Users API的介绍位置

相关功能介绍看图

image-20240313194347538

4.查看API使用方法

我们要创建一个用户,所以说根据介绍看创建用户相关的API,点击detail(细节)

可以看到出现了更多的信息,我们主要看Request(请求)和Response(响应)部分

image-20240313194820959

先看Request(请求)的Parameters(参数)部分

image-20240313203214683

再看Request(请求)的Example(示例)

这里可以看到完整的请求体写法,一般只需挑自己需要的写就行,可选的(Optional)可以不写

image-20240313203524349

接下来看Response(响应)的Parameters(参数)部分

可以看到大体和前面一样,只不过这里展示的是会返回的参数,Optional代表可选返回,使用相关参数才有

image-20240313204010009

然后是Response(响应)的Status Codes(状态码)

可以通过这些查看API的使用是否成功

image-20240313205512650

常见 状态码

成功
200 请求成功
201 资源已创建并可供使用
204 服务器已满足请求
...
失败
400 请求中的某些内容无效
401 用户在发出请求之前必须进行身份验证
403 策略不允许当前用户执行此操作
404 无法找到请求的资源
409 此操作与此资源上的另一个操作冲突
501 服务器要么无法识别请求方法,要么缺少 能够满足请求
...

最后是Response(响应)的Example(示例)

这里可以看到响应的完整返回是怎么样的 image-20240313205703946

5.使用示例

# 导入要使用的包
import json
import requests

# 定义基础参数
# ip
ip = "192.168.10.100"

# 定义认证地址
authUrl = f"http://{ip}:5000/v3/auth/tokens"
# 定义认证体(身份认证数据)
authBody = {
    "auth": {
        "identity": {
            "methods": ["password"],
            "password": {
                "user": {
                    "name": "admin",
                    "password": "000000",
                    "domain": {
                        "name": "demo"
                    }
                }
            }
        },
        "scope": {
            "project": {
                "name": "admin",
                "domain": {
                    "name": "demo"
                }
            }
        }
    }
}

# 构造请求头
header = {
    "X-Auth-Token": requests.post(authUrl, json.dumps(authBody)).headers["X-Subject-Token"],
    "Content-Type": "application/json"
}

# 定义api地址,这里是user
userUrl = f"http://{ip}:5000/v3/users"
# 定义请求数据
userBody = {
    "user": {
        "name": "user-api",
        "password": "000000",
        "domain_id": "default"
    }
}

# 遍历用户列表,删除指定用户(重名用户),避免创建失败
for i in users:
    if i["name"] == "user-api":
        requests.delete(f"{userUrl}/{i['id']}", headers=header)

# 创建新用户,内容解析为JSON格式,并从中提取 "user" 键对应的值
user = requests.post(userUrl, json.dumps(userBody), headers=header).json()["user"]

# 打印创建的用户信息
for i in user:
    print(f"{i}: {user[i]}")