Skip to content

Commit b012c35

Browse files
author
Zhang Wenhao
committed
<feature>[kvm]: refactor VmHostFileTO to support different operations
Split fileFormat into format and operation fields. format only supports Raw and TarballGzip, operation supports Write, Prepare, and Delete. This allows better control over VM host file operations. Related: ZSV-11310 Change-Id: I7074677a656969746d6d71736f6d6d6e62627866
1 parent 250163f commit b012c35

3 files changed

Lines changed: 27 additions & 8 deletions

File tree

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.zstack.header.vm.additions;
2+
3+
public enum VmHostFileOperation {
4+
Write,
5+
Prepare,
6+
Delete,
7+
}

plugin/kvm/src/main/java/org/zstack/kvm/KVMAgentCommands.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.zstack.header.host.VmNicRedirectConfig;
1212
import org.zstack.header.log.NoLogging;
1313
import org.zstack.header.vm.*;
14-
import org.zstack.header.vm.additions.VmHostFileContentFormat;
1514
import org.zstack.header.vm.devices.DeviceAddress;
1615
import org.zstack.header.vm.devices.VirtualDeviceInfo;
1716
import org.zstack.kvm.tpm.TpmTO;
@@ -2824,22 +2823,25 @@ public static class StartVmResponse extends VmDevicesInfoResponse {
28242823
}
28252824

28262825
public static class VmHostFileTO {
2827-
public static final String FORMAT_PREPARE_ONLY = "PrepareOnly";
2828-
28292826
private String path;
28302827
/**
28312828
* maybe "NvRam" or "TpmState" ...
28322829
* @see org.zstack.header.vm.additions.VmHostFileType
28332830
*/
28342831
private String type;
28352832
/**
2836-
* maybe "Simple" or "TarballGzip"
2837-
* if prepare only, use {@link #FORMAT_PREPARE_ONLY}
2838-
* @see VmHostFileContentFormat
2833+
* file format: Raw or TarballGzip
2834+
* @see org.zstack.header.vm.additions.VmHostFileContentFormat
28392835
*/
28402836
private String fileFormat;
28412837
/**
2842-
* null if fileFormat is {@link #FORMAT_PREPARE_ONLY}
2838+
* operation: Write, Prepare, or Delete
2839+
* only use in WriteVmHostFileContentCmd
2840+
* @see org.zstack.header.vm.additions.VmHostFileOperation
2841+
*/
2842+
private String operation;
2843+
/**
2844+
* null if operation is Prepare or Delete
28432845
*/
28442846
@NoLogging
28452847
private String contentBase64;
@@ -2869,6 +2871,14 @@ public void setFileFormat(String fileFormat) {
28692871
this.fileFormat = fileFormat;
28702872
}
28712873

2874+
public String getOperation() {
2875+
return operation;
2876+
}
2877+
2878+
public void setOperation(String operation) {
2879+
this.operation = operation;
2880+
}
2881+
28722882
public String getContentBase64() {
28732883
return contentBase64;
28742884
}

plugin/kvm/src/main/java/org/zstack/kvm/efi/KvmSecureBootExtensions.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.zstack.header.vm.additions.VmHostBackupFileVO_;
4141
import org.zstack.header.vm.additions.VmHostFileContentVO;
4242
import org.zstack.header.vm.additions.VmHostFileContentVO_;
43+
import org.zstack.header.vm.additions.VmHostFileOperation;
4344
import org.zstack.header.vm.additions.VmHostFileType;
4445
import org.zstack.header.vm.additions.VmHostFileVO;
4546
import org.zstack.header.vm.additions.VmHostFileVO_;
@@ -196,7 +197,7 @@ public void preVmMigration(VmInstanceInventory vm, VmMigrationType type, String
196197
VmHostFileTO to = new VmHostFileTO();
197198
to.setPath(buildNvramFilePath(vm.getUuid()));
198199
to.setType(VmHostFileType.NvRam.toString());
199-
to.setFileFormat(VmHostFileTO.FORMAT_PREPARE_ONLY);
200+
to.setOperation(VmHostFileOperation.Prepare.toString());
200201

201202
RewriteVmHostFilesContext context = new RewriteVmHostFilesContext();
202203
context.hostUuid = dstHostUuid;
@@ -466,6 +467,7 @@ public void run(FlowTrigger trigger, Map data) {
466467
to.setPath(context.path);
467468
to.setType(context.type.toString());
468469
to.setFileFormat(content.getFormat().toString());
470+
to.setOperation(VmHostFileOperation.Write.toString());
469471

470472
String contentBase64 = Base64.getEncoder().encodeToString(content.getContent());
471473
to.setContentBase64(contentBase64);

0 commit comments

Comments
 (0)