Move code to agent.

This commit is contained in:
Michael Lipp 2025-03-12 15:04:03 +01:00
parent 68a688c4ce
commit 19968ab73e
2 changed files with 34 additions and 37 deletions

View file

@ -20,6 +20,7 @@ package org.jdrupes.vmoperator.runner.qemu;
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import org.jdrupes.vmoperator.runner.qemu.events.VserportChangeEvent;
import org.jgrapes.core.Channel;
import org.jgrapes.core.annotation.Handler;
@ -52,12 +53,36 @@ public abstract class AgentConnector extends QemuConnector {
* for the {@link ConfigurationUpdate} event. The values are
* forwarded from the {@link Runner} instead.
*
* @param channelId the channel id
* @param socketPath the socket path
* @param command the command
* @param chardev the chardev
*/
/* default */ void configure(String channelId, Path socketPath) {
@SuppressWarnings("PMD.CognitiveComplexity")
protected void configure(List<String> command, String chardev) {
Path socketPath = null;
for (var arg : command) {
if (arg.startsWith("virtserialport,")
&& arg.contains("chardev=" + chardev)) {
for (var prop : arg.split(",")) {
if (prop.startsWith("id=")) {
channelId = prop.substring(3);
}
}
}
if (arg.startsWith("socket,")
&& arg.contains("id=" + chardev)) {
for (var prop : arg.split(",")) {
if (prop.startsWith("path=")) {
socketPath = Path.of(prop.substring(5));
}
}
}
}
if (channelId == null || socketPath == null) {
logger.warning(() -> "Definition of chardev " + chardev
+ " missing in runner template.");
return;
}
super.configure(socketPath);
this.channelId = channelId;
logger.fine(() -> getClass().getSimpleName() + " configured with"
+ " channelId=" + channelId);
}

View file

@ -192,7 +192,7 @@ import org.jgrapes.util.events.WatchFile;
*/
@SuppressWarnings({ "PMD.ExcessiveImports", "PMD.AvoidPrintStackTrace",
"PMD.DataflowAnomalyAnalysis", "PMD.TooManyMethods",
"PMD.CouplingBetweenObjects", "PMD.TooManyFields", "PMD.GodClass" })
"PMD.CouplingBetweenObjects", "PMD.TooManyFields" })
public class Runner extends Component {
private static final String QEMU = "qemu";
@ -362,8 +362,10 @@ public class Runner extends Component {
// Forward some values to child components
qemuMonitor.configure(initialConfig.monitorSocket,
initialConfig.vm.powerdownTimeout);
configureAgentClient(guestAgentClient, "guest-agent-socket");
configureAgentClient(vmopAgentClient, "vmop-agent-socket");
guestAgentClient.configure(qemuDefinition.command,
"guest-agent-socket");
vmopAgentClient.configure(qemuDefinition.command,
"vmop-agent-socket");
} catch (IllegalArgumentException | IOException | TemplateException e) {
logger.log(Level.SEVERE, e, () -> "Invalid configuration: "
+ e.getMessage());
@ -486,36 +488,6 @@ public class Runner extends Component {
}
}
@SuppressWarnings("PMD.CognitiveComplexity")
private void configureAgentClient(AgentConnector client, String chardev) {
String id = null;
Path path = null;
for (var arg : qemuDefinition.command) {
if (arg.startsWith("virtserialport,")
&& arg.contains("chardev=" + chardev)) {
for (var prop : arg.split(",")) {
if (prop.startsWith("id=")) {
id = prop.substring(3);
}
}
}
if (arg.startsWith("socket,")
&& arg.contains("id=" + chardev)) {
for (var prop : arg.split(",")) {
if (prop.startsWith("path=")) {
path = Path.of(prop.substring(5));
}
}
}
}
if (id == null || path == null) {
logger.warning(() -> "Definition of chardev " + chardev
+ " missing in runner template.");
return;
}
client.configure(id, path);
}
/**
* Handle the started event.
*