Skip to content

<feature>[utils]: Network group high availability strategy#3834

Open
zstack-robot-2 wants to merge 1 commit into5.5.6_guonengfrom
sync/haoyu.ding/fv-81413@@3
Open

<feature>[utils]: Network group high availability strategy#3834
zstack-robot-2 wants to merge 1 commit into5.5.6_guonengfrom
sync/haoyu.ding/fv-81413@@3

Conversation

@zstack-robot-2
Copy link
Copy Markdown
Collaborator

DBImpact

Resolves: ZSTAC-81413

Change-Id: I6a7574656467636e686377756f716d67707a7063

sync from gitlab !9706

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: http://open.zstack.ai:20001/code-reviews/zstack-cloud.yaml (via .coderabbit.yaml)

Review profile: CHILL

Plan: Pro

Run ID: 49d204db-38a1-4dfa-9589-029f1df81425

📥 Commits

Reviewing files that changed from the base of the PR and between 0dfa059 and a7874c0.

⛔ Files ignored due to path filters (12)
  • sdk/src/main/java/SourceClassMap.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/ChangeHaNetworkGroupStateAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/ChangeHaNetworkGroupStateResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/CreateHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/CreateHaNetworkGroupResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/DeleteHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/DeleteHaNetworkGroupResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/HaNetworkGroupInventory.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/QueryHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/QueryHaNetworkGroupResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/UpdateHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/UpdateHaNetworkGroupResult.java is excluded by !sdk/**
📒 Files selected for processing (9)
  • conf/db/upgrade/V5.5.6__schema.sql
  • plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java
  • plugin/kvm/src/main/java/org/zstack/kvm/KVMConstant.java
  • simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorConfig.java
  • simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorController.java
  • testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy
  • testlib/src/main/java/org/zstack/testlib/EnvSpec.groovy
  • testlib/src/main/java/org/zstack/testlib/KVMSimulator.groovy
  • utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java
✅ Files skipped from review due to trivial changes (3)
  • testlib/src/main/java/org/zstack/testlib/KVMSimulator.groovy
  • plugin/kvm/src/main/java/org/zstack/kvm/KVMConstant.java
  • utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java
🚧 Files skipped from review as they are similar to previous changes (2)
  • simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorConfig.java
  • testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy

概述

添加虚拟机高可用(HA)元数据管理支持,包括新的KVM代理命令、端点常量、模拟器处理器、测试助手、错误代码和HA网络组的数据库模式扩展。

更改

队列 / 文件 摘要
KVM代理命令与常量
plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java, plugin/kvm/src/main/java/org/zstack/kvm/KVMConstant.java
引入两个新的实时代理命令类(SetupVmHaEnabledMetadataLiveCmdReconcileVmHaEnabledMetadataLiveCmd)用于管理VM HA元数据,扩展StartVmCmd以支持enableHa字段,添加三个新的HA相关端点路径常量。
KVM模拟器实现
simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorConfig.java, simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorController.java
在模拟器配置中添加三个volatile字段用于存储HA命令,实现三个新的Spring MVC POST处理器来解析和记录传入的HA命令请求。
测试库助手
testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy, testlib/src/main/java/org/zstack/testlib/EnvSpec.groovy, testlib/src/main/java/org/zstack/testlib/KVMSimulator.groovy
为HA网络组操作添加五个新的API助手方法,扩展环境清理的允许列表,注册三个新的模拟器端点处理器。
错误代码与数据库模式
utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java, conf/db/upgrade/V5.5.6__schema.sql
添加22个HA相关的错误代码常量,创建四个新的数据库表用于持久化HA网络组定义、L3网络映射、主机HA网络状态和全局配置版本。

代码审查工作量估计

🎯 3 (中等复杂度) | ⏱️ ~25 分钟

🐰 *轻拍长耳*
新的HA命令悄悄落地,
网络组同步起舞,
代理、模拟、测试各就各位,
数据库为元数据开启新房间,
二十二个错误码见证可靠之路!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning 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 The title follows the required [scope]: format with 58 characters, well under the 72-character limit.
Description check ✅ Passed The description is related to the changeset, referencing JIRA issue ZSTAC-81413 and indicating a sync from GitLab, which aligns with the HA network group feature changes.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ 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/haoyu.ding/fv-81413@@3

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ast-grep (0.42.1)
utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
conf/db/upgrade/V5.5.12__schema.sql (1)

4-4: description 字段建议改为 TEXT,降低截断风险。

description 通常属于长度不可控文本,固定 VARCHAR(2048) 容易在输入增长时产生截断或约束失败。

💡建议修改
-    `description` VARCHAR(2048) DEFAULT NULL,
+    `description` TEXT DEFAULT NULL,

As per coding guidelines: 数据库记录中,如果字符串长度不可控,不要用 vchar,用 text 类型.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@conf/db/upgrade/V5.5.12__schema.sql` at line 4, 将表定义中列 `description` 的类型从
`VARCHAR(2048)` 修改为无长度限制的 `TEXT` 来避免截断问题;在迁移脚本 V5.5.12 的相关 `description
VARCHAR(2048) DEFAULT NULL` 语句中改为 `description TEXT` 并保留
NULL/默认行为,检查并更新任何依赖该列长度限制的索引、约束或应用层验证(如有)以确保兼容性。
utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java (1)

1861-1904: 建议添加 Javadoc 注释说明各错误码的用途

这 22 个新增的 HA 错误码常量(ORG_ZSTACK_HA_10019 到 ORG_ZSTACK_HA_10040)虽然命名符合规范,但缺少文档说明各错误码代表的具体含义和使用场景。建议为每个常量添加 Javadoc 注释,说明该错误码在什么情况下使用,这将提高代码的可维护性和可读性。

根据编码规范:"常量命名:要求表达清楚,避免使用含糊或不准确的名称"以及"代码应尽量做到自解释"。

📝 建议的文档格式示例
+    /**
+     * Error code for [具体错误场景描述]
+     */
     public static final String ORG_ZSTACK_HA_10019 = "ORG_ZSTACK_HA_10019";
     
