Set balloon on startup.

This commit is contained in:
Michael Lipp 2023-06-11 13:14:48 +02:00
parent 15e83c082e
commit 3587e91150
2 changed files with 18 additions and 3 deletions

View file

@ -68,7 +68,9 @@ public class QemuMonitor extends Component {
@SuppressWarnings("PMD.UseConcurrentHashMap") @SuppressWarnings("PMD.UseConcurrentHashMap")
private final Map<String, String> monitorMessages = new HashMap<>(Map.of( private final Map<String, String> monitorMessages = new HashMap<>(Map.of(
"connect", "{ \"execute\": \"qmp_capabilities\" }", "connect", "{ \"execute\": \"qmp_capabilities\" }",
"powerdown", "{ \"execute\": \"system_powerdown\" }")); "powerdown", "{ \"execute\": \"system_powerdown\" }",
"setBalloon", "{ \"execute\": \"balloon\", \"arguments\": "
+ "{ \"value\": %d } }"));
private Path socketPath; private Path socketPath;
private int powerdownTimeout; private int powerdownTimeout;
@ -185,6 +187,16 @@ public class QemuMonitor extends Component {
}); });
} }
/**
* Sets the current ram.
*
* @param amount the new current ram
*/
public void setCurrentRam(Number amount) {
writeToMonitor(
String.format(monitorMessages.get("setBalloon"), amount));
}
/** /**
* Handle data from qemu monitor connection. * Handle data from qemu monitor connection.
* *

View file

@ -108,7 +108,7 @@ import org.jgrapes.util.events.WatchFile;
* qemu --> monitor : FileChanged[monitor socket created] * qemu --> monitor : FileChanged[monitor socket created]
* *
* monitor: entry/fire OpenSocketConnection * monitor: entry/fire OpenSocketConnection
* monitor --> success: ClientConnected[for monitor] * monitor --> success: ClientConnected[for monitor]/set balloon value
* monitor -> error: ConnectError[for monitor] * monitor -> error: ConnectError[for monitor]
* } * }
* *
@ -129,7 +129,7 @@ import org.jgrapes.util.events.WatchFile;
* *
* qemuPowerdown: entry/suspend Stop, send powerdown to qemu, start timer * qemuPowerdown: entry/suspend Stop, send powerdown to qemu, start timer
* *
* qemuPowerdown --> terminateProcesses: Closed[for monitor]/resume Stop * qemuPowerdown --> terminateProcesses: Closed[for monitor]/resume Stop,\ncancel Timer
* qemuPowerdown --> terminateProcesses: Timeout/resume Stop * qemuPowerdown --> terminateProcesses: Timeout/resume Stop
* terminateProcesses --> terminated * terminateProcesses --> terminated
* } * }
@ -445,6 +445,9 @@ public class Runner extends Component {
*/ */
@Handler @Handler
public void onQemuMonitorOpened(QemuMonitorOpened event) { public void onQemuMonitorOpened(QemuMonitorOpened event) {
Optional.ofNullable(config.vm.currentRam)
.map(Configuration::parseMemory)
.ifPresent(qemuMonitor::setCurrentRam);
state.set(State.RUNNING); state.set(State.RUNNING);
} }