Openstack 使用Restful API方式创建用户

简介: Openstack

> 使用python request库和OpenStack Restful

> APIs,在/root目录下,创建api.py文件,编写python代码,代码实现以下任务:

> (1)首先实现查询用户,如果用户名称“user_demo”已经存在,先删除。

> (2)如果不存在“user_demo”,创建该用户,密码设置为“jnxl2022”。

> (3)创建完成后,查询该用户信息,查询的body部分内容控制台输出,同时json格式的输出到文件当前目录下的user_demo.json文件中,json格式要求indent=4。


```python

import requests

import json


auth_url = "OpenStack_Identity_API_Endpoint"

username = "OpenStack_Username"

password = "OpenStack_Password"

project_name = "OpenStack_Project_Name"


def get_token():

   headers = {'Content-Type': 'application/json'}

   data = {

       "auth": {

           "identity": {

               "methods": [

                   "password"

               ],

               "password": {

                   "user": {

                       "name": username,

                       "domain": {

                           "name": "Default"

                       },

                       "password": password

                   }

               }

           },

           "scope": {

               "project": {

                   "name": project_name,

                   "domain": {

                       "name": "Default"

                   }

               }

           }

       }

   }

   response = requests.post(f"{auth_url}/auth/tokens", headers=headers, json=data)

   if response.status_code != 201:

       raise Exception("Failed to get token")

   return response.headers['X-Subject-Token']


def delete_user(token):

   headers = {'X-Auth-Token': token}

   response = requests.delete(f"{auth_url}/users/user_demo", headers=headers)

   if response.status_code != 204:

       raise Exception("Failed to delete user")


def create_user(token):

   headers = {'X-Auth-Token': token, 'Content-Type': 'application/json'}

   data = {

       "user": {

           "name": "user_demo",

           "password": "jnxl2022",

           "domain_id": "demo",

           "enabled": True

       }

   }

   response = requests.post(f"{auth_url}/users", headers=headers, json=data)

   if response.status_code != 201:

       raise Exception("Failed to create user")


def get_user_info(token):

   headers = {'X-Auth-Token': token}

   response = requests.get(f"{auth_url}/users/user_demo", headers=headers)

   if response.status_code != 200:

       raise Exception("Failed to get user info")

   return response.json()


def main():

   token = get_token()

   try:

       delete_user(token)

   except Exception as e:

       print(e)

   create_user(token)

   user_info = get_user_info(token)

   print(json.dumps(user_info, indent=4))

   with open("user_demo.json", "w") as f:

       json.dump(user_info, f, indent=4)


if __name__ == "__main__":

   main()


```

相关文章
|
11天前
|
JSON API 数据处理
【Swift开发专栏】Swift中的RESTful API集成实战
【4月更文挑战第30天】本文探讨了在Swift中集成RESTful API的方法,涉及RESTful API的基础概念,如HTTP方法和设计原则,以及Swift的网络请求技术,如`URLSession`、`Alamofire`和`SwiftyJSON`。此外,还强调了数据处理、错误管理和异步操作的重要性。通过合理利用这些工具和策略,开发者能实现高效、稳定的API集成,提升应用性能和用户体验。
|
1天前
|
缓存 测试技术 API
RESTful API的最佳实践
【5月更文挑战第11天】在Python中构建RESTful API时,可以选择轻量级的Flask或全栈的Django框架。Flask适用于小型到中型API,而Django适合大型复杂项目。示例代码展示了如何在两个框架中创建任务列表API。
5 0
|
4天前
|
存储 缓存 JavaScript
深入理解RESTful API设计原则与实践
【5月更文挑战第7天】在现代Web服务开发中,表述性状态传递(REST)是一种广泛采用的架构风格,用于构建可扩展的网络应用程序接口(APIs)。本文将探讨RESTful API的核心设计原则,并通过具体实例展示如何实现一个符合REST约束的后端服务。我们将讨论资源的识别、客户端-服务器通信模式、无状态性、以及统一接口的重要性,并探索如何使用当前的流行技术栈来实现这些概念。
|
11天前
|
缓存 监控 JavaScript
Node.js中构建RESTful API的最佳实践
【4月更文挑战第30天】本文介绍了在Node.js中构建RESTful API的最佳实践:选择合适的框架(如Express、Koa)、设计清晰的API接口(遵循HTTP动词和资源路径)、实现认证授权(JWT、OAuth 2.0)、错误处理、限流缓存、编写文档和测试,以及监控性能优化。这些实践有助于创建健壮、可维护和易用的API。
|
11天前
|
存储 关系型数据库 Go
【Go语言专栏】基于Go语言的RESTful API开发
【4月更文挑战第30天】本文介绍了使用Go语言开发RESTful API的方法,涵盖了路由、请求处理、数据存储和测试关键点。RESTful API基于HTTP协议,无状态且使用标准方法表示操作。在Go中,通过第三方库如`gorilla/mux`进行路由映射,使用`net/http`处理请求,与数据库交互可选ORM库`gorm`,测试则依赖于Go内置的`testing`框架。Go的简洁性和并发性使得它成为构建高效API的理想选择。
|
11天前
|
机器学习/深度学习 算法 安全
深度学习在图像识别中的应用与挑战构建高效可扩展的RESTful API:后端开发的实战指南
【4月更文挑战第30天】 随着计算机视觉技术的飞速发展,深度学习在图像识别领域取得了显著的成果。本文将探讨深度学习技术在图像识别中的应用及其所面临的挑战。首先,我们将介绍深度学习的基本原理和关键技术,然后分析其在图像识别中的优势和应用案例。最后,我们将讨论当前深度学习在图像识别领域所面临的主要挑战和未来的发展趋势。
|
12天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
【4月更文挑战第29天】本文探讨了在Web开发中流行的前后端分离模式,重点介绍了RESTful API的设计与实现。REST是一种基于HTTP协议的架构风格,核心概念包括资源、表述和状态转换。RESTful API设计遵循无状态、统一接口等原则,使用GET、POST、PUT、DELETE等HTTP方法执行操作,并通过状态码和JSON/XML传输数据。在PHP中实现RESTful API,可通过定义路由、创建控制器、处理请求和响应,同时注意安全性措施,如使用HTTPS。文中还提供了一个用户管理API的实战示例,以帮助读者更好地理解和应用RESTful API。
|
中间件 API Python
openstack XXX-api分析
一、概述 RESTful API: 表征状态迁移,也就是说client端使用http的基本操作(主要四种:get, post, put, delete 对应增删改查)使服务端的资源状态转化; WSGI: web server gateway interface  web服务网关接口,可以看作一个桥...
1020 0
|
23小时前
|
安全 API 开发者
智能体-Agent能力升级!新增Assistant API & Tools API服务接口
ModelScope-Agent是一个交互式创作空间,它支持LLM(Language Model)的扩展能力,例如工具调用(function calling)和知识检索(knowledge retrieval)。它已经对相关接口进行了开源,以提供更原子化的应用LLM能力。用户可以通过Modelscope-Agent上的不同代理(agent),结合自定义的LLM配置和消息,调用这些能力。
|
4天前
|
JSON 搜索推荐 数据挖掘
电商数据分析的利器:电商关键词搜索API接口(标题丨图片丨价格丨链接)
淘宝关键词搜索接口为电商领域的数据分析提供了丰富的数据源。通过有效利用这一接口,企业和研究人员可以更深入地洞察市场动态,优化营销策略,并提升用户体验。随着电商平台技术的不断进步,未来的API将更加智能和个性化,为电商行业带来更多的可能性。