跳转到主要内容

“此工具包通过查询HPE OneView来提供REST服务,以回答DMTF的Redfish兼容请求。”

项目描述

Waffle.io - Columns and their card count Build Status Coverage Status

HPE OneView Redfish Toolkit

此工具包通过查询HPE OneView来提供REST服务,以回答DMTF的Redfish兼容请求。

HPE OneView是一种针对融合基础设施管理的创新方法,它以您期望的方式工作,提供了一个统一的IT基础设施视图。

DMTF的Redfish是一个开放的行业标准规范和模式,它指定了RESTful接口,并使用JSON和OData帮助客户将其解决方案集成到现有的工具链中。

入门

要求

  • 安装应用程序
    • Ubuntu 16.04(标准服务器安装即可正常工作)
    • Python >=3.5
    • pip >=18.1
    • setuptools >=40.6.3
    • OpenSSL >= 1.0.2g
    • 互联网连接
  • 运行应用程序(并使其有用)
    • HPE OneView 4.0或更高版本

依赖关系

所有服务依赖项(除了上述要求中列出的那些)将作为安装服务的一部分自动下载和安装。依赖项的完整列表可在requirements.txt文件中找到。

安装应用程序

$ pip install oneview-redfish-toolkit

离线安装

获取Oneview Redfish工具包及其依赖项

您可以在发布页面下载离线安装程序。或者,您可以通过运行以下命令从PyPI下载工具包:

$ pip download oneview-redfish-toolkit

安装

创建Python 3.5虚拟环境并激活它

$ python3.5 -m venv <virtual-environment-name>
$ source <virtual-environment-name>/bin/activate

更新pip和setuptools到最新版本

$ pip install pip -U
$ pip install setuptools -U

解压缩oneview-redfish-toolkit-installer

$ unzip <oneview-redfish-toolkit-installer-0.4.0.zip>

运行pip install到文件放置的位置

