*openUBMC 支持182x大板上网卡182x芯片复位或上下电详细设计说明书*

<table>
    <tr>
        <td>所属SIG组:</td>
        <td>hardware</td>
    </tr>
    <tr>
        <td>落入版本:</td>
        <td>26.0</td>
    </tr>
    <tr>
        <td>设计人员:</td>
        <td>lisongwei</td>
    </tr>
    <tr>
        <td>日期:</td>
        <td>2026/02/12</td>
    </tr>
</table>

**Copyright © 2025 openUBMC Community**

您对&quot;本文档&quot;的复制，使用，修改及分发受木兰宽松许可证, 第2版协议(以下简称&quot;MulanPSL2&quot;)的约束。
为了方便用户理解，您可以通过访问<https://license.coscl.org.cn/MulanPSL2>了解MulanPSL2的概要 (但不是替代)。
MulanPSL2的完整协议内容您可以访问如下网址获取：<https://license.coscl.org.cn/MulanPSL2>。

**改版记录**

<table>
    <tr>
        <th>日期</th>
        <th>修订版本</th>
        <th>修订描述</th>
        <th>作者</th>
        <th>审核</th>
    </tr>
    <tr>
        <td>2026/02/12</td>
        <td>1.0</td>
        <td>支持182x大板上网卡182x芯片复位或上下电</td>
        <td>lisongwei</td>
        <td>/</td>
    </tr>
</table>

**List of abbreviations**  **缩略语清单** ：

<table>
    <tr>
        <th>Abbreviations 缩略语</th>
        <th>Full spelling 英文全名</th>
        <th>Chinese explanation 中文解释</th>
    </tr>

</table>

[TOC]

# 1.功能分析
## 1.1 功能背景
<!-- 描述该需求的来源或背景，比如：支撑XXX功能、XXX优化等；以及该需求对用户（含组件）带来什么具体价值，如果没有该需求，对用户（含组件）带来什么损失； -->
182x大板场景中，当带内操作系统发生复位时，需要联动复位182x网卡芯片。网管通过调用Redfish接口完成这一联动复位操作，因此需要BMC侧提供该Redfish接口，实现对指定网卡芯片的复位或上下电功能。

## 1.2 功能描述
<!-- 描述该需求交付的整体功能，主要实现XXX功能，解决XXX问题，明确方案如何实现 -->
182x大板场景中，每个网卡芯片的网络适配器信息保存在资源协作接口的/bmc/kepler/Systems/1/NetworkAdapters路径下，同样是每个网络适配器对象对应一个网卡芯片，不同的网卡芯片通过bmc.kepler.Systems.NetworkAdapter接口下的SlotNumber属性进行区分。

为实现182x网卡芯片的复位或上下电功能，该网卡的sr文件中会预先为每个芯片定义一个Accessor对象，并将该对象与对应的网络适配器进行关联。通过访问关联的Accessor，即可通过CPLD操作对应的网卡芯片，从而执行复位或上下电操作。

当网管需要对一个182x网卡芯片进行复位或上下电时，其会通过Redfish接口访问待操作的网卡芯片对象，并调用该对象所在路径下的NetworkAdapter.Reset接口。Redfish接口根据所访问的路径，在资源树中查询到该网卡芯片对应对的网络适配器信息，并调用该网络适配器下bmc.kepler.Systems.NetworkAdapter接口中的Reset方法。Reset方法将根据sr文件的配置，找到该网络适配器对象对应的Accessor，并向该Accessor写入数据，从而完成复位或上下电操作。

为实现以上功能，需要开发以下两个功能点：
1. 新增标准Redfish接口NetworkAdapter.Reset用于182x大板网卡的复位或上下电
2. 资源协作接口bmc.kepler.Systems.NetworkAdapter新增Reset方法用于执行复位或上下电动作

## 1.3 功能场景
<!-- 描述该需求的业务使用场景，内容包括：
1) 场景出发条件及对象：什么角色/工具/接口等在什么具体情况下使用该特性，使用对象技能如何？
2) 使用时间及频度
3) 描述该特性主要有哪些场景、子场景及关键任务操作 -->

### 1.3.1 场景触发条件及对象
使用角色：系统管理员。使用工具：Redfish工具。使用技能：具备基本的BMC管理经验，具备Redfish工具使用经验。

