1 Star 0 Fork 0

丁一鸣/python-redfish-library

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

python-redfish-library

https://travis-ci.org/DMTF/python-redfish-library.svg?branch=master https://img.shields.io/pypi/v/redfish.svg?maxAge=2592000 https://img.shields.io/github/release/DMTF/python-redfish-library.svg?maxAge=2592000 https://img.shields.io/pypi/pyversions/redfish.svg?maxAge=2592000 https://api.codacy.com/project/badge/Grade/1283adc3972d42b4a3ddb9b96660bc07

Description

As of version 3.0.0, Python2 is no longer supported. If Python2 is required, redfish<3.0.0 can be specified in a requirements file.

REST (Representational State Transfer) is a web based software architectural style consisting of a set of constraints that focuses on a system's resources. The Redfish library performs the basic HTTPS operations GET, POST, PUT, PATCH and DELETE on resources using the HATEOAS (Hypermedia as the Engine of Application State) Redfish architecture. API clients allow you to manage and interact with the system through a fixed URL and several URIs. Go to the wiki for more details.

Installing

pip install redfish

Building from zip file source

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

Requirements

Ensure the system does not have the OpenStack "python-redfish" module installed on the target system. This module is using a conflicting package name that this library already uses. The module in question can be found here: https://pypi.org/project/python-redfish/

Usage

A set of examples is provided under the examples directory of this project. In addition to the directives present in this paragraph, you will find valuable implementation tips and tricks in those examples.

Import the relevant python module

For a Redfish compliant application import the relevant python module.

For Redfish compliant application:

import redfish

Create a Redfish Object

The Redfish Objects contain 3 parameters: the target secured URL (i.e. "https://IP" or "https://X.Y.Z.T"), an user name and its password. There are additional 2 optional parameters: timeout (in seconds before a connection initialization times out) and max_retry (how many times a request will retry after a timeout). If unset these default to None and 10 respectively. To crete a Redfish Object, call the redfish_client method:

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

Login to the server

The login operation is performed when creating the REDFISH_OBJ. You can continue with a basic authentication, but it would less secure.

REDFISH_OBJ.login(auth="session")

Perform a GET operation

A simple GET operation can be performed to obtain the data present in any valid path. An example of rawget operation on the path "/redfish/v1/systems/1" is shown below:

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

Perform a POST operation

A POST operation can be performed to create a resource or perform an action. An example of a POST operation on the path "/redfish/v1/systems/1/Actions/ComputerSystem.Reset" is shown below:

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

Working with Tasks

A POST operation may result in a task, describing an operation with a duration greater than the span of a single request. The action message object that is_processing will return a Task resource that can be accessed reviewed when polled with monitor. An example of a POST operation with a possible Task is shown below.

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_after
        task_status = task.dict['TaskState']
        time.sleep(retry_time if retry_time else 5)
        task = response.monitor(context)

Logout the created session

Make sure you logout every session you create as it will remain alive until it times out.

REDFISH_OBJ.logout()

A logout deletes the current sesssion from the system. The redfish_client object destructor includes a logout statement.

Using proxies

You can use a proxy by specifying the HTTP_PROXY and HTTPS_PROXY environment variables. Hosts to be excluded from the proxy can be specified using the NO_PROXY environment variable.

export HTTP_PROXY="http://192.168.1.10:8888"
export HTTPS_PROXY="http://192.168.1.10:8888"

Contributing

  1. Fork it!
  2. Create your feature branch: git checkout -b my-new-feature
  3. Commit your changes: git commit -am 'Add some feature'
  4. Push to the branch: git push origin my-new-feature
  5. Submit a pull request :D

Release Process

Run the release.sh script to publish a new version.

sh release.sh <NewVersion>

Enter the release notes when prompted; an empty line signifies no more notes to add.

Copyright and License

Copyright Notice: Copyright 2016-2021 DMTF. All rights reserved. License: BSD 3-Clause License. For full text see link: https://github.com/DMTF/python-redfish-library/blob/master/LICENSE.md

空文件

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/ding_yi_ming/python-redfish-library.git
git@gitee.com:ding_yi_ming/python-redfish-library.git
ding_yi_ming
python-redfish-library
python-redfish-library
master

搜索帮助