【已评审】导入NTP组秘钥资源树方法ImportGroupKey入参和响应体变更评审

关联issue

rackmount issues#36(支持Redfish资源NtpService下可以导入NTP组密钥)

评审背景

需求:Redfish支持导入NTP组密钥

"Url": "/redfish/v1/Managers/:managerid/NtpService/Actions/NtpService.ImportNtpKey"

新增Redfish接口参数说明如下,支持导入密钥的路径和文本:

评审点

目前,已有资源树方法ImportGroupKey可以导入NTP组密钥。

  • 资源路径 :/bmc/kepler/Managers/:id
  • 资源接口:bmc.kepler.Managers.Ntp.Auth
  • 方法 :ImportGroupKey
  • 请求签名 : s
  • 请求参数 :
    • FilePath:上传密钥的路径
  • 响应签名 : 无
  • 响应参数 : 无
  • 若导入NTP组密钥失败,则直接返回错误引擎。

评审点1

为满足新增的Redfish接口需求,需支持导入密钥的路径及内容文本。然而,当前的资源树方法ImportGroupKey仅支持传递密钥路径,因此需要进行相应调整。以下是两种调整方案:

方案一 调整原有资源树方法 ImportGroupKey的请求参数

修改方法 ImportGroupKey,内容如下

  • 资源路径 :/bmc/kepler/Managers/:id
  • 接口 : bmc.kepler.Managers.Ntp.Auth
  • 方法 : ImportGroupKey
  • 请求签名 : ss
  • 请求参数 :
    • Type:上传密钥的类型。‘text’ 表示传入的内容为密钥内容;‘URI’ 表示传入的内容为密钥路径,支持本地路径和远程路径。
    • Content:若 Type 的值为 ‘text’,则 Content 为密钥的内容;若Type 的值为 ‘URI’,则 Content 为证书的路径,可以是本地路径(仅限于 /tmp 目录)或远程路径(支持的协议包括 https、sftp、nfs、cifs 和 scp)。

方案二 新增资源树方法ImportGroupKeyWithContent用于导入NTP组密钥的内容

为了防止原有资源树方法的变更造成的影响,新增ImportGroupKeyWithContent的资源树方法,用于导入NTP组密钥的内容。
新增方法 ImportGroupKeyWithContent,内容如下

  • 资源路径 :/bmc/kepler/Managers/:id
  • 资源接口:bmc.kepler.Managers.Ntp.Auth
  • 方法 :ImportGroupKeyWithContent
  • 请求签名 : s
  • 请求参数 :
    • Content:上传密钥的内容
  • 响应签名 : 无
  • 响应参数 : 无
  • 若导入NTP组密钥失败,则直接返回错误引擎。

评审点2

使用CLI导入NTP组密钥时,如果内部出现错误,当前实现会直接输出错误引擎的信息,而不是预期的“Import NTP group key failed”。为了改善这种情况,需要对返回体进行调整,添加ImportGroupKey的操作结果反馈 ,明确显示操作是否成功。这样CLI可以根据返回信息准确地展示“Import NTP group key failed”或“Set NTP group key successfully”。

  • 资源路径 :/bmc/kepler/Managers/:id
  • 资源接口:bmc.kepler.Managers.Ntp.Auth
  • 方法 : ImportGroupKey
  • 响应签名 : i
  • 响应参数
    • Result:导入结果,0 表示成功,非 0 表示失败。
  • 如果密钥校验失败,则返回错误值。

修改影响评估

  • 评审点1 的方案一 和评审点2 由于 ImportGroupKey 方法的入参发生了变更,需要同步更新 CLI 接口的实现方式。

评审结论

  • 评审点1:通过,采用方案二,新增资源协作接口 ImportGroupKeyWithContent 进行实施
  • 评审点2:不通过,北向处理要具备回显时选择是否采用error引擎返回的message还是自定义内容的能力
  1. 接口方法的名称没有,是要修改哪个接口,对应修改之后的兼容性考虑缺失
  2. 响应参数能否使用 error 引擎,对应的 error 引擎已经在另一个评审中处理。请见:【待评审】NtpService资源支持Actions操作 - #3,来自 pengqiang-gs

【评审意见】不同意变更当前的接口,建议采用新增接口来支持该能力
【确认结论】新增资源协作接口方法 ImportGroupKeyWithContent,并且补充为到正文方案二中

【评审意见】当前问题是对于北向接口返回的基础能力,需要给北向接口返回信息时选择是否使用error引擎中的message,还是可以自定义输出回显。