### 1.3.2 使用时间及频度
当带内操作系统发生复位时下发命令。

### 1.3.3 主要场景及子场景
1. 通过Redfish接口，调用资源协作接口中的Reset方法执行复位或上下电操作，并呈现执行结果。
2. 执行资源协作接口中的Reset方法，对指定的网卡进行复位或上下电，并返回执行结果。

## 1.4 功能列表
<!-- 描述该需求交付的功能列表，内容包括：列出功能详细描述，标题、描述。 -->
| 功能编号 | 功能标题 | 功能描述 |
| ------- | ------- | -------- |
| 1 | 新增标准Redfish接口NetworkAdapter.Reset用于182x大板网卡的复位或上下电 | 新增Redfish接口，接受用户传入的参数，用于调用资源协作接口中的方法执行复位或上下电操作。 |
| 2 | 资源协作接口bmc.kepler.Systems.NetworkAdapter新增Reset方法用于执行复位或上下电动作 | 新增Reset方法，使用该方法访问对应的Accessor，通过写入Accessor的方式执行复位或上下电。 |

# 2.功能设计
## 2.1 总体方案分析
<!-- 描述该方案的总体设计（注：相关输出方案可同步刷新到各组件仓） -->
182x大板场景中，每个网卡芯片的网络适配器信息保存在资源协作接口的/bmc/kepler/Systems/1/NetworkAdapters路径下，同样是每个网络适配器对象对应一个网卡芯片，不同的网卡芯片通过bmc.kepler.Systems.NetworkAdapter接口下的SlotNumber属性进行区分。

为实现182x网卡芯片的复位或上下电功能，该网卡的sr文件中会预先为每个芯片定义一个Accessor对象，并将该对象与对应的网络适配器进行关联。通过访问关联的Accessor，即可通过CPLD操作对应的网卡芯片，从而执行复位或上下电操作。

当网管需要对一个182x网卡芯片进行复位或上下电时，其会通过Redfish接口访问待操作的网卡芯片对象，并调用该对象所在路径下的NetworkAdapter.Reset接口。Redfish接口根据所访问的路径，在资源树中查询到该网卡芯片对应对的网络适配器信息，并调用该网络适配器下bmc.kepler.Systems.NetworkAdapter接口中的Reset方法。Reset方法将根据sr文件的配置，找到该网络适配器对象对应的Accessor，并向该Accessor写入数据，从而完成复位或上下电操作。

### 2.1.1 方案详细设计
#### 2.1.1.1 方案概述
<!-- 描述该方案的整体实现，内容包括：涉及的关键点，实现策略等 -->
根据该需求的总体方案设计，需要具体开发以下功能点与实现策略：
1. **新增标准Redfish接口NetworkAdapter.Reset用于182x大板网卡的复位或上下电：**
   
   新增NetworkAdapter.Reset接口用于复位，该接口位于/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset路径下。接口权限为PowerMgmt，接受入参为枚举字符串：GracefulRestart（优雅复位）、ForceOff（强制下电）、ForceOn（强制上电）。

   新增ResetActionInfo用于展示复位接口的信息，该接口位于/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo路径下。

   修改/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid的回显，新增Actions字段，展示复位接口的信息。

2. **资源协作接口bmc.kepler.Systems.NetworkAdapter新增Reset方法用于执行复位或上下电动作：**
   
   mdb_interface代码仓在bmc.kepler.Systems.NetworkAdapter接口下新增Reset方法，方法权限为PowerMgmt，接受入参为枚举字符串：GracefulRestart（优雅复位）、ForceOff（强制下电）、ForceOn（强制上电）。

   network_adapter组件新增注册该Reset方法的回调，并在回调函数中访问网卡对应的Accessor，根据入参执行复位或上下电动作。当执行流程失败时抛出异常返回。

