基于文心一言AI大模型,编写一段python3程序以获取华为分布式块存储REST接口的实时数据

本文尝试基于文心一言AI大模型,编写一段python3程序以获取华为分布式块存储REST接口的实时数据。

一、用文心一言AI大模型将需求转化为样例代码

1、第一次对话:“python3写一段从rest服务器获取数据的样例代码”

同时生成了以下注解 

这段代码首先定义了一个函数 get_data_from_rest_server,该函数使用 requests.get 方法向指定的 URL 发送 GET 请求。如果请求成功(即响应的状态码为 200),则将响应的 JSON 数据返回。否则,它将打印出错误消息并返回 None。然后,我们调用这个函数来获取数据,并打印出获取到的数据。注意你需要将 url 替换为你的 REST 服务器的实际 URL。 

  2、第二次对话:“以上请求需带入服务器的认证参数”

同时生成了以下注解 

 在上述代码中,我们通过在 requests.get 方法中传递 auth=(username, password) 来提供服务器的认证参数。这样,当你发送请求时,requests 会自动将认证参数添加到请求中,从而完成身份验证过程。

3、第三次对话:“以上代码需代入请求消息头”

 

import requests  # 定义服务器认证参数的用户名和密码  
username = 'your_username'  
password = 'your_password'  def get_data_from_rest_server():  # 将此 URL 替换为你的 REST 服务器 URL  url = 'http://example.com/api/data'  # 定义请求头,可以包含自定义的头部字段和值  headers = {  'Content-Type': 'application/json',  # 声明请求的内容类型为 JSON  'Authorization': f'Basic {username}:{password}',  # 添加基本的身份验证头部字段  }  # 使用 GET 方法请求数据,并携带服务器认证参数和请求头  response = requests.get(url, headers=headers)  # 检查响应的状态码,如果请求成功(状态码为 200),则处理响应的数据  if response.status_code == 200:  data = response.json()  return data  else:  print(f"请求失败,状态码: {response.status_code}")  return None  # 调用函数获取数据  
data = get_data_from_rest_server()  
if data is not None:  print(data)

注解如下 :

在上述代码中,我们通过创建一个字典对象来定义请求头,其中包含了一个 Content-Type 字段和一个 Authorization 字段。Content-Type 字段声明了请求的内容类型为 JSON,而 Authorization 字段包含了基本的身份验证值。然后,我们将这个字典对象传递给 requests.get 方法的 headers 参数,从而将请求头添加到请求中。 

 通过和文心一言AI大模型的三次对话,我们大致了解了用python 的 requests 库从 REST 服务器获取数据的基本方法。

二、核查华为分布式块存储REST接口规范

1、RESTful API的请求必须包括如下消息头

2、拟测试请求接口官方样例

查询存储池 接口描述
查询存储池。
URI 路径
https://${ip}:${port}/dsware/service/cluster/storagepool/queryStoragePool
访问方法
GET
执行实例
Request: /dsware/service/cluster/storagepool/queryStorageNodeInfo?poolId=0
Response: {
"result": 0,
"storagePools": [
{
"poolId": 0,
"totalCapacity": 675305,
"usedCapacity": 0,
"reductionInvolvedCapacity": 0,
"allocatedCapacity": 0,
"usedCapacityRate": 0.0,
"deduplicationSaved": 0,
"compressionSaved": 0,
"deduplicationRatio": 1.0,
"compressionRatio": 1.0,
"dataReductionRatio": 1.0,
"thinRate": 0,
"replicationFactor": 3,
"poolName": "rep3",
"poolServerType": 1,
"thinThreshold": 70,
"poolSpec": "normal_pool",
"redundancyPolicy": "replication",
"numDataUnits": 0,
"numParityUnits": 0,
"numFaultTolerance": 0,
"cellSize": 0,
"ecCacheMediaType": "false",
"ecCacheRate": "0",
"ecCacheWbCacheRate": "0",
"compressionAlgorithm": "performance",
"enableAdvanceVolume": "true",
"encryptType": 0,
"supportEncryptForMainStorageMedia": 0,
"serviceType": 1,
"storageMediaType": "ssd_card",
"physicalTotalCapacity": 482361,
"usedCapacityAfterDedup": 0,
"writableCapacity": 482361,
"markDelCapacity": 0,
"bbuInfo": "close",
"fastGcTime": 0
}
]
}