$ pip install <oneview-redfish-toolkit-installer-0.4.0>/*

运行应用程序

第一次运行应用程序时,它将在用户的家目录下创建所有所需的配置文件。它还会提示您输入要连接到Redfish工具包的OneView IP地址。这可以是一个IP地址,也可以是逗号分隔的IP地址列表。配置将保存在redfish.conf中。

以下是一个示例运行,将向Redfish服务添加两个不同的OneView实例:

$ oneview-redfish-toolkit
Welcome to oneview-redfish-toolkit. Please enter a comma separated list of OneView IPs you want to connect to.
Oneview IP(s): 192.168.3.100, 192.168.3.101
Using configuration file: /root/.config/oneview-redfish-toolkit/redfish.conf
Using logging configuration file: /root/.config/oneview-redfish-toolkit/logging.conf
oneview-redfish-toolkit service is now available at 0.0.0.0:5000

以下文件将被创建

  • $HOME/.config/oneview-redfish-toolkit/
    • redfish.conf
    • logging.conf
    • redfish.log
    • certs/

redfish.conflogging.conf用于自定义服务,但通常不需要修改。当启用事件服务时,certs目录用于放置检索到的OneView证书。

您可以在用户目录下自定义创建的配置文件,或者如果您想使用自己的自定义配置文件,可以将它们作为参数传递。如果没有传递参数,应用程序将使用用户目录上的文件。

$ oneview-redfish-toolkit --config redfish.conf --log-config logging.conf

有关工具包的更多信息

工具包配置

工具包配置位于redfish.conf文件中。所有必需属性都具有默认值,这些值将正常工作。唯一空白的必需属性,即OneView IP,将在第一次执行时提示用户,并将输入的值更新到该文件中。如果OneView IP更改或您想添加更多OneView,您可以手动更新属性。同样,您可以通过编辑redfish.conf文件来调整其他可用的属性。

您可以检查以下列出的所有属性:

  • redfish部分

    • indent_json:答案中的JSON对象是否缩进

    • xml_prettify:答案中的XML对象是否缩进

    • redfish_host:Redfish服务将监听的IP地址。使用host = 0.0.0.0表示它将监听所有IP地址。

    • redfish_port:Redfish服务将监听的TCP端口

    • authentication_mode:可以是confsession

      • conf:将从conf文件中使用的凭据用于请求。工具包将内部处理与OneView的认证。此配置是唯一支持事件服务的配置,仅推荐用于演示目的。
      • session:Redfish客户端必须创建一个会话,并使用生成的x-auth-token进行请求。有关更多详细信息,请参阅会话管理部分。
  • redfish-composition部分

    • PowerOffServerOnCompose:在组合时启用或禁用关闭服务器的功能。默认值是ForceOff - 立即(硬)关闭。如果没有指定(空值),则不会执行任何关闭操作。
    • PowerOffServerOnDecompose:在分解系统时启用或禁用关闭服务器的功能。默认值是ForceOff - 立即(硬)关闭。如果没有指定(空值),则不会执行任何关闭操作。其他选项可以是GracefulShutdown - 正常(软)关闭。
  • oneview_config部分

    • ip:HPE OneView的IP/FQDN地址或逗号分隔的多个实例的OneView IP/FQDN地址列表。

    Oneview Redfish Toolkit 现在也支持多个 OneView 实例,允许单个服务实例管理多个 OneView 实例,而不是为每个作为解决方案一部分的 HPE OneView 实例创建新的服务实例。这简化了 Redfish 客户端,因为它不需要处理多个到 Redfish 服务的连接。

  • credentials 部分

    • username:HPE OneView 的用户名

    • password:HPE OneView 的密码

    • authLoginDomain:HPE OneView 的认证登录域。如果未设置,默认为 "Local"。

    注意:只有在 authentication_mode 设置为 "conf" 时,才会使用 HPE OneView 凭据进行认证。它们以明文形式存储。请确保只有授权用户可以访问此文件。当处理多个 OneView 实例时,请确保所有实例都启用了此用户名/密码。

  • event_service 部分

    • DeliveryRetryAttempts:此属性的值应该是终止订阅之前尝试将任何给定事件发送到订阅目标前重试的次数。

    • DeliveryRetryIntervalSeconds:此属性的值应该是任何给定事件到订阅目标重试尝试之间的间隔(秒)。

  • ssl 部分

    • SSLType:从以下选项中选择一个。默认值使用的是 adhoc

      • disabled:无 SSL。将使用 Flask 作为 Web 服务器。
      • adhoc:启用 SSL,每次启动服务器时由服务器生成自签名密钥。将使用 Flask 作为 Web 服务器。
      • self-signed:如果 cert 目录中没有名为 self-signed.crt 和 self-signed.key 的文件,则启用 SSL 并在 cert 目录中生成自签名证书。这将在首次运行时以及每次删除文件并重新启动服务器时创建证书。目录 certs 必须存在于系统根目录中)certs(使用用户在以下字段中提供的密钥启用 SSL)。除非工具包在开发和调试模式下初始化(设置参数 “--dev” 和 “--debug”),否则将使用 Cherrypy 作为 Web 服务器。在这种情况下,将使用 Flask 作为 Web 服务器。
    • SSLCertFile:用户 SSL 证书文件。

    • SSLKeyFile:用户 SSL 密钥文件。不应有密码。

  • ssl-cert-defaults 部分:定义用于自签名生成的证书的值

    • countryName:国家名称。 必需!

    • stateOrProvinceName:州或省名称。 必需!

    • localityName:地区名称(例如城市)。 必需!

    • organizationName:组织名称(例如公司名称)。 必需!

    • organizationalUnitName:组织单位名称(例如部门)。 必需!

    • commonName:服务器或其 IP 地址的 FQDN。如果不提供,将检测默认路由 IP 并使用它。 可选。

    • emailAddress:联系负责此服务器/证书的人员的电子邮件地址。这是一个可选信息。如果未提供,则不会将其添加到证书中。 可选。

  • cherrypy_config 部分:请参阅高级 CherryPy 配置 此处

日志记录

日志记录配置可以在 logging.conf 文件中找到。提供的配置在控制台和文件输出中都启用了 INFO 级别,这将生成位于 $HOME/.config/oneview-redfish-toolkit/redfish.logredfish_performance.logredfish_ov_data.log 文件。

应用程序有两个扩展日志,其中所有日志都将创建在同一目录 $HOME/.config/oneview-redfish-toolkit/ 中。

性能记录器

对于每个Redfish Toolkit API请求,性能记录器将记录每个由OneView SDK请求触发的请求的耗时、所有OneView SDK请求的总耗时、工具包进程的额外耗时以及Redfish Toolkit API请求的总耗时。这样我们就可以监控OneView的性能以及Redfish工具包的性能。一旦在logging.conf中通过更改其级别和根日志级别为DEBUG启用,它将记录在redfish_performance.log文件中。日志示例

2018-10-10 15:42:41,112 - perf - DEBUG   - Thread 139974930331392 - OneView request: server_profile_templates.get: 0.02929878234
2018-10-10 15:42:42,304 - perf - DEBUG   - Thread 139974930331392 - OneView request: server_hardware.get_all: 0.03278422355
2018-10-10 15:42:43,231 - perf - DEBUG   - Thread 139974930331392 - OneView request: server_hardware.get_all:  0.03367638587
2018-10-10 15:42:43,291 - perf - DEBUG   - Thread 139974930331392 - OneView process: 0.09575939176
2018-10-10 15:42:43,291 - perf - DEBUG   - Thread 139974930331392 - Redfish process: 0.01273488998413086
2018-10-10 15:42:43,294 - perf - DEBUG   - Thread 139974930331392 - Total process: 0.10849428174

OneView数据记录器

OneView数据记录器将记录每个由OneView SDK请求触发的结果。因此,我们可以检查每个OneView SDK请求检索到的OneView数据。一旦在logging.conf中通过更改其级别和根日志级别到DEBUG启用,它将记录在redfish_ov_data.log文件中。日志示例

2018-10-10 15:42:43,230 - ovData - DEBUG - Thread 139974930331392 - Request to Oneview 'oneview.net', calling 'server_hardware.get_all' with args () and kwargs {}. Result: []

启用记录器

您可以通过在logging.conf文件中将级别和根记录器级别设置为DEBUG来启用记录器PerformanceOneView Data以及其他记录器。例如

[logger_root]
level=DEBUG

[logger_performance]
propagate=0
level=DEBUG
...

您可以根据需要自定义扩展日志,以包含默认的条目日志。为此,请将扩展记录器处理程序添加到根记录器

[logger_root]
level=DEBUG
handlers=consoleHandler,defaultFileHandler,performanceFileHandler,oneviewDataFileHandler

开发环境

为了运行测试和生成文档,还需要tox。有关安装的一般说明可在此处找到:此处

我们建议在虚拟环境中运行。您可以通过以下命令创建一个:

$ virtualenv env_name_you_choose -p python3.5 # to create a Python3.5 environment, for example
$ source env_name_you_choose/bin/activate # load the environment

一旦环境加载,从发布页面下载并解压缩最新版本,或者运行以下命令以克隆当前开发版本:

$ git clone https://github.com/HewlettPackard/oneview-redfish-toolkit.git

然后,继续执行以下操作

$ cd oneview-redfish-toolkit # enter the service folder
# edit redfish.conf
$ pip install -r requirements.txt # to install all requirements into the virtual environment
$ ./run.sh    # to launch the service

SDK文档

SDK文档的最新版本可以在SDK文档部分找到。

注意:此文档已根据以下步骤手动更新:此处

会话管理

如Redfish规范所述,端点/redfish/redfish/v1可以未经身份验证访问,也可以向会话集合(这是建立Redfish会话的方式)发送POST请求。

要创建Redfish会话,Redfish客户端必须使用自己的用户名和密码通过向/redfish/v1/SessionService/Sessions发送POST请求来对自己进行身份验证。由于当前工具包实现将会话管理委托给OneView,因此Redfish客户端必须传递有效的OneView用户名和密码

curl -i -X POST \
  -H "Content-Type:application/json" \
  https://<ip>:5000/redfish/v1/SessionService/Sessions \
  -d '{"UserName": "administrator", "Password": "password"}'

响应中的一个头是X-Auth-Token,它应在所有后续请求中发送

curl -X GET \
  -H "X-Auth-Token: NzQ8ODI6MTcxOTkxRdvdtE-HaNeFgkoylkaQVA3l1uIsHxQ7" \
  https://<ip>:5000/redfish/v1/Systems

在处理多个OneView实例时,请确保所有实例都启用了此用户名/密码。

事件服务说明

当前实现遵循Redfish规范DSP0266版本1.5.0。只有在将认证模式设置为conf时,事件服务才正常工作,并且它不支持多个OneView实例,因此它尚未准备好用于生产。因为它直接连接到HPE OneView SCMB,所以工具包将请求OneView生成SCMB证书并将证书下载到正确位置。证书文件是:oneview_ca:位于certs/oneview_ca.pem的OneView CA证书文件。scmb_cert:位于certs/oneview_scmb.pem的OneView SCMB客户端证书文件。scmb_key:位于certs/oneview_scmb.key的OneView SCMB客户端密钥文件

为了正确集成OneView,OneView实例需要支持OneView API 300。

只监控与机架、机架和服务器硬件相关的警报和事件,并将生成以下Redfish事件:ResourceAdded、ResourceUpdated和ResourceRemoved。

组合服务

当前实现遵循Redfish规范DSP2050版本1.0.0,并且不使用任何OEM(供应商特定)属性。添加可组合性支持的一个主要挑战是确定应该提供哪些类型的资源块,因为由于当前规范的限制,完整的可组合性不可用。提出了一个利用OneView服务器配置模板的第一种方法,并已与Redfish作者进行评估。根据此提议,每个OneView服务器配置模板映射到Redfish资源区域,可能列出三种类型的资源块

  • 存储资源块:如果服务器配置模板中存在SAS存储控制器,则来自驱动器机架的每个SAS驱动器都会映射到特定的资源区域。此块展示有关CapacityBytes、Protocol和MediaType的信息。其他存储类型,如DAS和SAN磁盘,不在范围内。
  • 网络资源块:服务器配置模板中指定的所有连接(网络和网络集)都映射到网络资源块中的以太网接口。此块展示有关网络名称、速度Mbps和VLANs的信息。
  • 计算机系统资源块:与服务器配置模板(资源区域)中的服务器硬件类型相匹配的每个服务器都被映射为计算机系统资源块。此块展示有关处理器(型号、最大速度MHz、总核心数)和内存的信息。OneView Redfish服务负责确保仅列出特定资源区域中可以组合(位于同一机架)的计算机系统资源块和存储资源块。这与OneView不同,因此实施了额外的验证,而不是直接依赖OneView服务器配置API。

在组合请求中,Redfish客户端必须从所选资源区域上的可用资源块中选择一个计算机系统资源块、一个网络资源块和所需的存储资源块数量。组合请求中所需属性在功能对象中指定。将利用服务器配置模板创建服务器配置,如POST请求中确定的。每个存储资源块(SAS驱动器)将配置为外部逻辑JBOD(逻辑驱动器不在范围内)。

重要:为了使组合服务功能正常,管理员必须提前创建OneView服务器配置模板。为了允许通过OneView Redfish服务在组合请求中使用存储资源块,应配置SAS存储控制器,但模板中不应添加任何驱动器(它们将在组合请求中分配到配置文件)。

贡献

您知道该怎么做。Fork它,分支它,更改它,提交它,然后提出pull-request。我们热衷于改进这个项目,并乐于接受帮助使其变得更好。但是,请记住以下事项

我们保留拒绝我们认为不适合此项目范围的变化的权利。对于功能添加,请在进行工作之前提出一个问题来讨论您的想法。

功能请求

如果您有当前实现未能满足的需求,请告诉我们(通过一个新的问题)。这种反馈对我们提供有用的产品至关重要。不要假设我们已经考虑了一切,因为我们向您保证情况并非如此。

测试

我们已经包装了一切您需要做的,以验证代码是否通过测试。tox脚本能针对Python 3执行单元测试、flake8验证和测试覆盖率报告生成。

运行以下命令

$ tox

许可

此项目采用Apache License 2.0许可。

项目详细信息


下载文件

下载适用于您的平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。

源分发

oneview-redfish-toolkit-0.4.0.tar.gz (797.4 kB 查看哈希值)

上传时间

支持者