Wallaby 系列 (3.5.0 - 3.7.x) 发布说明

3.7.6-8

错误修复

  • 增加了一个额外的检查,用于处理 BMC 通过 @Redfish.Settings 提供 SettingsObject URI,但该 URI 不允许设置启动相关属性的情况。在发送 PATCH 请求到 SettingsURI 之前,会发出 GET 请求以验证它是否包含要更新的属性。如果缺少这些属性,则请求将改为发送到 System URI。 类似于此更改解决的问题,通常会表现为 Redfish 响应包含类似于以下内容的错误消息:MessageId: Base.1.8.PropertyNotWritable, Message: The property BootSourceOverrideEnabled is a read only property and cannot be assigned a value.

  • 为所有请求类型(除了现有的 GET 方法之外),增加了对 iDRAC 错误代码 SYS518 和消息“iDRAC 当前无法显示任何信息,因为数据源不可用”的重试。这有助于修复在连续删除一组卷后,iDRAC 在删除每个卷后重新加载时出现的一种已知间歇性问题。

  • 修复了 iDRAC 固件版本 6.00.02.00 或更高版本在删除卷时出现的“不支持的参数名称 @Redfish.OperationApplyTime”错误。

  • 为了避免与最新版本固件出现超时,我们需要增加服务器端重试次数。例如,在 idrac 固件系列 5.x 中,操作之间的时间间隔几乎为 20 秒,而在 4.x 系列中为 10 秒。

  • 正确处理硬件在虚拟媒体操作中需要 TransferProtocolType 时出现的错误代码 Base.1.5.PropertyMissing

  • 正确处理在刷新身份验证令牌后重试请求时出现的错误。

3.7.6

错误修复

  • 修复了潜在情况,底层 requests 库中的异常可能会被传递到 sushy,导致客户端应用程序可能无法理解发生了错误。现在,当出现任何属于 requests 库的 RequestException 的异常时,将返回 sushy ConnectionError 异常。

  • 修复了与某些 BMC 的 ETag 交互中不可靠的行为,因为机会性地使用压缩响应可能会导致 BMC 将 ETag 响应更改为“Weak”,这是可以预期的,因为 ETag 代表绝对的字节对字节响应一致性,而压缩无法可靠地保证该协议。引入客户端感知“Weak” ETag 可能不被服务器期望,并且服务器可能会拒绝响应,因为 ETag 在我们响应或与资源交互时不是“Strong” ETag。

    因此,请求不再提供响应压缩作为可接受的可能性,这总体影响很小,尤其与保持一致的 BMC 行为和交互的价值相比。

  • 修复了 sushy 连接器对象处理中的问题,在使用 basic 身份验证的 Sushy 客户端在凭据停止有效时不会引发 AccessError 异常。现在,我们显式检查是否正在使用 basic 身份验证,并在遇到 AccessError 时引发异常。

  • 更改了 PATCH 请求中的 eTag 处理方式:首先,使用原始 eTag。如果出现故障,如果提供的 eTag 是弱 eTag,则通过删除弱前缀将其转换为强格式。如果此方法不适用或失败,则最终尝试完全省略 eTag。通过这种方法,如果 BMC 按照预期处理 eTag,则不会应用任何解决方法,并且在出现故障时,会尝试已知的解决方法,从而提高整体弹性。

3.7.5

错误修复

  • 为了支持需要其中一种或另一种的供应商实现,除了剥离后的版本之外,还提供了未剥离的 Etag 版本。

3.7.4

