关联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还是自定义内容的能力
