Skip to content

Commit cb554df

Browse files
committed
<fix>[sdk]: update SDK files for LongJobProgressDetail
Resolves: ZSTAC-82318 Change-Id: I8931c4207547b836b522c9b5cea2db807a032d5c
1 parent 241090b commit cb554df

5 files changed

Lines changed: 29 additions & 12 deletions

File tree

header/src/main/java/org/zstack/header/core/progress/LongJobProgressDetailBuilder.java

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ private static LongJobProgressDetail tryParseAiDownloadFormat(Map<String, Object
142142
}
143143

144144
LongJobProgressDetail detail = new LongJobProgressDetail();
145+
Map<String, Object> extra = new HashMap<>();
145146

146147
// state field
147148
Object stateVal = inner.get("state");
@@ -156,7 +157,7 @@ private static LongJobProgressDetail tryParseAiDownloadFormat(Map<String, Object
156157

157158
Number percent = toNumber(progress.get("percent"));
158159
if (percent != null) {
159-
detail.setPercent((int) Math.round(percent.doubleValue()));
160+
detail.setPercent(Math.max(0, Math.min(100, (int) Math.round(percent.doubleValue()))));
160161
}
161162

162163
// AI agent uses snake_case field names
@@ -205,9 +206,7 @@ private static LongJobProgressDetail tryParseAiDownloadFormat(Map<String, Object
205206
extraProgress.remove("downloaded_files");
206207
extraProgress.remove("total_files");
207208
extraProgress.remove("stage");
208-
if (!extraProgress.isEmpty()) {
209-
detail.setExtra(extraProgress);
210-
}
209+
extra.putAll(extraProgress);
211210
}
212211

213212
// stateReason field — can be String or Map (structured reason with code/description)
@@ -218,6 +217,22 @@ private static LongJobProgressDetail tryParseAiDownloadFormat(Map<String, Object
218217
detail.setStateReason(JSONObjectUtil.toJsonString(stateReason));
219218
}
220219

220+
// preserve unknown keys from inner top-level
221+
Map<String, Object> extraInner = new HashMap<>(inner);
222+
extraInner.remove("state");
223+
extraInner.remove("progress");
224+
extraInner.remove("state_reason");
225+
extra.putAll(extraInner);
226+
227+
// preserve unknown keys from raw outer-level
228+
Map<String, Object> extraRaw = new HashMap<>(raw);
229+
extraRaw.remove("data");
230+
extra.putAll(extraRaw);
231+
232+
if (!extra.isEmpty()) {
233+
detail.setExtra(extra);
234+
}
235+
221236
return detail;
222237
} catch (Exception e) {
223238
logger.trace("LongJobProgressDetailBuilder: failed to parse AI download format", e);

header/src/main/java/org/zstack/header/core/progress/TaskProgressInventory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public class TaskProgressInventory {
1818
private Long time;
1919
private List<TaskProgressInventory> subTasks;
2020
private String arguments;
21-
/** Typed progress detail parsed from opaque. Null when opaque is absent or unrecognized. */
21+
/** Typed progress detail parsed from opaque. Null when opaque is absent or parsing fails. */
2222
private LongJobProgressDetail progressDetail;
2323

2424
public TaskProgressInventory() {

sdk/src/main/java/SourceClassMap.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,7 @@ public class SourceClassMap {
247247
put("org.zstack.header.core.external.service.ExternalServiceCapabilities", "org.zstack.sdk.ExternalServiceCapabilities");
248248
put("org.zstack.header.core.external.service.ExternalServiceInventory", "org.zstack.sdk.ExternalServiceInventory");
249249
put("org.zstack.header.core.progress.ChainInfo", "org.zstack.sdk.ChainInfo");
250+
put("org.zstack.header.core.progress.LongJobProgressDetail", "org.zstack.sdk.LongJobProgressDetail");
250251
put("org.zstack.header.core.progress.PendingTaskInfo", "org.zstack.sdk.PendingTaskInfo");
251252
put("org.zstack.header.core.progress.RunningTaskInfo", "org.zstack.sdk.RunningTaskInfo");
252253
put("org.zstack.header.core.progress.TaskInfo", "org.zstack.sdk.TaskInfo");
@@ -1208,6 +1209,7 @@ public class SourceClassMap {
12081209
put("org.zstack.sdk.LogType", "org.zstack.log.server.LogType");
12091210
put("org.zstack.sdk.LoginAuthenticationProcedureDesc", "org.zstack.header.identity.login.LoginAuthenticationProcedureDesc");
12101211
put("org.zstack.sdk.LongJobInventory", "org.zstack.header.longjob.LongJobInventory");
1212+
put("org.zstack.sdk.LongJobProgressDetail", "org.zstack.header.core.progress.LongJobProgressDetail");
12111213
put("org.zstack.sdk.LongJobState", "org.zstack.header.longjob.LongJobState");
12121214
put("org.zstack.sdk.LunInventory", "org.zstack.header.storageDevice.LunInventory");
12131215
put("org.zstack.sdk.MaaSUsage", "org.zstack.ai.message.MaaSUsage");

sdk/src/main/java/org/zstack/sdk/LongJobProgressDetail.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,11 @@ public java.lang.Long getEstimatedRemainingSeconds() {
8484
return this.estimatedRemainingSeconds;
8585
}
8686

87-
public java.util.LinkedHashMap extra;
88-
public void setExtra(java.util.LinkedHashMap extra) {
87+
public java.util.Map extra;
88+
public void setExtra(java.util.Map extra) {
8989
this.extra = extra;
9090
}
91-
public java.util.LinkedHashMap getExtra() {
91+
public java.util.Map getExtra() {
9292
return this.extra;
9393
}
9494

sdk/src/main/java/org/zstack/sdk/TaskProgressInventory.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.zstack.sdk;
22

3-
3+
import org.zstack.sdk.LongJobProgressDetail;
44

55
public class TaskProgressInventory {
66

@@ -76,11 +76,11 @@ public java.lang.String getArguments() {
7676
return this.arguments;
7777
}
7878

79-
public org.zstack.sdk.LongJobProgressDetail progressDetail;
80-
public void setProgressDetail(org.zstack.sdk.LongJobProgressDetail progressDetail) {
79+
public LongJobProgressDetail progressDetail;
80+
public void setProgressDetail(LongJobProgressDetail progressDetail) {
8181
this.progressDetail = progressDetail;
8282
}
83-
public org.zstack.sdk.LongJobProgressDetail getProgressDetail() {
83+
public LongJobProgressDetail getProgressDetail() {
8484
return this.progressDetail;
8585
}
8686

0 commit comments

Comments
 (0)