diff --git a/header/src/main/java/org/zstack/header/host/CompareCpuFunctionOnHostReply.java b/header/src/main/java/org/zstack/header/host/CompareCpuFunctionOnHostReply.java index 73f3fe8946e..402fa684bbb 100644 --- a/header/src/main/java/org/zstack/header/host/CompareCpuFunctionOnHostReply.java +++ b/header/src/main/java/org/zstack/header/host/CompareCpuFunctionOnHostReply.java @@ -6,4 +6,22 @@ * Created by LiangHanYu on 2021/8/13 16:32 */ public class CompareCpuFunctionOnHostReply extends MessageReply { + private boolean match; + private String compareError; + + public boolean isMatch() { + return match; + } + + public void setMatch(boolean match) { + this.match = match; + } + + public String getCompareError() { + return compareError; + } + + public void setCompareError(String compareError) { + this.compareError = compareError; + } } diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java index 12d0f44a164..5d225e377a8 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java @@ -3770,6 +3770,24 @@ public void setCpuXml(String cpuXml) { } public static class VmCompareCpuFunctionResponse extends AgentResponse { + private boolean match = true; + private String compareError; + + public boolean isMatch() { + return match; + } + + public void setMatch(boolean match) { + this.match = match; + } + + public String getCompareError() { + return compareError; + } + + public void setCompareError(String compareError) { + this.compareError = compareError; + } } public static class MergeSnapshotRsp extends AgentResponse { diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java index ea36ca8d56b..56848716185 100755 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHost.java @@ -1492,14 +1492,12 @@ public void fail(ErrorCode errorCode) { } private void handle(CompareCpuFunctionOnHostMsg msg) { - CompareCpuFunctionOnHostReply reply = new CompareCpuFunctionOnHostReply(); - thdf.singleFlightSubmit(new SingleFlightTask(msg) .setSyncSignature(String.format("compare-host-%s-cpu-function-xml-on-host-%s", msg.getSrcHostUuid(), msg.getDstHostUuid())) - .run((com) -> compareCpuFunctionOnHost(msg, new ReturnValueCompletion(com) { + .run((com) -> compareCpuFunctionOnHost(msg, new ReturnValueCompletion(com) { @Override - public void success(CompareCpuFunctionOnHostReply returnValue) { - com.success(returnValue); + public void success(VmCompareCpuFunctionResponse resp) { + com.success(resp); } @Override @@ -1508,14 +1506,20 @@ public void fail(ErrorCode errorCode) { } })) .done(((result) -> { + CompareCpuFunctionOnHostReply reply = new CompareCpuFunctionOnHostReply(); if (!result.isSuccess()) { reply.setError(result.getErrorCode()); + bus.reply(msg, reply); + return; } + VmCompareCpuFunctionResponse resp = (VmCompareCpuFunctionResponse)result.getResult(); + reply.setMatch(resp.isMatch()); + reply.setCompareError(resp.getCompareError()); bus.reply(msg, reply); }))); } - private void compareCpuFunctionOnHost(final CompareCpuFunctionOnHostMsg msg, ReturnValueCompletion completion) { + private void compareCpuFunctionOnHost(final CompareCpuFunctionOnHostMsg msg, ReturnValueCompletion completion) { VmCompareCpuFunctionCmd cmd = new VmCompareCpuFunctionCmd(); cmd.setCpuXml(msg.getCpuXml()); restf.asyncJsonPost(compareCpuFunctionPath, cmd, new JsonAsyncRESTCallback(completion) { @@ -1525,7 +1529,7 @@ public void success(VmCompareCpuFunctionResponse ret) { completion.fail(operr(ret.getError())); return; } - completion.success(new CompareCpuFunctionOnHostReply()); + completion.success(ret); } @Override