#### 2.1.1.2 开发视图
<!-- 开发视图面向系统开发及软件管理，描述系统代码结构，构建结构的视图，主要解决系统技术实现和开发的问题，它依托逻辑视图，描述代码、构建结构 -->
```mermaid
graph TB
    subgraph A[Redfish接口]
        A1[NetworkAdapter.Reset]
        A2[ResetActionInfo]
    end
    
    subgraph B[network_adapter组件]
        B1[Reset方法]
        B2[网络适配器对象]
        B3[用于复位的Accessor对象]
        B4[用于上下电的Accessor对象]
    end

    subgraph C[网卡芯片]
        C1[网卡芯片]
    end

    A1 --> B1
    B1 --> B2
    B2 --> B3
    B2 --> B4
    B3 --> C1
    B4 --> C1
```


#### 2.1.1.3 运行视图
<!-- 运行视图面向系统运行，描述系统启动过程、运行期交互的视图，主要解决系统运行期交互，描述各可执行交付件在运行期的交互关系 -->
```mermaid
sequenceDiagram
    participant redfish as Redfish接口
    participant network_adapter as network_adapter组件
    participant Accessor as Accessor对象
    participant netcard as 网卡对象

    Note over redfish: 解析命令入参
    redfish->>network_adapter: 调用Reset方法下发复位命令
    Note over network_adapter: 获取网卡对象，获取Accessor对象
    network_adapter-->>redfish: 未获取到Accessor对象时，返回异常
    network_adapter->>Accessor: 写入Accessor，执行复位或上下电操作
    Accessor->>netcard: 进行复位或上下电
    Accessor-->>network_adapter: 返回执行结果
    network_adapter-->>redfish: 返回执行结果（执行成功或异常）
```

### 2.1.2 内部依赖分析
<!-- 是否涉及与其他组件接口依赖，如果涉及需要确认当前是否已完成，是否匹配当前需求开发诉求 -->
不涉及

### 2.1.3 外部依赖分析
<!-- 是否涉及与平台SDK的依赖关系 -->
依赖182x网卡的sr文件完成适配，为每个网卡芯片定义NetworkAdapter对象，且为每个网卡定义用于复位和上下电的Accessor对象。

### 2.1.4 北向接口分析
<!-- 需要分析当前功能是否有以下接口影响，如果有影响，则需要具体的补充影响点。其中注意点如下：
（1）如果有新增IPMI接口，请排查代码中IPMI命令注册的过滤字段，是否完全和IPMI命令的定义一致？
（2）新增一个接口时，需要咨询SIG组是否还有其他的接口受影响 
（3）新增接口需要将对应接口属性名称和属性值列出，属性值若有单位、异常值处理、范围限制或格式规范也需要列出，对于标准接口需要列出标准接口文档中对应的属性名称和属性值相关规定-->
| 特性 | SNMP | CLI | WEB | KVM_VMM | IPMI(RMCP/RMCP+) | HMM | Redfish |
| ---- | ---- | ---- | --- | ------ | ---------------- | --- | ------- |
| 支持182x大板上网卡182x芯片复位或上下电 | NA | NA | NA | NA | NA | NA | 新增标准Redfish接口NetworkAdapter.Reset |

新增标准Redfish接口NetworkAdapter.Reset，该接口的详细信息如下：

**资源URI**：/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset

**资源版本**：networkadapter.v1_12_1

**操作权限**：PowerMgmt

**请求参数**：
```
{
    "ResetType": "GracefulRestart"  // 复位类型
}
```

| 参数名 | 类型 | 必填 | 示例/取值约束 | 描述 |
| ---- | ---- | ---- | ---- | ---- |
| ResetType | string | 是 | 枚举值：<br>GracefulRestart（优雅复位）<br>ForceOff（强制下电）<br>ForceOn（强制上电）| 复位类型 |

**ActionInfo**：
```
{
    "@odata.context": "/redfish/v1/$metadata#ActionInfo.ActionInfo",
    "@odata.id": "/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo",
    "@odata.type": "#ActionInfo.v1_0_1.ActionInfo",
    "Id": "ResetActionInfo",
    "Name": "Reset Action Info",
    "Parameters": [
        {
            "Name": "ResetType",
            "Required": true,
            "DataType": "String",
            "AllowableValues": [
                "GracefulRestart",
                "ForceOff",
                "ForceOn"
            ]
        }
    ],
    "Oem": {}
}
```