三、代码实写

根据需求进行代码编写,并多次测试,最终通过的代码如下(以下代码存为名为“healthck.py”的文件):
#!/usr/bin/python3
#coding=utf-8##__author__='daijianbing'import requests
import jsondef authenticate(username, password,url_auth):# 构建认证数据auth_data = {'user_name': username,'password': password}# 将认证数据转换为JSON格式auth_json = json.dumps(auth_data)#禁止未经验证的HTTPSrequests.packages.urllib3.disable_warnings()# 发送POST请求到REST API进行身份验证response = requests.post(url_auth,verify = False, data=auth_json, headers={'Content-Type': 'application/json'})# 检查响应状态码,如果成功则返回认证令牌,否则抛出异常if response.status_code == 200:#print(response.json())return response.json()['data']['x_auth_token']else:connect = 0raise Exception('Authentication failed')def queryStoragePool(token,url):# 构建认证数据headers = {'Connection': 'keep-alive','X-Auth-Token': token}#print(headers)# 发送请求到REST APIresponse = requests.get(url, verify = False, headers=headers)# 检查响应状态码,如果成功则返回认证令牌,否则抛出异常if response.status_code == 200:#print(response.json())return response.json()['storagePools']else:raise Exception('Authentication failed')def queryPoolstatus(token,url,poolId):# 构建认证数据headers = {'Connection': 'keep-alive','X-Auth-Token': token}params = {'poolId':str(poolId),'vbs': 'true'}params_json = json.dumps(params)#print("url:",url,"headers:",headers,"params_json:",params_json)# 发送T请求到REST APIresponse = requests.get(url, verify = False, params=params, headers=headers)# 检查响应状态码,如果成功则返回认证令牌,否则抛出异常if response.status_code == 200:#print(response.json())return response.json()['status']else:raise Exception('Authentication failed')def queryAlarms(token,url):# 构建认证数据headers = {'Connection': 'keep-alive','X-Auth-Token': token}params = {'filter':"alarmStatus::1",}params_json = json.dumps(params)# 发送请求到REST APIresponse = requests.get(url, verify = False, params=params, headers=headers)# 检查响应状态码,如果成功则返回认证令牌,否则抛出异常if response.status_code == 200:#print(response.json())return response.json()['data']else:raise Exception('Authentication failed')# 使用示例  
username = 'zabbix'  
password = 'passwd'
hostip = '192.168.0.1'
port = '8088'
hostport = "https://"+hostip+":"+port
url_auth = hostport+'/api/v2/aa/sessions'
checkstatus = 1
requests.packages.urllib3.disable_warnings()
try:token = authenticate(username, password, url_auth)print('x_auth_token:', token)url_pool = hostport+'/dsware/service/resource/queryStoragePool'pools = queryStoragePool(token,url_pool)url_poolstatus=hostport+'/dsware/service/cluster/storagepool/queryStatus'for pool in pools:poolstatus=queryPoolstatus(token,url_poolstatus,pool['poolId'])url_alarms = hostport+'/api/v2/common/alarm_count'Alarms=queryAlarms(token,url_alarms)print('poolid:',pool['poolId'],'poolname:',pool['poolName'],'poolstatus:',poolstatus,'alarmcount:',Alarms['count'])
except:checkstatus = 0
finally:print("checkstatus:",checkstatus)print("chech over")

四、验证运行

实际运行:

# python3 --version
Python 3.9.9
# python3 healthck.py   
x_auth_token: MzMwMDE0OTkyNkEzMDAxNGUwOTcwMzE2
poolid: 0 poolname: Pool01 poolstatus: 0 alarmcount: 0
checkstatus: 1
chech over