+    /**
+     * Error code for [具体错误场景描述]
+     */
     public static final String ORG_ZSTACK_HA_10020 = "ORG_ZSTACK_HA_10020";
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java`
around lines 1861 - 1904, 这些新增的 HA 错误码常量(ORG_ZSTACK_HA_10019 到
ORG_ZSTACK_HA_10040)缺少 Javadoc 描述,导致不清楚各错误码的含义和使用场景;请在 CloudOperationsErrorCode
类中为每个常量(例如 ORG_ZSTACK_HA_10019、ORG_ZSTACK_HA_10020 ... ORG_ZSTACK_HA_10040)添加简短的
Javadoc 注释,说明该错误码表示的具体错误条件、典型触发场景以及建议的处理或上报方式,遵循现有注释格式以保持一致性并提高可维护性。
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@conf/db/upgrade/V5.5.12__schema.sql`:
- Line 4: 将表定义中列 `description` 的类型从 `VARCHAR(2048)` 修改为无长度限制的 `TEXT`
来避免截断问题;在迁移脚本 V5.5.12 的相关 `description VARCHAR(2048) DEFAULT NULL` 语句中改为
`description TEXT` 并保留 NULL/默认行为,检查并更新任何依赖该列长度限制的索引、约束或应用层验证(如有)以确保兼容性。

In
`@utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java`:
- Around line 1861-1904: 这些新增的 HA 错误码常量(ORG_ZSTACK_HA_10019 到
ORG_ZSTACK_HA_10040)缺少 Javadoc 描述,导致不清楚各错误码的含义和使用场景;请在 CloudOperationsErrorCode
类中为每个常量(例如 ORG_ZSTACK_HA_10019、ORG_ZSTACK_HA_10020 ... ORG_ZSTACK_HA_10040)添加简短的
Javadoc 注释,说明该错误码表示的具体错误条件、典型触发场景以及建议的处理或上报方式,遵循现有注释格式以保持一致性并提高可维护性。

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: http://open.zstack.ai:20001/code-reviews/zstack-cloud.yaml (via .coderabbit.yaml)

Review profile: CHILL

Plan: Pro

Run ID: 059edc37-9897-4f22-b19a-b4408e89065a

📥 Commits

Reviewing files that changed from the base of the PR and between cf48ab8 and 0dfa059.

⛔ Files ignored due to path filters (12)
  • sdk/src/main/java/SourceClassMap.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/ChangeHaNetworkGroupStateAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/ChangeHaNetworkGroupStateResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/CreateHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/CreateHaNetworkGroupResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/DeleteHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/DeleteHaNetworkGroupResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/HaNetworkGroupInventory.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/QueryHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/QueryHaNetworkGroupResult.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/UpdateHaNetworkGroupAction.java is excluded by !sdk/**
  • sdk/src/main/java/org/zstack/sdk/UpdateHaNetworkGroupResult.java is excluded by !sdk/**
📒 Files selected for processing (9)
  • conf/db/upgrade/V5.5.12__schema.sql
  • plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java
  • plugin/kvm/src/main/java/org/zstack/kvm/KVMConstant.java
  • simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorConfig.java
  • simulator/simulatorImpl/src/main/java/org/zstack/simulator/kvm/KVMSimulatorController.java
  • testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy
  • testlib/src/main/java/org/zstack/testlib/EnvSpec.groovy
  • testlib/src/main/java/org/zstack/testlib/KVMSimulator.groovy
  • utils/src/main/java/org/zstack/utils/clouderrorcode/CloudOperationsErrorCode.java

DBImpact

Resolves: ZSTAC-81413

Change-Id: I6a7574656467636e686377756f716d67707a7063
@MatheMatrix MatheMatrix force-pushed the sync/haoyu.ding/fv-81413@@3 branch from 0dfa059 to a7874c0 Compare April 24, 2026 06:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants