Skip to content

<feature>[storage]: res sblk#3361

Open
MatheMatrix wants to merge 1 commit intofeature-zsv-5.0.0-vm-registrationfrom
sync/tao.gan/sblk-ZSV-10000@@3
Open

<feature>[storage]: res sblk#3361
MatheMatrix wants to merge 1 commit intofeature-zsv-5.0.0-vm-registrationfrom
sync/tao.gan/sblk-ZSV-10000@@3

Conversation

@MatheMatrix
Copy link
Owner

APIImpact

Resolves: ZSV-1

Change-Id: I70637377776e777070676c6a6c616e74786b6667

sync from gitlab !9195

APIImpact

Resolves: ZSV-1

Change-Id: I70637377776e777070676c6a6c616e74786b6667
@coderabbitai
Copy link

coderabbitai bot commented Feb 13, 2026

概要

本次提交为主存储引入了两个新的API操作:一致性检查(CheckPrimaryStorageConsistency)和接管(TakeoverPrimaryStorage)。新增API消息类、事件类、SDK操作类、中文文档定义及相应的处理程序接口,共包含15个新增文件。

变更内容

变更组 / 文件(s) 摘要
一致性检查API头部定义
header/src/main/java/org/zstack/header/storage/primary/APICheckPrimaryStorageConsistency*
新增API消息类、事件类及对应的中文文档定义。消息类映射到PUT /primary-storage/{uuid}/consistency端点,事件类包含consistent布尔字段用于返回检查结果。
接管存储API头部定义
header/src/main/java/org/zstack/header/storage/primary/APITakeoverPrimaryStorage*
新增API消息类、事件类及对应的中文文档定义。消息类映射到PUT /primary-storage/{uuid}/takeover端点,事件类包含PrimaryStorageInventory用于返回接管后的存储信息。
SDK一致性检查操作
sdk/src/main/java/org/zstack/sdk/CheckPrimaryStorage*
新增SDK操作类及结果类,支持同步和异步调用模式,包含参数映射和REST元数据配置。
SDK接管存储操作
sdk/src/main/java/org/zstack/sdk/TakeoverPrimaryStorage*
新增SDK操作类及结果类,支持同步和异步调用模式,具有轮询支持和完整的参数处理。
共享块组信息API
sdk/src/main/java/org/zstack/sdk/GetSharedBlockGroup*, sdk/src/main/java/org/zstack/sdk/SharedBlockGroupLunInfo.java
新增用于查询共享块组信息的SDK操作类及相关数据容器类,支持获取LUN信息和块组配置。
SDK映射更新
sdk/src/main/java/SourceClassMap.java
SharedBlockGroupLunInfo添加源目标映射条目。
存储处理程序扩展
storage/src/main/java/org/zstack/storage/primary/PrimaryStorageBase.java
新增两个消息处理方法,当前返回"操作不支持"异常,为两个新API提供路由和占位符实现。
测试辅助方法
testlib/src/main/java/org/zstack/testlib/ApiHelper.groovy
新增takeoverPrimaryStorage测试辅助方法,用于测试接管存储API操作。

预计代码审查工作量

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

🐰 新的操作悄然而至,
检查和接管存储的力量,
SDK行动已展开,
API之路越来越清晰,
主存储的未来闪闪发光!

🚥 Pre-merge checks | ✅ 1 | ❌ 3
❌ Failed checks (2 warnings, 1 inconclusive)
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.
Merge Conflict Detection ⚠️ Warning ⚠️ Unable to check for merge conflicts: Invalid branch name format
Title check ❓ Inconclusive PR标题 '[storage]: res sblk' 过于简洁模糊,未能清晰传达主要变更内容。虽然涉及存储相关功能,但缩写'sblk'和'res'含义不明,难以让团队成员快速了解本次变更的核心目的。 建议将标题改为更具描述性的形式,如 '[storage]: Add primary storage consistency check and takeover APIs' 或类似的清晰表述,以便于团队理解变更的实际意义。
✅ Passed checks (1 passed)
Check name Status Explanation
Description check ✅ Passed PR描述简明扼要地提到了APIImpact、关联问题和变更来源,与代码变更相关联,虽然信息量有限但并非完全不相关。

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

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch sync/tao.gan/sblk-ZSV-10000@@3
⚔️ Resolve merge conflicts (beta)
  • Auto-commit resolved conflicts to branch sync/tao.gan/sblk-ZSV-10000@@3
  • Create stacked PR with resolved conflicts
  • Post resolved changes as copyable diffs in a comment

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

Copy link

@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.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In
`@header/src/main/java/org/zstack/header/storage/primary/APICheckPrimaryStorageConsistencyEventDoc_zh_cn.groovy`:
- Around line 9-13: The field description for the "consistent" field contains a
typo ("是否一直"); update the desc value to the correct wording "是否一致" in the
APICheckPrimaryStorageConsistencyEventDoc_zh_cn.groovy definition so the
documentation accurately reflects that this boolean indicates whether the
storage is consistent.
🧹 Nitpick comments (9)
sdk/src/main/java/org/zstack/sdk/GetSharedBlockGroupLunsResult.java (1)

6-6: Map 字段添加泛型参数以提升类型安全。