错误修复

  • 将 SuperMicro 机器的虚拟介质启动设备字符串从“Cd”更改为“UsbCd”,以匹配其特定的命名约定。

  • 如果可用,使用带有 Etag 的标头来设置启动选项。

  • 修复了基于 Session 的身份验证刷新出现的问题,之前的刷新尝试失败可能导致回退到 Basic 身份验证并会静默失败。客户端库现在尝试重新进行身份验证。

  • 修复了当基于 Session 的身份验证刷新失败,并且由于 AccessError 无法重新建立时出现的静默失败问题。如果发生这种情况,现在将显式引发 AccessError 异常,而不是尝试回退到 Basic 身份验证。

  • 修复了在尝试执行身份验证操作时发生 ConnectionError 异常时,组合的 SessionBasic 身份验证支持回退到 Basic 身份验证的问题。 ConnectionError 异常表明网络传输问题,应进行调查。现在将引发 ConnectionError 异常。

  • 防止组合的 SessionBasic 身份验证支持在建立基于 Session 的身份验证后回退到 Basic 身份验证。这应被视为潜在的安全问题或需要潜在客户端重新初始化的环境更改。这被公开为 AccessError 异常。继续对 Sushy 库进行操作将尝试重新进行身份验证(如果可能)。

  • 解决了由于某些 BMC(例如,在 Nokia 服务器上)缺少请求有效负载中的 TransferProtocolType 参数而导致的 virtualmedia 附加失败。这是通过在这些情况下添加重试更新的有效负载的 virtualmedia InsertMedia 的功能来实现的。

  • 修复了与需要使用 @Redfish.Settings 资源中指定的特定 SettingsObject URI 才能设置 BootSourceOverride 或类似属性的 BMC 不兼容的问题。例如,这在 Nokia 服务器上是必需的。

3.7.3

升级说明

  • 当消费者(例如 Ironic)指定默认值 {“Inserted”: True, “WriteProtected”: True} 并且未使用 PATCH 方法配置虚拟介质时,“Inserted”和“WriteProtected”可选属性不再存在于 InsertMedia API 调用负载中。如果使用 PATCH 方法,行为不变。

错误修复

  • 在设置了默认值 {“Inserted”: True, “WriteProtected”: True} 且未使用 PATCH 方法的情况下,从 Redfish VirtualMedia::insert_media() API 调用负载中删除“Inserted”和“WriteProtected”参数。这些参数是 Redfish schema 2021.1 中定义的可选参数。某些 BMC(例如 SuperMicro X11/X12 平台)将这些字段视为只读,设置它们会导致 vMedia 插入失败。这些属性应在 BMC 端默认为 True。 某些使用 PATCH 方法配置虚拟介质的 BMC(例如 Lenovo SD530)仍然需要“Inserted”属性,因此仅更改非 PATCH 方法配置虚拟介质(例如 InsertMedia 操作)的行为。

  • 修复了 Processor.sub_processors 的 “‘Processor’ 对象没有 ‘conn’ 属性” 错误。

3.7.1

错误修复

  • 添加了回退机制,使用 PATCH HTTP 请求而不是显式操作 URI 来插入和弹出虚拟介质。此回退机制对于仅实现 PATCH 方法的 Lenovo ThinkSystem 机器(例如 SD530,..)是必需的。

3.7.0

新特性

  • 添加了新方法 get_task_monitor 以通过任务监视器 URI 检索 TaskMonitor 实例。

  • 添加了获取和重置单个 UEFI 安全启动数据库的支持。

弃用说明

  • 现有的两个 TaskMonitor 已被弃用,并替换为单个 taskmonitor.TaskMonitor

    对于 resources.task_monitor.TaskMonitor 用户,更改包括

    • in_progress 已被方法 check_is_processing 替换

    • location_header 已被方法 task_monitor_uri 替换

    • 没有 set_retry_after 的替代方案,taskmonitor.TaskMonitor 会从 Retry-After 标头内部设置此项

    对于 resources.taskservice.taskmonitor.TaskMonitor 用户,更改包括

    • check_is_processingsleep_for 和静态 get_task_monitor 已添加。

    • __init__ 参数中,field_data 已被弃用,请使用 response

    • __init__ 参数中,task_monitor 已重命名为 task_monitor_uri

    • task_monitor 已被弃用,请使用 task_monitor_uri

    • retry_after 已被弃用,请使用 sleep_for

    volume 模块中的 create_volumedelete_volumeinitialize_volume 方法已被弃用,并替换为命名为 createdeleteinitialize 的方法。新的异步操作方法返回 taskmonitor.TaskMonitor 而不是弃用的 resources.task_monitor.TaskMonitor

    方法 resources.updateservice.UpdateService.get_task_monitor 已被弃用,请使用 Sushy.get_task_monitor 代替。

错误修复

  • 自动重试 GET 请求的内部服务器错误。