python redfish库

redfish的Python项目详细描述


https://travis-ci.org/DMTF/python-redfish-library.svg?branch=masterhttps://img.shields.io/pypi/v/redfish.svg?maxAge=2592000https://img.shields.io/github/release/DMTF/python-redfish-library.svg?maxAge=2592000https://img.shields.io/badge/License-BSD%203--Clause-blue.svghttps://img.shields.io/pypi/pyversions/redfish.svg?maxAge=2592000https://api.codacy.com/project/badge/Grade/1283adc3972d42b4a3ddb9b96660bc07

Description

rest(representational state transfer)是一种基于web的软件体系结构样式,由一组集中于系统资源的约束组成。redfish库使用hateoas(超媒体作为应用程序状态的引擎)redfish架构对资源执行基本的https操作get、post、put、patch和delete。api客户端允许您通过一个固定的url和几个uri来管理和与系统交互。有关详细信息,请转到wiki

Installing

pip install redfish

从zip文件源构建

python setup.py sdist --formats=zip (this will produce a .zip file)
cd dist
pip install redfish-x.x.x.zip

Requirements

确保系统没有在目标系统上安装openstack“python redfish”模块。此模块正在使用此库已使用的冲突包名称。有问题的模块可以在这里找到:https://pypi.org/project/python-redfish/

Usage

在这个项目的examples目录下提供了一组示例。除了本段中的指令之外,您还将在这些示例中找到有价值的实现技巧。

导入相关的python模块

对于符合redfish的应用程序,导入相关的python模块。

对于符合redfish的应用程序:

importredfish

创建一个redfish对象

redfish对象包含3个参数:目标安全url(即“https://IP”或“https://X.Y.Z.T”)、用户名及其密码。 另外还有两个可选参数:timeout(连接初始化超时前的秒数)和max_retry(超时后请求重试的次数)。如果将这些默认值分别设置为“无”和“10”。 要指定一个redfish对象,请调用redfish_客户端方法:

REDFISH_OBJ=redfish.redfish_client(base_url=login_host,username=login_account, \
                  password=login_password,default_prefix='/redfish/v1')

登录到服务器

创建redfish_obj时执行登录操作。您可以继续进行基本的身份验证,但这样会降低安全性。

REDFISH_OBJ.login(auth="session")

执行get操作

可以执行简单的get操作来获取任何有效路径中的数据。 路径“/redfish/v1/systems/1”上的rawget操作示例如下所示:

response=REDFISH_OBJ.get("/redfish/v1/systems/1",None)

执行手术后

可以执行post操作来创建资源或执行操作。 路径“/redfish/v1/systems/1/actions/computersystem.reset”上的post操作示例如下:

body={"ResetType":"GracefulShutdown"}response=REDFISH_OBJ.post("/redfish/v1/systems/1/Actions/ComputerSystem.Reset",body=body)

处理任务

post操作可能导致一个任务,描述一个持续时间大于单个请求范围的操作。 正在处理的操作消息对象将返回一个任务资源,当使用监视器进行轮询时,可以访问该资源。 下面显示了具有可能任务的post操作的示例。

body={"ResetType":"GracefulShutdown"}response=REDFISH_OBJ.post("/redfish/v1/systems/1/Actions/ComputerSystem.Reset",body=body)if(response.is_processing):task=response.monitor(context)while(task.is_processing):retry_time=task.retry_aftertask_status=task.dict['TaskState']time.sleep(retry_timeifretry_timeelse5)task=response.monitor(context)

注销创建的会话

确保注销创建的每个会话,因为它将保持活动状态,直到超时。

REDFISH_OBJ.logout()

注销将从系统中删除当前会话。redfish_客户端对象析构函数包含一个logout语句。

Contributing

  1. 叉开!
  2. 创建您的功能分支:git checkout-b我的新功能
  3. 提交您的更改:git commit-am'add some feature'
  4. 推到分支:git push origin my new feature
  5. 提交拉取请求:d

Release Process

  1. 使用自上次发布以来的更改列表更新changelog.md
  2. 更新src/redfish/__init__.pysetup.py中的__version__变量,以反映新的库版本
  3. 聚氨酯sh更改为github
  4. 在github中创建新版本
  5. 将新的库版本推送到pypi.org:python setup.py sdist && twine upload dist/*

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ContentExchange设置请求属性   java Spark/Hdfs/Hdfsclient兼容性   java springcloudstreamkafka配置:instanceCount和instanceIndex   Java中web服务序列化日期   java用动态数据替换占位符   java git gc似乎覆盖了一个packfile,留下了一个打开的文件描述符,其中包含对“oldxxx.pack”的引用   为什么Apache项目对Java版本敏感?   java Anylogic帮助如何在导入的3dobject通过输送机上的多个“站”时更改其颜色?   JavaEclipseNeonM2E可以导入一个大型项目,但似乎不能自动解决依赖关系   java@FindBy搜索具有满足条件的子元素的元素   java如何将ActionEvent e与键绑定一起使用?   java转换以集中方式从外部库抛出的异常   java中用户文件/数据文件与系统/程序文件的区别   java使用变量字符串或字符作为对象名   字体使用Java图形操纵字符串中每个字符的形状   JavaFX图表移动数据   java RandomAccessFile:将所有项设置为相同的字节数?   java Google Play inapp Billing onPurchasesUpdated()错误响应代码1   java在不知道属性名和属性数的情况下处理json对象   java是否可以一次从HazelcastInstance(映射和列表)中删除所有数据?