本段代码实现了存储REST接口认证登录,查询全部的pool并列出poolid,poolname,pool状态,输出当前未恢复告警数并返回本次的检查状态(1为检查成功)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/210364.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2. OpenHarmony源码下载

OpenHarmony源码下载(windows, ubuntu) 现在的 OpenHarmony 4.0 源码已经有了,在 https://gitee.com/openharmony 地址中,描述了源码获取的方式。下来先写下 windows 的获取方式,再写 ubuntu 的获取方式。 获取源码前,还需要的准…

三十分钟学会Shell(下)

Shell 3.1 运算符 3.1.1 算数运算符 在Shell脚本中,算术运算符用于执行基本的数学运算。Shell支持多种算术运算符,包括加、减、乘、除等。以下是关于Shell算术运算符的一些方法以及相应的示例说明: 加法: a10 b20 c$((a b)) …

SpringBoot自定义注解+数据脱敏(一看就懂)

一、注解的介绍 在Java中,注解(Annotation)是JDK5.0引入的一个重要特性。注解提供了一种元数据机制,可以用于描述和定义程序中的元素(类、方法、成员变量等)。注解是一种能被添加到java源代码中的元…

[autojs]利用console实现悬浮窗日志输出

"ui"; ui.layout(<vertical><button id"autoFloatWindow" text"开启悬浮窗" textSize"15sp" /><button id"autoService" text"开启无障碍服务" textSize"15sp" /><button id"…

SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…

【SpringMVC】 参数传递

一.项目目录 SpringBoot项目创建之后会生成很多目录 删除不需要的这四个文件/目录 目录 二.Spring MVC 和 MVC Spring MVC(Spring Web MVC) Spring Web MVC 是⼀个 Web 框架 MVC : Model View Controller 它是一种思想 , 它把一个项目分成了三个部分. View视图层 界面显示…

AnalyticDB for PostgreSQL 实时数据仓库上手指南

AnalyticDB for PostgreSQL 实时数据仓库上手指南 2019-04-016601 版权 本文涉及的产品 云原生数据仓库 ADB PostgreSQL&#xff0c;4核16G 50GB 1个月 推荐场景&#xff1a; 构建的企业专属Chatbot 立即试用 简介&#xff1a; AnalyticDB for PostgreSQL 提供企业级数…

JS PromiseLike 的判定与使用

目录 一. $.ajax()返回值遇到的问题二. Promise A 规范三. 判断是否为PromiseLike3.1 判断ES6的new Promise()3.2 判断包含then方法的对象3.3 判断$.ajax()返回的对象 一. $.ajax()返回值遇到的问题 当我们执行如下js代码时&#xff0c;可以看到$.ajax()执行后&#xff0c;得到…

Unity收费对谁影响最大

Unity的收费政策对以下几类人群影响最大&#xff1a; 游戏开发商&#xff1a;Unity收费政策中最直接的影响对象就是游戏开发商。对于那些使用Unity引擎制作游戏的开发商来说&#xff0c;他们将需要考虑新的许可证费用和服务费用&#xff0c;这可能会对他们的盈利和发展产生影响…

【分子指纹】化学分子指纹的概念和应用

Drug Discov Today&#xff5c;化学分子指纹的概念和应用 2022年9月13日&#xff0c;哈尔滨医科大学药物基因组信息学教研室陈秀杰教授、哈尔滨医科大学生物信息科学与技术学院解洪波副教授团队在期刊Drug Discovery Today上发表论文“Concepts and applications of chemical fi…

计算机网络之运输层

一、概述 物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的的问题&#xff0c;实现了主机到主机的通信 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程 如何为运行在不同主机上的应用进程提供直接的通信服务时运输层的任务…

GoLand 2023.2.5(GO语言集成开发工具环境)

GoLand是一款专门为Go语言开发者打造的集成开发环境&#xff08;IDE&#xff09;。它能够提供一系列功能&#xff0c;如代码自动完成、语法高亮、代码格式化、代码重构、代码调试等等&#xff0c;使编写代码更加高效和舒适。 GoLand的特点包括&#xff1a; 1. 智能代码补全&a…