**Schema定义**：
```
"Reset": {
    "additionalProperties": false,
    "description": "This action resets the network adapter.",
    "longDescription": "This action shall reset a network adapter.",
    "parameters": {
        "ResetType": {
            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/ResetType",
            "description": "The type of reset.",
            "longDescription": "This parameter shall contain the type of reset.  The service can accept a request without the parameter and shall perform a `GracefulRestart`."
        }
    },
    "patternProperties": {
        "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
            "description": "This property shall specify a valid odata or Redfish property.",
            "type": [
                "array",
                "boolean",
                "integer",
                "number",
                "null",
                "object",
                "string"
            ]
        }
    },
    "properties": {
        "target": {
            "description": "Link to invoke action",
            "format": "uri-reference",
            "type": "string"
        },
        "title": {
            "description": "Friendly action name",
            "type": "string"
        }
    },
    "type": "object",
    "versionAdded": "v1_11_0"
}
```

### 2.1.5 兼容性分析
<!-- 当前的功能对现有在网的功能是否有影响，具体的影响点进行分析之后输出影响分析表格 -->
不涉及

### 2.1.6 定制化接口分析
<!-- 如果支持定制化设置，则需要给出定制化时的默认值（空定制化项条件下的设置值），如果涉及到定制化接口变更或新增，注意定制化接口文档需配套修改。注意定制化默认值变更对白牌包的影响 -->
不涉及

### 2.1.7 导入导出分析
<!-- 如果支持导入导出的配置，则需要分析导入导出的schema。 -->
不涉及

### 2.1.8 传感器分析
<!-- 如果需要新增传感器，则需要提前登记和评审新增的传感器要素。新增传感器评审需要上SIG-Interface进行评审 -->
不涉及

### 2.1.9 精准告警事件分析
<!-- 如果需要新增事件，则需要提前登记和评审新增的时间要素 -->
不涉及

### 2.1.10 系统锁定分析
<!-- 对外的接口或者命令是否支持系统锁定 -->
不涉及

### 2.1.11 用例场景分析
<!-- 以表格的形式输出该需求涉及的用例场景 -->

| 用例编号 | 用例名称 | 前置条件 | 操作步骤 | 预期结果 |
| ---- | ---- | ---- | ---- | ---- |
| 1 | 查询Actions | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid下的信息，预期有结果a | a. 查询的回显中包含Actions属性，Actions下有NetworkAdapter.Reset接口和ResetActionInfo
| 2 | 查询ResetActionInfo，传入chassisid为无效值 | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo下的信息，其中传入的chassisid为无效值。预期有结果a | a. 提示不存在该资源
| 3 | 查询ResetActionInfo，传入networkadapterid为无效值 | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo下的信息，其中传入的networkadapterid为无效值。预期有结果a | a. 提示不存在该资源
| 4 | 查询ResetActionInfo，入参正确 | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo下的信息，其中传入的入参为有效值。预期有结果a | a. 查询到ResetActionInfo，回显内容和详设一致。
| 5 | 执行NetworkAdapter.Reset接口，传入chassisid为无效值 | 1. BMC正常运行<br> | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，其中传入的chassisid为无效值。预期有结果a | a. 提示不存在该资源
| 6 | 执行NetworkAdapter.Reset接口，传入networkadapterid为无效值 | 1. BMC正常运行<br> | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，其中传入的networkadapterid为无效值。预期有结果a | a. 提示不存在该资源
| 7 | 执行NetworkAdapter.Reset接口，传入的ResetType不在支持范围内 | 1. BMC正常运行<br> | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，其中传入的ResetType不在支持范围内。预期有结果a | a. 提示入参无效
| 8 | 执行NetworkAdapter.Reset接口，传入的ResetType为GracefulRestart | 1. BMC正常运行<br> 2. 环境上有182x大板网卡 | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，传入的ResetType为GracefulRestart。预期有结果a | a. 查看日志，显示对应的182x网卡芯片发生了复位
| 9 | 执行NetworkAdapter.Reset接口，传入的ResetType为ForceOff | 1. BMC正常运行<br> 2. 环境上有182x大板网卡 | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，传入的ResetType为ForceOff。预期有结果a | a. 查看日志，显示对应的182x网卡芯片被下电
| 10 | 执行NetworkAdapter.Reset接口，传入的ResetType为ForceOn | 1. BMC正常运行<br> 2. 环境上有182x大板网卡 | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，传入的ResetType为ForceOn。预期有结果a | a. 查看日志，显示对应的182x网卡芯片被上电



