背景
前置评审
本次增评背景
- 当前 openUBMC 在处理带有
multipart/form-data类型的 http 请求时,均需要通过手写的 Controller 进行处理(如果是完全定制的 URI 则需要单独定制 app 进行实现,对于请求和响应的自定义参数部分通过北向接口的自定义参数部分可以实现) - 当前 Redfish MultipartHttpPushUri 在实际使用过程中存在定制的场景,上次评审使用资源协作接口可写的属性进行定制,由于此种方式依赖定制 app 的设置,会有启动时序依赖;同时 Redfish Controller 中 URI 是启动之后不可动态更改的(路由机制),因此上述处理会存在定制失效的风险。
关联ISSUE
无
整体方案
- 新增定制化项进行 URI 的后缀定制,整体 URI 为
/redfish/v1/UpdateService/<suffix>,其中suffix就是定制的 URI 部分,可以满足定制诉求;同步新增suffix的配置项,支持导入导出,满足现网备件更换的诉求;在定制化项和配置项导入之后会有 BMC 的重启,可以解决上述 Controller 路由的重置问题; - 更改资源协作接口
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)进行实施。具体结论如下:
- 不同意新增定制化项
- 不同意新增配置项
- 资源协作接口
bmc.kepler.UpdateService中的属性MultipartUriSuffix删除
遗留问题
无