Skip to content

Commit

Permalink
Add Qemu Guest Agent commands as Enum
Browse files Browse the repository at this point in the history
  • Loading branch information
wido committed Nov 24, 2015
1 parent d6bedd1 commit 1ff76ed
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 11 deletions.
75 changes: 65 additions & 10 deletions src/main/java/org/libvirt/qemu/QemuCommand.java
@@ -1,31 +1,86 @@
package org.libvirt.qemu;

import java.lang.IllegalArgumentException;

public class QemuCommand {
String command;

public enum Command {

GUEST_INFO("guest-info", false),
GUEST_SYNC_DELIMITED("guest-sync-delimited", true),
GUEST_SYNC("guest-sync", true),
GUEST_PING("guest-ping", false),
GUEST_GET_TIME("guest-get-time", false),
GUEST_SET_TIME("guest-set-time", true),
GUEST_SHUTDOWN("guest-shutdown", false),
GUEST_FILE_OPEN("guest-file-open", true),
GUEST_FILE_CLOSE("guest-file-close", true),
GUEST_FILE_READ("guest-file-read", true),
GUEST_FILE_WRITE("guest-file-write", true),
GUEST_FILE_SEEK("guest-file-seek", true),
GUEST_FILE_FLUSH("guest-file-flush", true),
GUEST_FSFREEZE_STATUS("guest-fsfreeze-status", false),
GUEST_FSFREEZE_FREEZE("guest-fsfreeze-freeze", false),
GUEST_FSFREEZE_LIST("guest-fsfreeze-freeze-list", true),
GUEST_FSFREEZE_THAW("guest-fsfreeze-thaw", false),
GUEST_FSTRIM("guest-fstrim", true),
GUEST_SUSPEND_DISK("guest-suspend-disk", false),
GUEST_SUSPEND_RAM("guest-suspend-ram", false),
GUEST_SUSPEND_HYBRID("guest-suspend-hybrid", false),
GUEST_GET_NETWORK_INTERFACES("guest-network-get-interfaces", false),
GUEST_GET_VCPUS("guest-get-vcpus", false),
GUEST_SET_VCPUS("guest-set-vcpus", true),
GUEST_GET_FSINFO("guest-get-fsinfo", false),
GUEST_SET_USER_PASSWORD("guest-set-user-password", true),
GUEST_GET_MEMORY_BLOCKS("guest-get-memory-blocks", false),
GUEST_SET_MEMORY_BLOCKS("guest-set-memory-blocks", true),
GUEST_GET_MEMORY_BLOCK_INFO("guest-get-memory-block-info", false),
GUEST_EXEC_STATUS("guest-exec-status", false),
GUEST_EXEC("guest-exec", true);

private final String command;
private final Boolean requiresArguments;

Command(String command, Boolean requiresArguments) {
this.command = command;
this.requiresArguments = requiresArguments;
}

private String getCommand() {
return command;
}

private Boolean requiresArguments() {
return requiresArguments;
}
}

Command command;
String arguments;

public static QemuCommand create(String cmd) {
return new QemuCommand(cmd);
public static QemuCommand create(Command cmd) {
return new QemuCommand(cmd, null);
}

public static QemuCommand create(String cmd, String args) {
public static QemuCommand create(Command cmd, String args) {
return new QemuCommand(cmd, args);
}

private QemuCommand(String command, String arguments) {
private QemuCommand(Command command, String arguments) {
this.command = command;
this.arguments = arguments;
}

private QemuCommand(String command) {
this.command = command;
if (command.requiresArguments() && arguments == null) {
throw new IllegalArgumentException(command.getCommand() + " requires a argument");
}

this.arguments = arguments;
}

public String toString() {
String json = "";

json += "{";
json += "\"execute\": \"" + command + "\"";
json += "\"execute\": \"" + command.getCommand() + "\"";

if (arguments != null && arguments.length() > 0) {
json += "\"arguments\": " + arguments + "\"";
Expand Down
2 changes: 1 addition & 1 deletion src/test/java/org/libvirt/qemu/TestQemuCommand.java
Expand Up @@ -5,7 +5,7 @@
public final class TestQemuCommand extends TestCase {

public void testCommandWithoutArguments() {
QemuCommand command = QemuCommand.create("guest-info");
QemuCommand command = QemuCommand.create(QemuCommand.Command.GUEST_INFO);
assertEquals("{\"execute\": \"guest-info\"}", command.toString());
}
}

0 comments on commit 1ff76ed

Please sign in to comment.