<fix>[sdnController]: route creation to owner MN#4536
Conversation
DBImpact Resolves: ZSTAC-73622 JIRA: ZSTAC-86415 Change-Id: I667461766363677373636a6e626f70766e736f6f (cherry picked from commit 6f33d21)
|
Warning
|
| Layer / File(s) | Summary |
|---|---|
消息契约与敏感字段 header/.../SdnControllerVO.java, plugin/sdnController/.../SdnController.java, plugin/sdnController/.../header/* |
新增 AddSdnControllerMsg 与 AddSdnControllerReply,统一初始化接口参数类型,并为密码字段添加 @NoLogging。 |
控制器创建异步流程 plugin/sdnController/.../SdnControllerManagerImpl.java |
管理器接收内部添加消息,通过 CloudBus 执行控制器创建流程,并在回调中返回 inventory 或错误。 |
控制器实现适配 plugin/sdnController/.../h3cVcfc/*, plugin/sugonSdnController/.../SugonSdnController.java |
H3C、H3C V2 和 Sugon 实现切换为 AddSdnControllerMsg,Sugon 从 SdnControllerVO 获取连接 IP。 |
Estimated code review effort: 3 (Moderate) | ~20 minutes
Sequence Diagram(s)
sequenceDiagram
participant API as APIAddSdnControllerMsg
participant Manager as SdnControllerManagerImpl
participant Bus as CloudBus
participant Controller as SDN Controller
participant DB as SdnControllerDB
API->>Manager: 提交创建请求
Manager->>Bus: 发送 AddSdnControllerMsg
Bus->>Controller: 路由内部消息
Controller-->>Manager: 返回创建结果
Manager->>DB: 查询 SdnControllerVO
Manager-->>API: 返回 inventory 或错误
Poem
我是兔子蹦蹦跳,
消息换装走云桥。
控制器排队来报到,
密码藏好不喧闹。
回调带着 inventory,
耳朵一摇流程好!
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (4 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title check | ✅ Passed | 标题简洁且准确概括了将创建流程路由到目标管理节点这一核心变更。 |
| Description check | ✅ Passed | 描述与本次回迁内容一致,准确说明了内部消息、路由和密码日志保护等变更。 |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
✨ Finishing Touches
📝 Generate docstrings
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Commit unit tests in branch
sync/dejing.liu/codex/ZSTAC-86415-5.4.12@@2
Comment @coderabbitai help to get the list of available commands.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
plugin/sdnController/src/main/java/org/zstack/sdnController/header/AddSdnControllerReply.java (1)
6-16: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win
inventory字段定义后从未被填充,属于契约与实现不一致。
SdnControllerManagerImpl.handle(AddSdnControllerMsg)的成功/失败回调均未调用reply.setInventory(...),而handle(APIAddSdnControllerMsg)的CloudBusCallBack收到回复后又重新查库构造 inventory。建议在doCreateSdnController成功时填充reply.setInventory(SdnControllerInventory.valueOf(vo)),并在回调中直接使用reply.getInventory(),避免冗余查询,也让该字段名副其实。🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@plugin/sdnController/src/main/java/org/zstack/sdnController/header/AddSdnControllerReply.java` around lines 6 - 16, 在 SdnControllerManagerImpl 的 doCreateSdnController 成功流程中调用 reply.setInventory(SdnControllerInventory.valueOf(vo)) 填充 AddSdnControllerReply.inventory;同时修改 handle(APIAddSdnControllerMsg) 的 CloudBusCallBack,直接使用 reply.getInventory(),移除成功后的重复查库和 inventory 构造逻辑。
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@plugin/sdnController/src/main/java/org/zstack/sdnController/header/AddSdnControllerMsg.java`:
- Around line 1-31: 在 AddSdnControllerMsg 中新增 systemTags 字段,并默认初始化为空列表;补充
getSystemTags 和 setSystemTags 访问器,确保下游调用及遍历时不会出现缺失方法或空值。
---
Nitpick comments:
In
`@plugin/sdnController/src/main/java/org/zstack/sdnController/header/AddSdnControllerReply.java`:
- Around line 6-16: 在 SdnControllerManagerImpl 的 doCreateSdnController 成功流程中调用
reply.setInventory(SdnControllerInventory.valueOf(vo)) 填充
AddSdnControllerReply.inventory;同时修改 handle(APIAddSdnControllerMsg) 的
CloudBusCallBack,直接使用 reply.getInventory(),移除成功后的重复查库和 inventory 构造逻辑。
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 04ebdfd2-04e3-45df-be95-36f4ff95a847
📒 Files selected for processing (8)
header/src/main/java/org/zstack/header/network/sdncontroller/SdnControllerVO.javaplugin/sdnController/src/main/java/org/zstack/sdnController/SdnController.javaplugin/sdnController/src/main/java/org/zstack/sdnController/SdnControllerManagerImpl.javaplugin/sdnController/src/main/java/org/zstack/sdnController/h3cVcfc/H3cVcfcSdnController.javaplugin/sdnController/src/main/java/org/zstack/sdnController/h3cVcfc/H3cVcfcV2SdnController.javaplugin/sdnController/src/main/java/org/zstack/sdnController/header/AddSdnControllerMsg.javaplugin/sdnController/src/main/java/org/zstack/sdnController/header/AddSdnControllerReply.javaplugin/sugonSdnController/src/main/java/org/zstack/sugonSdnController/controller/SugonSdnController.java
Summary
Backport ZSTAC-86415 to 5.4.12 so SDN controller creation is routed to the management node selected by controller UUID, avoiding OVN initialization on the wrong MN.
Changes
AddSdnControllerMsgandAddSdnControllerReplymessages.@NoLogging.Source
6f33d216223c9c007413c442e88e3c9627b98c60e52151511af16b7123a274aced48970fb18aa009Testing
git diff --check origin/5.4.12...HEADheader,sdnController, andsugonSdnControllerAddSdnControllerMsgon MN2Connected; delete succeeded; both MN queries returned emptyNullPointerException,NoSuchMethodError, orAbstractMethodErrorResolves: ZSTAC-86415
sync from gitlab !10498