【待评审】新增资源协作接口支持配置包导入导出灵活拓展配置项

背景

当BMC自身硬件发生故障需要更换备件时,更换后需要恢复BMC的客户配置,因此支持了一键导出/导入配置包功能。但当前新增配置包内容或导入导出操作,都需要侵入式修改资源协作接口实现,不利于后续拓展,因此需要新增支持配置包导入导出灵活拓展配置项,支持拓展配置包内容和操作的同时不影响导入导出配置包的实现。

相关评审链接

关联ISSUE

整体方案

需要新增导入导出配置包拓展配置项的组件,需要新增资源协作接口,支持配置包导入导出灵活拓展配置项。

评审点

  1. 新增资源协作接口及接口下属性、方法,供配置包导入/导出接口获取操作必要参数。

详细描述

评审点1:新增资源协作接口及接口下属性,供配置包导入/导出接口获取操作必要参数。

需要新增导入导出配置包拓展配置项的组件,实现以下两个资源协作接口,供配置包导入/导出框架发现并编排调用。


接口一:ImportBundleOperation(导入配置包阶段的操作)

方案A(参考JobService):
资源Path:/bmc/kepler/ConfigurationService/ConfigurationOperations/:OperationName
资源Interface:bmc.kepler.ConfigurationService.ImportBundleOperation
方案B(参考Configuration对象)
资源Path:/bmc/kepler/Managers/:ManagerId/Configurations/ConfigurationOperations/:OperationName
资源Interface:bmc.kepler.Managers.Configurations.ImportBundleOperation
变化类型:新增接口

属性:

属性名称 类型 读写 描述 示例
ConfigurationType String 只读 配置操作类型,标识该操作对应的配置项类型 ImagePreference
MaxExecutionTime U32 只读 操作最大执行时间,超时将自动判定为执行失败,单位:秒 300
Privilege String 只读 操作需要的权限 [“BasicSetting”, “UserMgmt”]

方法:

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
Validate a{ss}s Context: 方法调用上下文(a{ss});Content: 编排文件配置内容(s) b Result: 配置校验结果,true表示校验通过,false表示校验不通过 对编排文件配置内容在进行校验
Run a{ss}s Context: 方法调用上下文(a{ss});Content: 编排文件配置内容(s) u TaskId: 执行操作返回的task_id(u),立即执行完成的操作返回0 执行导入操作,导入配置内容从内部固定路径获取

JSON定义:

  {
      "bmc.kepler.ConfigurationService.ImportBundleOperation": {
          "properties": {
              "ConfigurationType": {
                  "baseType": "String",
                  "readOnly": true,
                  "options": {
                      "emitsChangedSignal": "false"
                  },
                  "description": "配置操作类型,标识该操作对应的配置项类型",
                  "example": "ImagePreference"
              },
              "MaxExecutionTime": {
                  "baseType": "U32",
                  "readOnly": true,
                  "options": {
                      "emitsChangedSignal": "false"
                  },
                  "description": "操作最大执行时间,超时将自动判定为执行失败,单位:秒",
                  "example": 300
              },
              "Privilege": {
                  "baseType": "String[]",
                  "readOnly": true,
                  "options": {
                      "emitsChangedSignal": "false"
                  },
                  "description": "操作需要的权限",
                  "example": ["BasicSetting", "UserMgmt"]
              }
          },
          "methods": {
              "Validate": {
                  "description": "对编排文件配置内容进行校验",
                  "req": {
                      "Content": {
                          "baseType": "String",
                          "description": "编排文件配置内容"
                      }
                  },
                  "rsp": {
                      "Result": {
                          "baseType": "Boolean",
                          "description": "配置校验结果,true表示校验通过,false表示校验不通过"
                      }
                  }
              },
              "Run": {
                  "description": "执行导入操作",
                  "req": {
                      "Content": {
                          "baseType": "String",
                          "description": "编排文件配置内容"
                      }
                  },
                  "rsp": {
                      "TaskId": {
                          "baseType": "U32",
                          "description": "执行操作返回的task_id,立即执行完成的操作返回nil"
                      }
                  }
              }
          }
      }
  }

接口二:ExportBundleOperation(导出配置包阶段的操作)

方案A(参考JobService):
资源Path:/bmc/kepler/ConfigurationService/ConfigurationOperations/:OperationName
资源Interface:bmc.kepler.ConfigurationService.ExportBundleOperation
方案B(参考Configuration对象):
资源Path:/bmc/kepler/Managers/:ManagerId/Configurations/ConfigurationOperations/:OperationName
资源Interface:bmc.kepler.Managers.Configurations.ExportBundleOperation
变化类型:新增接口

属性:

属性名称 类型 读写 描述 示例
ConfigurationType String 只读 配置操作类型,标识该操作对应的配置项类型 ImagePreference、Firmware等
MaxExecutionTime U32 只读 操作最大执行时间,超时将自动判定为执行失败,单位:秒 300
Privilege String 只读 操作需要的权限 [“BasicSetting”, “UserMgmt”]

方法:

方法名称 请求签名 请求参数描述 响应签名 响应参数描述 方法描述
Run a{ss} Context: 方法调用上下文(a{ss}) u TaskId: 执行操作返回的task_id(u),立即执行完成的操作返回0 执行导出操作,导出文件路径为内部固定路径

JSON定义:

  {
      "bmc.kepler.ConfigurationService.ExportBundleOperation": {
          "properties": {
              "ConfigurationType": {
                  "baseType": "String",
                  "readOnly": true,
                  "options": {
                      "emitsChangedSignal": "false"
                  },
                  "description": "配置操作类型,标识该操作对应的配置项类型",
                  "example": "ImagePreference"
              },
              "MaxExecutionTime": {
                  "baseType": "U32",
                  "readOnly": true,
                  "options": {
                      "emitsChangedSignal": "false"
                  },
                  "description": "操作最大执行时间,超时将自动判定为执行失败,单位:秒",
                  "example": 300
              },
              "Privilege": {
                  "baseType": "String[]",
                  "readOnly": true,
                  "options": {
                      "emitsChangedSignal": "false"
                  },
                  "description": "操作需要的权限",
                  "example": ["BasicSetting", "UserMgmt"]
              }
          },
          "methods": {
              "Run": {
                  "description": "执行导出操作",
                  "req": {},
                  "rsp": {
                      "TaskId": {
                          "baseType": "U32",
                          "description": "执行操作返回的task_id,立即执行完成的操作返回nil"
                      }
                  }
              }
          }
      }
  }

是否准备好AI预审

评审结论

遗留问题