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

news2024/9/20 9:35:34

本文尝试基于文心一言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 json
  
def authenticate(username, password,url_auth):
    # 构建认证数据
    auth_data = {
        'user_name': username,
        'password': password
    }
  
    # 将认证数据转换为JSON格式
    auth_json = json.dumps(auth_data)
  
    #禁止未经验证的HTTPS
    requests.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 = 0
        raise Exception('Authentication failed')
  
def queryStoragePool(token,url):
    # 构建认证数据
    headers = {
        'Connection': 'keep-alive',
        'X-Auth-Token': token
    }

    #print(headers)

    # 发送请求到REST API
    response = 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 API
    response = 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 API
    response = 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.coloradmin.cn/o/1238631.html

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

相关文章

2023年亚太杯数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法?2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法? 粒子群算法(Pa…

银河麒麟V10-ARM架构-postgresql安装与部署指南

提示:本人长期接收外包任务。 前言 本文详细介绍应用源码进行pgsql的安装步骤,本文以postgresql-12.0为例。 一、下载并解压安装包 ☆下载地址:https://ftp.postgresql.org/pub/source/ 解压安装包,创建安装路径: …

产品需求分析师的基本职责(合集)

产品需求分析师的基本职责1 职责 1、主要对用友司库云产品进行调研及产品规划; 2、根据司库云业务需求进行详细需求的用户故事、原型设计、需求分析、详细需求文档编写等; 3、进行产品的需求管理、需求验证、产品演示等需求工作; 4、配合开发、UE人员完成对产品的开发任务;…

了解CCC认证流程,确保产品合规通过

CCC认证是指中国强制性产品认证制度,也是中国国家质量监督检验检疫总局实施的一项重要认证制度。对于想要在中国市场销售的产品来说,CCC认证是必不可少的步骤。本文将详细介绍CCC认证的流程,帮助您了解并确保产品顺利通过认证。 第一步&#…

【React-Router】路由导航

1. 概念 路由系统中的多个路由之间需要进行路由跳转&#xff0c;并且在跳转的同时有可能需要传递参数进行通信。 2. 声明式导航 // /page/Login/index.jsimport { Link } from react-router-dom const Login () > {return <div>登录页{/* 解析成 a 链接 */}<Li…

CentOS7 FTP服务创建

一、安装FTP sudo dnf install vsftpd 二、设置防火墙&#xff0c;允许访问FTP //给防火墙增加一个允许的ftp服务(--permanent永久生效,重启后依然生效) sudo firewall-cmd --permanent --zonepublic --add-serviceftp//修改完后需要重启防火墙 sudo firewall-cmd --reload …

C#使用whisper.net实现语音识别(语音转文本)

目录 介绍 效果 输出信息 项目 代码 下载 介绍 github地址&#xff1a;https://github.com/sandrohanea/whisper.net Whisper.net. Speech to text made simple using Whisper Models 模型下载地址&#xff1a;https://huggingface.co/sandrohanea/whisper.net/tree…

【kubernetes】k8s架构之节点

文章目录 1、集群架构示意图2、概述3、管理3.1 节点名称唯一性3.2 节点自注册3.3 手动节点管理 4、节点状态4.1 地址&#xff08;Addresses&#xff09;4.2 状况&#xff08;Condition&#xff09;4.3 容量&#xff08;Capacity&#xff09;与可分配&#xff08;Allocatable&am…

java:application.properties的详细使用以及区分环境

文章目录 什么是application.properties文件&#xff1f;如何在Java中使用application.properties文件&#xff1f;将数据注入到 Bean 中使用自定义的配置文件使用命令行参数进行配置配置文件的优先级加载外部的配置文件多环境配置1、创建配置文件2、在 application.properties…

Python语言:猜数字游戏案例讲解

猜数字游戏题目要求如下&#xff1a;该程序随机生成一个1到100之间的整数&#xff0c;然后要求玩家在有限的次数内猜出这个数字。如果玩家猜对了&#xff0c;游戏结束并显示成功信息&#xff1b;如果玩家猜错了&#xff0c;程序会提示玩家猜的数字是偏大还是偏小&#xff0c;并…

OpenLayers实战,WebGL图层根据Feature要素的变量动态渲染多种颜色、不同长度和不同透明度的长方形(矩形)图形,适用于大量矩形图形渲染

专栏目录: OpenLayers实战进阶专栏目录 前言 本章使用OpenLayers根据Feature要素的变量动态渲染多种颜色、不同长度和不同透明度的矩形(长方形、四边形和正方形)图形。 通过一个WebGL图层生成四种不同颜色、不同大小和不同透明度的矩形图形要素,适用于WebGL图层根据大量点…

ATFX汇市:非美货币扎堆升值,唯有USDCAD表现平平

ATFX汇市&#xff1a;10月4日至今&#xff0c;美元指数累计跌幅已经超过3.6%&#xff0c;最低触及103.18点&#xff0c;中期均线MA30被跌破&#xff0c;强势周期可能即将转变为弱势周期。随着美元的下跌&#xff0c;大部分非美货币快速升值&#xff0c;欧元、英镑、日元的升值幅…

以45°斜抛水平距离最远

已知&#xff1a;斜抛物体的初速度为 v 0 v_0 v0​&#xff08;与水平方向的夹角为 θ \theta θ&#xff09;&#xff0c;重力加速度为 g g g。 求&#xff1a;抛物轨迹方程&#xff1f; 垂直方向的速度为 v y v 0 sin ⁡ θ − g t v_yv_0 \sin \theta -gt vy​v0​sinθ−…

modbus协议及modbus TCP协议

一、Modbus协议 1.起源 Modbus由Modicon公司于1979年开发&#xff0c;是一种工业现场总线协议标准。 Modbus通信协议具有多个变种&#xff0c;其中有支持串口&#xff0c;以太网多个版本&#xff0c;其中最著名的是Modbus RTU&#xff08;通信效率最高&#xff0c;基于串口&am…

读不懂客户,就不足以谈商业成功

数字化的背后&#xff0c;是对顾客心理和行为的深度洞察。因此&#xff0c;品牌营销运营数字化&#xff0c;不仅仅是为了收集转化率数据&#xff0c;也需要通过设计数据指标&#xff0c;更深地了解顾客。 门店管理也是如此&#xff0c;打造未来空间的数智化管理方式&#xff0c…

中低压MOSFET 2N7002T 60V 300mA 双N通道 SOT-523封装

2N7002KW小电流双N通道MOSFET&#xff0c;电压60V电流300mA&#xff0c;采用SOT-523封装形式。低Ros (on)的高密度单元设计&#xff0c;压控小信号开关&#xff0c;具有高饱和电流能力&#xff0c;ESD保护。可应用于直流/直流转换器&#xff0c;电池开关&#xff0c;便携式设备…

IDEA 配置maven结合案例使用篇

1. 项目需求和结构分析 需求案例&#xff1a;搭建一个电商平台项目&#xff0c;该平台包括用户服务、订单服务、通用工具模块等。 项目架构&#xff1a; 用户服务&#xff1a;负责处理用户相关的逻辑&#xff0c;例如用户信息的管理、用户注册、登录等。 spring-context 6.0.…

CentOS 7 升级gcc/g++ 至7.3、8.3、9.3

功能需求&#xff1a;CentOS 7 编译安装spdlog-1.12.0 提示如下错误信息&#xff1a; [rootlocalhost build]# cmake .. && make -j -- Build spdlog: 1.12.0 -- Build type: Release -- Generating example(s) -- Generating install -- Configuring done -- Generat…

02房价预测

目录 代码 评分算法&#xff1a; 代码 import numpy as np from sklearn import datasets from sklearn.linear_model import LinearRegression# 指定版本才有数据集 # C:\Users\14817\PycharmProjects\pythonProject1\venv\Scripts\activate.bat # pip install scikit-le…

云服务器-从零搭建前后端服务

使用须知 选择0M带宽不能访问公网&#xff08;不分配公网IP&#xff09;&#xff0c;如需分配公网IP请增加带宽值。云服务器ECS默认不开启虚拟内存如您需要使用请登录云服务器内部操作。Linux开启swap&#xff08;虚拟内存&#xff09;、Windows虚拟内存的设置若您购买了数据盘…