当前使用原始类型 java.util.Map 会在运行时丢失类型信息,可能导致 ClassCastException。根据字段名称和相关的 SharedBlockGroupLunInfo 类的存在,建议明确指定泛型类型为 Map<String, SharedBlockGroupLunInfo>

♻️ 建议的修改
-    public java.util.Map lunInfos;
+    public java.util.Map<String, SharedBlockGroupLunInfo> lunInfos;

同时更新 getter 和 setter 方法的类型签名:

-    public void setLunInfos(java.util.Map lunInfos) {
+    public void setLunInfos(java.util.Map<String, SharedBlockGroupLunInfo> lunInfos) {
         this.lunInfos = lunInfos;
     }
-    public java.util.Map getLunInfos() {
+    public java.util.Map<String, SharedBlockGroupLunInfo> getLunInfos() {
         return this.lunInfos;
     }
sdk/src/main/java/org/zstack/sdk/GetSharedBlockGroupLunsAction.java (2)

5-5: 冗余的自包名导入

import org.zstack.sdk.*;org.zstack.sdk 包内是冗余的,可以移除。

♻️ 建议修复
 import java.util.HashMap;
 import java.util.Map;
-import org.zstack.sdk.*;
 
 public class GetSharedBlockGroupLunsAction extends AbstractAction {

31-35: 原始类型 List 缺少泛型参数

systemTagsuserTags 使用了原始类型 java.util.List,建议添加泛型参数以提高类型安全性。

不过,观察到其他 SDK Action 类(如 TakeoverPrimaryStorageAction)也采用相同的模式,这可能是代码生成器的标准输出格式,可以保持一致性。

header/src/main/java/org/zstack/header/storage/primary/APICheckPrimaryStorageConsistencyEvent.java (1)

25-28: __example__() 方法建议设置示例值

当前 __example__() 方法返回的事件实例未设置 consistent 字段的示例值。对比 APITakeoverPrimaryStorageEvent 的实现,建议设置一个有意义的示例值以便生成更完整的 API 文档。

📝 建议改进
     public static APICheckPrimaryStorageConsistencyEvent __example__() {
         APICheckPrimaryStorageConsistencyEvent event = new APICheckPrimaryStorageConsistencyEvent();
+        event.setConsistent(true);
         return event;
     }
sdk/src/main/java/org/zstack/sdk/TakeoverPrimaryStorageAction.java (1)

5-5: 冗余的自包名导入

GetSharedBlockGroupLunsAction 相同,import org.zstack.sdk.*; 是冗余的。

sdk/src/main/java/org/zstack/sdk/SharedBlockGroupLunInfo.java (2)

15-21: 布尔类型 getter 方法命名

Java 惯例中,boolean 类型的 getter 方法通常使用 is 前缀而非 get 前缀。当前 getSharedGroupComplete() 建议改为 isSharedGroupComplete()

不过,如果这是代码生成器的标准输出或与序列化框架有兼容性要求,可以保持现状。

♻️ 建议修复
-    public boolean getSharedGroupComplete() {
+    public boolean isSharedGroupComplete() {
         return this.sharedGroupComplete;
     }

7-29: 原始类型缺少泛型参数

candidateLuns (List) 和 existLunWwidsByHost (Map) 使用了原始类型。建议添加泛型参数以提高类型安全性和代码可读性。

sdk/src/main/java/org/zstack/sdk/CheckPrimaryStorageConsistencyAction.java (2)

1-6: 冗余的通配符导入

第 5 行 import org.zstack.sdk.*; 是当前包的通配符导入,由于类本身已在 org.zstack.sdk 包中,此导入是冗余的,可以移除。

♻️ 建议移除冗余导入
 package org.zstack.sdk;
 
 import java.util.HashMap;
 import java.util.Map;
-import org.zstack.sdk.*;
 
 public class CheckPrimaryStorageConsistencyAction extends AbstractAction {

31-35: 建议使用泛型类型而非原始类型

systemTagsuserTags 字段使用了原始类型 java.util.List,建议使用泛型 java.util.List<String> 以提高类型安全性,避免潜在的类型转换问题。

♻️ 建议的改进
     `@Param`(required = false)
-    public java.util.List systemTags;
+    public java.util.List<String> systemTags;

     `@Param`(required = false)
-    public java.util.List userTags;
+    public java.util.List<String> userTags;

Comment on lines +9 to +13
field {
name "consistent"
desc "是否一直"
type "boolean"
since "5.0.0"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

字段描述疑似笔误

“是否一直”建议改为“是否一致”,避免歧义。

✅ 建议修改
-		desc "是否一直"
+		desc "是否一致"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
field {
name "consistent"
desc "是否一直"
type "boolean"
since "5.0.0"
field {
name "consistent"
desc "是否一致"
type "boolean"
since "5.0.0"
🤖 Prompt for AI Agents
In
`@header/src/main/java/org/zstack/header/storage/primary/APICheckPrimaryStorageConsistencyEventDoc_zh_cn.groovy`
around lines 9 - 13, The field description for the "consistent" field contains a
typo ("是否一直"); update the desc value to the correct wording "是否一致" in the
APICheckPrimaryStorageConsistencyEventDoc_zh_cn.groovy definition so the
documentation accurately reflects that this boolean indicates whether the
storage is consistent.

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