【接口实现可行性咨询】客户定制 需求 通过RESTful 接口免密获取部件信息

背景

客户定制需求,希望通过RESTful API https://BMC_IP/api/asset_info,免密获取部件信息

诉求

1、openUBMC 是否可以定制开发https://BMC_IP/api/asset_info 这个RESTful 北向接口(仅考虑接口实现)

2、openUBMC如何开发实现https://BMC_IP/api/asset_info 这个接口 免密?

3、此功能开发是否涉及闭源组件?

4、是否可实现与通用版本代码归一?

答案内容由AI生成,仅供参考:
根据您提供的背景信息和上下文资料,我对您的四个诉求进行了分析和解答。请注意,所有回答均严格基于所提供的上下文内容。

1. openUBMC 是否可以定制开发 /api/asset_info 这个 RESTful 北向接口?

可以。

  • 上下文依据: 在搜索结果的第1条(标题:【接口咨询】…)中明确指出,“可以定制开发” 该接口,但需要**“开发人员自行开发”**。
  • 补充说明: openUBMC本身是一个组件化、开放标准的平台。其 北向接口 包括 Web、Redfish、CLI、SNMP、IPMI 等多种标准化协议,但社区暂不提供 /api/asset_info 这个特定 URI 的现成文档。因此,这是一个需要通过定制开发来实现的功能。

2. openUBMC如何开发实现 /api/asset_info 这个接口的免密访问?

根据上下文,没有直接提供实现免密访问的具体技术方法,但以下信息可以作为开发的指导:

  • 开发路径: 您需要参考 《API文档》 (来自 Document Chunk 3 和 5),该文档介绍了组件接口和Lua开发框架API。您可能需要开发一个新的组件(Application) 或修改现有组件,来响应 /api/asset_info 这个URI的HTTP请求。
  • 安全与权限: 上下文明确提到了 ReadOnly(只读权限)的概念,以及 “北向接口” 会进行输入验证和攻击检测(参考Document Chunk 6)。要实现免密,您需要在定制开发时,绕过或修改该接口默认的权限校验机制(例如,设置为一个无需认证的公共端点)。但请注意,这可能会带来安全风险。

结论: 上下文未提供实现“免密”的现成配置或方法。您需要基于openUBMC的API开发框架(如Lua框架或组件接口)自行开发,并在代码逻辑中处理鉴权问题。

3. 此功能开发是否涉及闭源组件?

可能不涉及主要的闭源组件,但需确认具体依赖。

  • 上下文依据: 搜索结果的第2条(工程能力答疑)中提到:“当前openubmc有少部分组件是闭源的,这部分组件通过社区conan仓提供服务二进制。”
  • 分析: 开发一个全新的RESTful北向接口 /api/asset_info,其核心逻辑(路由、数据处理、组装响应)很可能可以通过完全使用开源组件(如基于Skynet框架的微组件或Lua脚本)来实现,因此可能不涉及闭源组件。
  • 重要提醒: 如果该接口需要调用或依赖某些闭源组件(例如,特定硬件驱动的二进制库),那么就会涉及。强烈建议在开发前,根据您计划调用的具体功能(如获取部件信息),查阅openUBMC应用市场和组件依赖关系,以确认是否有闭源依赖。

4. 是否可实现与通用版本代码归一?

可以,但需满足特定前提。

  • 上下文依据: 北向接口裁剪特性 的设计文档(Search Result 8)明确指出,特性裁剪机制**“不含客户定制接口”。同时,接口标准化和向后兼容性**(Backward Compatibility)是openUBMC的核心设计原则。
  • 实现方式: 要实现代码归一,您的定制开发必须遵循openUBMC的北向接口标准化规范。具体来说:
    1. 组件化开发: 将该接口作为一个独立的组件进行开发,而不是侵入式地修改核心代码。
    2. 遵循规范: 设计接口时,遵循 Redfish 或其他标准RESTful API的设计模式,使用标准的HTTP方法和JSON格式。
    3. 版本兼容: 遵守向后兼容性原则,确保未来社区版本升级时,您的定制接口不会因核心API变化而失效。您可能需要将您的定制组件与社区版本解耦,通过配置或插件机制加载。

总结: 如果您的定制开发遵循openUBMC的组件化、标准化设计,并做好版本隔离,是可以做到与社区通用版本代码归一(即共存且不冲突)的。反之,如果是侵入式修改则会破坏归一性。

点击此处查看详细分析解答