### 2.1.12 装备能力差异分析
<!-- 当前功能是否在装备版本和Release版本中存在能力差异，若有差异需要进行说明 -->
不涉及

### 2.1.13 持久化分析
<!-- 当前的功能是否涉及持久化，尤其是持久化类型变更或某个属性新增了取值，是否兼容老版本 -->
不涉及

## 2.2 非功能质量属性设计
### 2.2.1 扩展性分析
<!-- 考虑后续新增类似功能可以很好地扩展 -->
不涉及

### 2.2.2 重用性分析
<!-- 是否为通用处理方式、接口，如果是得考虑重用性 -->
不涉及

### 2.2.3 可测试性分析
<!-- 此需求如何验证，是否可直接验证，or通过XXX功能覆盖验证，or需要单独怎加测试接口验证 -->
本方案开发代码完成，在环境上部署后，可以通过调用Redfish接口，且后台查看组件日志的方式进行验证。

### 2.2.4 资料分析
<!-- 是否涉及资料修改 -->
新增Redfish接口NetworkAdapter.Reset，需要同步修改资料

### 2.2.5 资源使用分析
<!-- 新增线程、内存分配、模型属性名长度是否合理，CPU占用率是否会激增，Flash中新增文件是否合理（频繁读写Flash会大幅缩短emmc寿命）；是否涉及消息队列，如果涉及请检查是否存在某些场景下消息队列会满导致消息丢失，例如大量消息发送到队列且处理消息需要耗费较长时间的场景。 -->
不涉及

### 2.2.6 可靠性分析
| 编号 | 场景 | 问题描述 | 可靠性影响 | 问题级别 | 建议解决方案/需求 | 讨论结果 | 跟踪人 | 备注 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | sr文件中未给NetworkAdapter对象配置对应的Accessor对象 | 执行Reset方法时，无法获取需要操作的Accessor对象 | 无法对该网卡对象进行复位和上下电操作 | 一般 | 当Reset接口未获取到Accessor对象时，认为该网卡不支持复位或上下电操作，返回异常。
| 2 | 操作Accessor对象写入值进行复位或上下电时，写入失败 | 向Accessor对象写入数值失败 | 无法对该网卡对象进行复位和上下电操作 | 一般 | Reset方法检查Accessor对象的写入情况，如果写入失败，则返回异常。后续结合组件日志确认问题原因。

### 2.2.7 安全性分析
| 安全合规项 | 是否涉及 | 现有的防护措施 |
| --- | --- | --- |
| 访问控制（通道、文件权限、用户权限、查询权限、配置权限、接口权限） | 不涉及 |  |
| 敏感数据 | 不涉及 |  |
| 日志（操作日志、维护日志、安全日志、运行日志） | 不涉及 |  |
| 文档 | 不涉及 |  |
| 加密及算法 | 不涉及 |  |
| 新增关键资源（密钥、证书、关键配置）备份、恢复 | 不涉及 |  |
| 新增对外接口入参校验 | 涉及 | Redfish接口NetworkAdapter.Reset带有入参校验功能，确保输入参数满足枚举值定义。 |
| 新增开源及三方软件引入 | 不涉及 |  |
# 3.功能实现
<!-- 通过表格、流程图、简明文字描述提供，力求容易看懂、容易实现，详细描述细节。 -->
## 3.1 新增标准Redfish接口NetworkAdapter.Reset用于182x大板网卡的复位或上下电
### 3.1.1 功能实现设计
该功能点需要实现NetworkAdapter.Reset接口，接受网管输入的参数用于下发复位或上下电命令。在新增该接口的同时，还需要同步新增ResetActionInfo资源以描述该接口的功能与入参。同时也需要在上级路径中新增Actions属性，用于展示NetworkAdapter.Reset接口和ResetActionInfo。

### 3.1.2 功能详细设计
基于该功能点的实现设计，具体需要的修改点如下：

