【已评审】新增 MultipartUri 后缀定制化项和配置项

背景

前置评审

本次增评背景

  1. 当前 openUBMC 在处理带有 multipart/form-data 类型的 http 请求时,均需要通过手写的 Controller 进行处理(如果是完全定制的 URI 则需要单独定制 app 进行实现,对于请求和响应的自定义参数部分通过北向接口的自定义参数部分可以实现)
  2. 当前 Redfish MultipartHttpPushUri 在实际使用过程中存在定制的场景,上次评审使用资源协作接口可写的属性进行定制,由于此种方式依赖定制 app 的设置,会有启动时序依赖;同时 Redfish Controller 中 URI 是启动之后不可动态更改的(路由机制),因此上述处理会存在定制失效的风险。

关联ISSUE

整体方案

  1. 新增定制化项进行 URI 的后缀定制,整体 URI 为 /redfish/v1/UpdateService/<suffix>,其中 suffix 就是定制的 URI 部分,可以满足定制诉求;同步新增 suffix 的配置项,支持导入导出,满足现网备件更换的诉求;在定制化项和配置项导入之后会有 BMC 的重启,可以解决上述 Controller 路由的重置问题;
  2. 更改资源协作接口 bmc.kepler.UpdateService 中的属性 MultipartUriSuffix 为只读属性(去掉写属性),即:不允许在运行时修改 MultipartUriSuffix,防止 URI 无法路由导致请求出现 404(Not Found)

评审点

  • 新增定制化项和配置项
  • 修改资源协作接口属性的读写属性

详细描述

评审点1: 新增定制化项 Custom_UpdateService_MultipartUriSuffix

项目
定制化项 Redfish Multipart 升级URI的后缀定制项
定制化接口名称 Custom_UpdateService_MultipartUriSuffix
取值类型 string
取值范围 1. 长度范围[1, 32]
2. 内容仅限于字母,数字,下划线,中划线,英文点(.)
3. 取值不能包含以下字符串:[“Actions”, “Oem”, “FirmwareInventory”, “SoftwareInventory”]
默认值 “multipart-update”
处理逻辑 if (Custom_UpdateService_MultipartUriSuffix != “”)
 设置 Redfish UpdateService Multipart 升级URI后缀为定制值
else
 恢复 Redfish UpdateService Multipart 升级URI后缀为默认值
说明: 定制化之后复位 BMC 生效

评审点2:新增配置项 UpgradeService->MultipartUriSuffix

项目
导出项 UpgradeService
导出子项 MultipartUriSuffix
取值类型 string
属性类型 ImportAndExport
取值范围 1. 长度范围[1, 32]
2. 内容仅限于字母,数字,下划线,中划线,英文点(.)
3. 取值不能包含以下字符串:[“Actions”, “Oem”, “FirmwareInventory”, “SoftwareInventory”]
含义说明 Redfish Multipart 升级URI的后缀配置项
说明: 配置导入之后复位 BMC 生效
导出后是否可以直接导入

评审点3:变更资源协作接口属性

变更描述 : 更改资源协作接口 bmc.kepler.UpdateService 中的属性 MultipartUriSuffix 为只读属性
接口链接UpdateService 资源协作接口定义
变更属性

变更类型 属性名称 签名 只读 变化通知 属性描述 访问权限 属性来源 持久化类型 变更影响
变更 MultipartUriSuffix s 变更前:False
变更后:True
不变更 不变更 变更前:Read: ReadOnly;Write: BasicSetting
变更后:Read: ReadOnly
不变更 不变更 读写变更为只读,在研版本内变更,无业务使用和影响

评审结论

不通过,整体上按照固定的 URI(/redfish/v1/UpdateService/update-multipart)进行实施。具体结论如下:

  1. 不同意新增定制化项
  2. 不同意新增配置项
  3. 资源协作接口 bmc.kepler.UpdateService 中的属性 MultipartUriSuffix 删除

遗留问题