基于文心一言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.mzph.cn/news/159451.shtml

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

相关文章

单链表(数据结构与算法)

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

口袋参谋:只用一招,提前规避差评!请看具体操作步骤

​如何提前规避差评?至少99%的商家都不知道该怎么做,剩下的1%还是我刚教会的。 宝贝的评价直接影响宝贝转化,特别是新品链接。 10个好评也挽回不了一个差评对产品的致命打击,差评就像一个重磅炸弹,威力足够能让你的转…

RabbitMQ安装说明

注意: 本次安装以 CentOS 7为例 1、 准备软件 erlang 18.3 1.el7.centos.x86_64.rpm socat 1.7.3.2 5.el7.lux.x86_64.rpm rabbitmq server 3.6.5 1.noarch.rpm 2、安装Erlang rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm 3.、安装RabbitMQ 安装 rpm -ivh socat-1.7.3.2-…

2.4G无线收发芯片 XL2400P使用手册

XL2400P 系列芯片是工作在 2.400~2.483GHz 世界通用 ISM 频段的单片无线收发芯片。该芯片集成射 频收发机、频率收生器、晶体振荡器、调制解调器等功能模块,并且支持一对多组网和带 ACK 的通信模 式。发射输出功率、工作频道以及通信数据率均可配置。芯片已将多颗外…

深眸科技以自研算法+先进硬件,创新打造AI视觉一体化解决方案

工业视觉软硬件一体化解决方案:是以工业AI视觉技术为核心,通过集成工业相机等视觉硬件、电控系统和机械系统等自动化设备以及算法平台等软件应用,为工业自动化降本增效提质。 深眸科技为进一步巩固和加强技术领先优势,创新打造的…

【精选】构建智能木材计数系统:深度学习与OpenCV完美结合(详细教程+源码)

1.研究背景与意义 随着科技的不断发展,计算机视觉技术在各个领域中得到了广泛的应用。其中,卷积神经网络(Convolutional Neural Network,CNN)作为一种强大的深度学习模型,已经在图像识别、目标检测、人脸识…

鸿蒙原生应用/元服务开发-AGC分发如何编译打包应用

软件包规范 在正式打包应用前,请确保已了解HarmonyOS应用软件包规范。 操作步骤 1.打开DevEco Studio,菜单选择“Build > Build Hap(s)/APP(s) > Build APP(s)”。 2.等待编译构建。编译完成后,将在工程目录“build > outputs >…

vr编辑器可以解决教育教学中的哪些问题

VR编辑器是一种基于虚拟现实技术的教育内容编辑器,可以帮助教师快速创建出高质量的虚拟现实教学内容。 比如在畜牧教学类,通过这个软件,教师可以将真实的动物场景、行为和特征模拟到虚拟现实环境中,让学生在沉浸式的体验中学习动物…

D-Wave推出新开源及解决无线信道解码新方案!

​(图片来源:网络) 加拿大量子计算机公司D-Wave(纽约证券交易所股票代码:QBTS)是量子计算系统、软件和服务领域的佼佼者,也是全球首家商业量子计算机供应商。 近期,该公司发布了一…

LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」

原文:LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」 - 知乎 说明:LangServe代替 langchainserver 成为新的langchain 部署工具 官网资料:🦜️🏓 LangServe | &…

【SpringBoot】ThreadLocal 的详解

一、ThreadLocal 简介 ThreadLocal 叫做线程变量,意思是 ThreadLocal 中填充的变量属于当前线程,该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal 为变量在每个线程中都创建了一个副本,那么每个线…

企业如何选择一款高效的ETL工具

企业如何选择一款高效的ETL工具? 在企业发展至一定规模后,构建数据仓库(Data Warehouse)和商业智能(BI)系统成为重要举措。在这个过程中,选择一款易于使用且功能强大的ETL平台至关重要,因为数…

Android:Google三方库之Firebase集成详细步骤(一)

前提条件 安装最新版本的 Android Studio,或更新为最新版本。使用您的 Google 账号登录 Firebase请注意,依赖于 Google Play 服务的 Firebase SDK 要求设备或模拟器上必须安装 Google Play 服务 将Firebase添加到应用: 方式:使用…

智慧工地综合管理平台-环境监测子系统概要设计说明书

需求说明 原始背景 由于城市建设和工业化进程的加速,工地施工过程中的部分环节由于监管不到位,导致工地扬尘污染问题日益严重,对人类健康和环境质量造成了不可忽视的影响。为了解决这一问题,政府部门和相关企业逐渐意识到了建立工地扬尘监测系统的必要性和紧迫性,因此,环…

运行代码时不同软件的参数写法

目录 pycharm终端 pycharm 如下图所示,不同参数间不需要什么间隔什么东西 终端 如下图所示,不同参数间需要用一个符号来间隔

npm ERR!问题解决

问题一 解决办法 两个文件夹【node_global】和【node_cache】 修改文件属性 问题二 解决办法 安装淘宝镜像 npm config set registry https://registry.npm.taobao.org 查看是否成功: npm config get registry 是淘宝的就ok

腾讯三季度财报解读:AI大模型成下个十年的新支点?

2023年,腾讯重回高增长轨道。 近日,腾讯披露了2023年第三季度财报,营收1546.25亿元,同比增长10%;非国际通用会计准则下的净利润为449.21亿元,同比增长39%。此前两个季度,腾讯的营收、净利润增速…

DependencyProperty.Register:wpf 向别的xaml传递参数

一.使用背景:在A.xaml中嵌入B.xaml,并且向B.xaml传递参数。 函数介绍: public static DependencyProperty Register(string name, Type propertyType, Type ownerType );name(string): 依赖属性的名称。在…

Tekton — 通过tekton-operator部署tekton组件

文章目录 版本信息部署准备安装卸载tekton组件 Tektoncd Operator 作为一个 Kubernetes 的扩展,可以方便快捷地在 Kubernetes 集群上安装、升级和管理 Tekton Pipelines、Dashboard、Triggers 等组件。 那么本篇文章介绍在K8S集群中如何通过tekton-operator部署Tekt…

SAE 2.0,让容器化应用开发更简单

云布道师 云原生这个概念从提出,到壮大,再到今天的极大普及,始终处于一个不断演进和革新的过程中。云原生体系下应用的托管形态是随着企业应用架构在不断演进的。最早的应用大多是集中式、单体式的,应用通过优雅的分层来实现领域…