1. 新增Uri：/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo，用于查询Reset操作的ActionInfo。该响应体的回显与2.1.4章节中的ActionInfo一致。此外，该资源的ResourceExist属性配置和判断方法与上级路径的判断方法一致。
2. 新增Uri：/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset，用于复位或上下电指定的网卡。该接口的ReqBody接受的入参进行校验，校验规则与ActionInfo描述一致。该资源的ResourceExist属性配置和判断方法与上级路径的判断方法一致。执行该接口时，该接口首先通过GetPath接口获取待操作的网卡所在的dBus路径，寻找NodeId属性与Uri中networkadapterid一致的网卡对象。之后调用该对象bmc.kepler.Systems.NetworkAdapter接口中的Reset方法，从而完成复位或上下电命令的下发。
3. /redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid的响应体中新增Actions，该Actions中包含接口NetworkAdapter.Reset。接口的target指向修改点2新增的Uri，接口的ActionInfo指向修改点1新增的Uri。

### 3.1.3 开发者测试
<!--
增加模块接口：以活动图/流程图等形式明确模块内处理流程，针对模块处理流程中的分支进行覆盖
修改模块接口处理流程：覆盖修改影响流程分支
-->
#### 3.1.3.1 单元测试
<!-- UT，主要是功能单元测试，测试对象是功能单元接口。UT测试设计要从黑盒（功能）角度设计，从输入(I)、处理（B）、预期输出（O）的角度进行用例分析设计，测试覆盖率仅作为反馈，用于分析哪些功能场景没有覆盖到，从而指导测试设计优化并补充测试用例 -->
| 用例编号 | 用例名称 | 前置条件 | 操作步骤 | 预期结果 |
| ---- | ---- | ---- | ---- | ---- |
| 1 | 查询Actions | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid下的信息，预期有结果a | a. 查询的回显中包含Actions属性，Actions下有NetworkAdapter.Reset接口和ResetActionInfo
| 2 | 查询ResetActionInfo，传入chassisid为无效值 | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo下的信息，其中传入的chassisid为无效值。预期有结果a | a. 提示不存在该资源
| 3 | 查询ResetActionInfo，传入networkadapterid为无效值 | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo下的信息，其中传入的networkadapterid为无效值。预期有结果a | a. 提示不存在该资源
| 4 | 查询ResetActionInfo，入参正确 | 1. BMC正常运行<br> | 1. 查询/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/ResetActionInfo下的信息，其中传入的入参为有效值。预期有结果a | a. 查询到ResetActionInfo，回显内容和详设一致。
| 5 | 执行NetworkAdapter.Reset接口，传入chassisid为无效值 | 1. BMC正常运行<br> | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，其中传入的chassisid为无效值。预期有结果a | a. 提示不存在该资源
| 6 | 执行NetworkAdapter.Reset接口，传入networkadapterid为无效值 | 1. BMC正常运行<br> | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，其中传入的networkadapterid为无效值。预期有结果a | a. 提示不存在该资源
| 7 | 执行NetworkAdapter.Reset接口，传入的ResetType不在支持范围内 | 1. BMC正常运行<br> | 1. 执行/redfish/v1/Chassis/:chassisid/NetworkAdapters/:networkadapterid/Actions/NetworkAdapter.Reset接口，其中传入的ResetType不在支持范围内。预期有结果a | a. 提示入参无效

#### 3.1.3.2 集成测试
<!-- IT，主要是组件/模块内的集成测试，测试对象是模块/组件接口。IT测试设计将模块/组件当作黑盒测试，IT测试用例中禁止对组件/模块内部代码打桩，如果确实有少量场景难以构造，可以考虑在测试框架中统一打桩并提供接口供测试用例调用构造场景。
说明：API测试属于IT，其测试对象是微服务接口。
PCST，是指PC上的服务集成测试，测试对象是功能需求。PCST测试设计，要覆盖正常功能、异常功能和交叉功能，采用灰盒 -->
不涉及

## 3.2 资源协作接口bmc.kepler.Systems.NetworkAdapter新增Reset方法用于执行复位或上下电动作
### 3.2.1 功能实现设计
Reset方法内通过调用182x网卡配置的Accessor实现复位和上下电功能。为此，需要正确解析该方法的入参，并调用对应的Accessor进行访问。