根据您提供的背景信息和上下文资料,我对您的四个诉求进行了分析和解答。请注意,所有回答均严格基于所提供的上下文内容。

1. openUBMC 是否可以定制开发 /api/asset_info 这个 RESTful 北向接口?

可以。

  • 上下文依据: 在搜索结果的第1条(标题:【接口咨询】…)中明确指出,“可以定制开发” 该接口,但需要**“开发人员自行开发”**。
  • 补充说明: openUBMC本身是一个组件化、开放标准的平台。其 北向接口 包括 Web、Redfish、CLI、SNMP、IPMI 等多种标准化协议,但社区暂不提供 /api/asset_info 这个特定 URI 的现成文档。因此,这是一个需要通过定制开发来实现的功能。

2. openUBMC如何开发实现 /api/asset_info 这个接口的免密访问?

根据上下文,没有直接提供实现免密访问的具体技术方法,但以下信息可以作为开发的指导:

  • 开发路径: 您需要参考 《API文档》 (来自 Document Chunk 3 和 5),该文档介绍了组件接口和Lua开发框架API。您可能需要开发一个新的组件(Application) 或修改现有组件,来响应 /api/asset_info 这个URI的HTTP请求。
  • 安全与权限: 上下文明确提到了 ReadOnly(只读权限)的概念,以及 “北向接口” 会进行输入验证和攻击检测(参考Document Chunk 6)。要实现免密,您需要在定制开发时,绕过或修改该接口默认的权限校验机制(例如,设置为一个无需认证的公共端点)。但请注意,这可能会带来安全风险。

结论: 上下文未提供实现“免密”的现成配置或方法。您需要基于openUBMC的API开发框架(如Lua框架或组件接口)自行开发,并在代码逻辑中处理鉴权问题。

3. 此功能开发是否涉及闭源组件?

可能不涉及主要的闭源组件,但需确认具体依赖。

  • 上下文依据: 搜索结果的第2条(工程能力答疑)中提到:“当前openubmc有少部分组件是闭源的,这部分组件通过社区conan仓提供服务二进制。”
  • 分析: 开发一个全新的RESTful北向接口 /api/asset_info,其核心逻辑(路由、数据处理、组装响应)很可能可以通过完全使用开源组件(如基于Skynet框架的微组件或Lua脚本)来实现,因此可能不涉及闭源组件。
  • 重要提醒: 如果该接口需要调用或依赖某些闭源组件(例如,特定硬件驱动的二进制库),那么就会涉及。强烈建议在开发前,根据您计划调用的具体功能(如获取部件信息),查阅openUBMC应用市场和组件依赖关系,以确认是否有闭源依赖。

4. 是否可实现与通用版本代码归一?

可以,但需满足特定前提。

  • 上下文依据: 北向接口裁剪特性 的设计文档(Search Result 8)明确指出,特性裁剪机制**“不含客户定制接口”。同时,接口标准化和向后兼容性**(Backward Compatibility)是openUBMC的核心设计原则。
  • 实现方式: 要实现代码归一,您的定制开发必须遵循openUBMC的北向接口标准化规范。具体来说:
    1. 组件化开发: 将该接口作为一个独立的组件进行开发,而不是侵入式地修改核心代码。
    2. 遵循规范: 设计接口时,遵循 Redfish 或其他标准RESTful API的设计模式,使用标准的HTTP方法和JSON格式。
    3. 版本兼容: 遵守向后兼容性原则,确保未来社区版本升级时,您的定制接口不会因核心API变化而失效。您可能需要将您的定制组件与社区版本解耦,通过配置或插件机制加载。

总结: 如果您的定制开发遵循openUBMC的组件化、标准化设计,并做好版本隔离,是可以做到与社区通用版本代码归一(即共存且不冲突)的。反之,如果是侵入式修改则会破坏归一性。

应该是可以的,在rackmount里面实现请求和响应

是不是可以考虑放到客户定制仓里实现

@yctco-huaconghui @chenzhiben
方案:可以通过映射器关键字Authentication.Condition = false来控制不鉴权,无需提定制诉求,可直接在客户仓实现接口定制。
“Authentication”: {
“Condition”: false
}

参考:rackmount仓/redfish和/redfish/v1接口的配置

说明:不建议合入rackmount仓使之成为公共能力,因为资产信息属于客户设备私有信息,不应该在公共仓提供免鉴权访问能力,可以在客户仓定制接口。