### 3.2.2 功能详细设计
182x机型中，使用一组Accessor控制芯片的复位，另一组Accessor控制芯片的上下电。Accessor的命名规则如下：
| Accessor功能 | Accessor名称 | 字段含义 |
| ---- | ---- | ---- |
| 控制复位 | Accessor_1825_\${Id}\${Slot}Reset | Id：表示182x大板编号，取值0/1<br>Slot：表示芯片槽位号，取值1~8 |
| 控制上下电 | Accessor_1825\${Id}_OS\${OsId}PwrCtrl | Id：表示182x大板编号，取值0/1<br>OsId：表示芯片所属OS域，取值1~4 |

此外，182x机型还配置了一个Scanner_PowerGd，这个Scanner的低8bit用来表示全部8个OS域的上电情况。为了能访问到这些Accessor和Scanner，需要同步修改component_drviers代码仓的代码，在182x网卡的PCIeNicCard对象下配置正确关联这些对象。

当执行Reset方法时，方法首先获取需要操作的NetworkAdapter对象，并判断该对象是否创建自设备树。之后方法从设备树上查询该NetworkAdapter对象所对应的设备树对象，并根据入参的种类，获取用于复位或是用于上下电的Accessor。如果入参要求执行复位操作，则方法向Accessor中写入值后即可返回成功。若入参要求执行上下电，则方法需要再获取Scanner，并判断当前待操作的芯片上下电状态。如果当前上下电状态和入参动作一致，则不执行上下电操作直接返回成功。否则，方法写入对应的Accessor执行上下电操作。

### 3.2.3 开发者测试
<!--
增加模块接口：以活动图/流程图等形式明确模块内处理流程，针对模块处理流程中的分支进行覆盖
修改模块接口处理流程：覆盖修改影响流程分支
-->
#### 3.2.3.1 单元测试
<!-- UT，主要是功能单元测试，测试对象是功能单元接口。UT测试设计要从黑盒（功能）角度设计，从输入(I)、处理（B）、预期输出（O）的角度进行用例分析设计，测试覆盖率仅作为反馈，用于分析哪些功能场景没有覆盖到，从而指导测试设计优化并补充测试用例 -->
| 用例编号 | 用例名称 | 前置条件 | 操作步骤 | 预期结果 |
| ---- | ---- | ---- | ---- | ---- |
| 1 | test_method_reset_invalid_obj | 无 | 1. 调用Reset方法，传入的对象未在组件内保存<br>2. 调用Reset方法，传入的对象无法在设备树上找到对应对象 | 1. Reset方法返回失败<br>2. Reset方法返回失败 |
| 2 | test_method_reset_invalid_reset_type | 无 | 调用Reset方法，传入的ResetType入参不在枚举类型中 | Reset方法返回失败 |
| 3 | test_method_reset_no_accessor | 无 | 1. 调用reset_dev_obj方法执行GracefulRestart，未配置ResetAccessor对象<br>2. 调用power_ctrl_dev_obj方法执行ForceOff，未配置PowerAccessor对象<br>3. 调用power_ctrl_dev_obj方法执行ForceOn，未配置PowerAccessor对象 | 1. reset_dev_obj方法返回失败<br>2. power_ctrl_dev_obj方法返回失败<br>3. power_ctrl_dev_obj方法返回失败 |
| 4 | test_method_reset_set_value | 无 | 1. 打桩配置ResetAccessor对象，调用reset_dev_obj方法执行GracefulRestart<br>2. 打桩配置PowerAccessor和Scanner_PowerGd对象，调用power_ctrl_dev_obj方法执行ForceOff<br>3. 打桩配置PowerAccessor和Scanner_PowerGd对象，调用power_ctrl_dev_obj方法执行ForceOn | 1. reset_dev_obj方法返回成功<br>2. power_ctrl_dev_obj方法返回成功<br>3. power_ctrl_dev_obj方法返回成功 |
#### 3.2.3.2 集成测试
<!-- IT，主要是组件/模块内的集成测试，测试对象是模块/组件接口。IT测试设计将模块/组件当作黑盒测试，IT测试用例中禁止对组件/模块内部代码打桩，如果确实有少量场景难以构造，可以考虑在测试框架中统一打桩并提供接口供测试用例调用构造场景。
说明：API测试属于IT，其测试对象是微服务接口。
PCST，是指PC上的服务集成测试，测试对象是功能需求。PCST测试设计，要覆盖正常功能、异常功能和交叉功能，采用灰盒 -->
不涉及