From f0ebea5353373cb2e06db6a0b85467e3c6872d9b Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Fri, 14 Mar 2025 12:33:59 +0100 Subject: [PATCH 1/5] Use two digit numbers for VMs. --- dev-example/test-vm.tpl.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-example/test-vm.tpl.yaml b/dev-example/test-vm.tpl.yaml index b6aa65a..869c757 100644 --- a/dev-example/test-vm.tpl.yaml +++ b/dev-example/test-vm.tpl.yaml @@ -2,7 +2,7 @@ apiVersion: "vmoperator.jdrupes.org/v1" kind: VirtualMachine metadata: namespace: vmop-dev - name: test-vm<%= ${number} %> + name: test-vm<%= $(printf "%02d" ${number}) %> annotations: argocd.argoproj.io/sync-wave: "20" From 3a4404b758f28b0332a4690e6310e881df465bd2 Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Fri, 14 Mar 2025 16:57:58 +0100 Subject: [PATCH 2/5] Add runner version to status. --- deploy/crds/vms-crd.yaml | 4 ++++ .../src/org/jdrupes/vmoperator/common/Constants.java | 3 +++ .../src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/deploy/crds/vms-crd.yaml b/deploy/crds/vms-crd.yaml index 101784f..c2a7a66 100644 --- a/deploy/crds/vms-crd.yaml +++ b/deploy/crds/vms-crd.yaml @@ -1470,6 +1470,10 @@ spec: type: object default: {} properties: + runnerVersion: + description: >- + The version string of the runner. + type: string cpus: description: >- Number of CPUs currently in use. diff --git a/org.jdrupes.vmoperator.common/src/org/jdrupes/vmoperator/common/Constants.java b/org.jdrupes.vmoperator.common/src/org/jdrupes/vmoperator/common/Constants.java index 83b261e..67939de 100644 --- a/org.jdrupes.vmoperator.common/src/org/jdrupes/vmoperator/common/Constants.java +++ b/org.jdrupes.vmoperator.common/src/org/jdrupes/vmoperator/common/Constants.java @@ -50,6 +50,9 @@ public class Constants { * Status related constants. */ public static class Status { + /** The Constant RUNNER_VERSION. */ + public static final String RUNNER_VERSION = "runnerVersion"; + /** The Constant CPUS. */ public static final String CPUS = "cpus"; diff --git a/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java b/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java index b1580ae..bd4ddb4 100644 --- a/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java +++ b/org.jdrupes.vmoperator.runner.qemu/src/org/jdrupes/vmoperator/runner/qemu/StatusUpdater.java @@ -31,6 +31,7 @@ import io.kubernetes.client.openapi.JSON; import io.kubernetes.client.openapi.models.EventsV1Event; import java.io.IOException; import java.math.BigDecimal; +import java.util.Optional; import java.util.logging.Level; import static org.jdrupes.vmoperator.common.Constants.APP_NAME; import org.jdrupes.vmoperator.common.Constants.Crd; @@ -124,6 +125,9 @@ public class StatusUpdater extends VmDefUpdater { observedGeneration = vmDef.getMetadata().getGeneration(); vmStub.updateStatus(from -> { JsonObject status = from.statusJson(); + status.addProperty(Status.RUNNER_VERSION, Optional.ofNullable( + Runner.class.getPackage().getImplementationVersion()) + .orElse("(unknown)")); status.remove(Status.LOGGED_IN_USER); return status; }); From ba582d877e91fe738d83f3c55ed0caae45bd3be3 Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Fri, 14 Mar 2025 17:52:25 +0100 Subject: [PATCH 3/5] Display runner version in GUI. --- .../vmoperator/vmmgmt/VmMgmt-view.ftl.html | 19 ++++++++++--------- .../jdrupes/vmoperator/vmmgmt/l10n.properties | 2 ++ .../vmoperator/vmmgmt/l10n_de.properties | 2 ++ .../vmmgmt/browser/VmMgmt-style.scss | 8 +++++++- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/VmMgmt-view.ftl.html b/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/VmMgmt-view.ftl.html index 533b2f4..5a28cb8 100644 --- a/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/VmMgmt-view.ftl.html +++ b/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/VmMgmt-view.ftl.html @@ -127,15 +127,16 @@ >{{ cic.error }} - - - - - - - - -
{{ entry.status?.osinfo?.["pretty-name"] || "" }}
{{ localize("usedFrom") }}{{ entry.usedFrom }}
+

+ + + +

diff --git a/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n.properties b/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n.properties index fb0362f..ef55662 100644 --- a/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n.properties +++ b/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n.properties @@ -5,12 +5,14 @@ VMsSummary = VMs (running/total) assignedTo = Assigned to currentCpus = Current CPUs currentRam = Current RAM +guestOs = Guest OS maximumCpus = Maximum CPUs maximumRam = Maximum RAM notInUse = Currently closed nodeName = Node requestedCpus = Requested CPUs requestedRam = Requested RAM +runnerVersion = Runner version running = Running since = Since usedBy = Used by diff --git a/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n_de.properties b/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n_de.properties index a9b9600..b8ece92 100644 --- a/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n_de.properties +++ b/org.jdrupes.vmoperator.vmmgmt/resources/org/jdrupes/vmoperator/vmmgmt/l10n_de.properties @@ -9,12 +9,14 @@ Last\ day = Letzter Tag assignedTo = Zugewiesen an currentCpus = Aktuelle CPUs currentRam = Akuelles RAM +guestOs = Gast BS maximumCpus = Maximale CPUs maximumRam = Maximales RAM nodeName = Knoten notInUse = Derzeit geschlossen requestedCpus = Angeforderte CPUs requestedRam = Angefordertes RAM +runnerVersion = Runner-Version running = Gestartet since = Seit usedBy = Benutzt durch diff --git a/org.jdrupes.vmoperator.vmmgmt/src/org/jdrupes/vmoperator/vmmgmt/browser/VmMgmt-style.scss b/org.jdrupes.vmoperator.vmmgmt/src/org/jdrupes/vmoperator/vmmgmt/browser/VmMgmt-style.scss index 248df56..eb1b556 100644 --- a/org.jdrupes.vmoperator.vmmgmt/src/org/jdrupes/vmoperator/vmmgmt/browser/VmMgmt-style.scss +++ b/org.jdrupes.vmoperator.vmmgmt/src/org/jdrupes/vmoperator/vmmgmt/browser/VmMgmt-style.scss @@ -82,7 +82,7 @@ padding-left: 0; table { - display: inline; + display: inline-block; td:nth-child(2) { min-width: 7em; @@ -97,6 +97,12 @@ color: var(--danger); } } + + p { + display: inline-block; + margin: 0.25rem 0.5rem 0.25rem 0.5rem; + vertical-align: top; + } } } From 8bc413b2da5491b570d5426f735061b9106942cd Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Fri, 14 Mar 2025 18:37:05 +0100 Subject: [PATCH 4/5] Update templates when testing. --- dev-example/test-vm.tpl.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dev-example/test-vm.tpl.yaml b/dev-example/test-vm.tpl.yaml index 869c757..76adfba 100644 --- a/dev-example/test-vm.tpl.yaml +++ b/dev-example/test-vm.tpl.yaml @@ -13,6 +13,9 @@ spec: # source: docker-registry.lan.mnl.de/vmoperator/org.jdrupes.vmoperator.runner.qemu-arch:latest pullPolicy: Always + runnerTemplate: + update: true + permissions: - role: admin may: From 197c21bc324bf7dfbcd6b9b9766f881fe224d352 Mon Sep 17 00:00:00 2001 From: "Michael N. Lipp" Date: Fri, 14 Mar 2025 18:37:43 +0100 Subject: [PATCH 5/5] More consistent logging. --- .../src/org/jdrupes/vmoperator/manager/AbstractMonitor.java | 3 +++ .../src/org/jdrupes/vmoperator/manager/PodReconciler.java | 1 + .../src/org/jdrupes/vmoperator/manager/Reconciler.java | 2 -- .../src/org/jdrupes/vmoperator/manager/VmMonitor.java | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/AbstractMonitor.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/AbstractMonitor.java index 2deb9ab..56440f9 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/AbstractMonitor.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/AbstractMonitor.java @@ -220,6 +220,9 @@ public abstract class AbstractMonitor(objectClass, objectListClass, client, K8s.preferred(context, version), namespace, options) .handler((c, r) -> { + logger.fine(() -> "Resource " + context.getKind() + + "/" + r.object.getMetadata().getName() + " " + + r.type); handleChange(c, r); }).onTerminated((o, t) -> { if (observerCounter.decrementAndGet() == 0) { diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/PodReconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/PodReconciler.java index 4ee96d8..c3ab422 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/PodReconciler.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/PodReconciler.java @@ -91,6 +91,7 @@ import org.yaml.snakeyaml.constructor.SafeConstructor; } // Create pod. First combine template and data and parse result + logger.fine(() -> "Create/update pod " + podStub.name()); var fmTemplate = fmConfig.getTemplate("runnerPod.ftl.yaml"); StringWriter out = new StringWriter(); fmTemplate.process(model, out); diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java index 700e068..77fa281 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/Reconciler.java @@ -215,8 +215,6 @@ public class Reconciler extends Component { throws ApiException, TemplateException, IOException { // Ownership relationships takes care of deletions if (event.type() == K8sObserver.ResponseType.DELETED) { - logger.fine( - () -> "VM \"" + event.vmDefinition().name() + "\" deleted"); return; } diff --git a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmMonitor.java b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmMonitor.java index 1a559b3..e4ee0a0 100644 --- a/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmMonitor.java +++ b/org.jdrupes.vmoperator.manager/src/org/jdrupes/vmoperator/manager/VmMonitor.java @@ -205,13 +205,13 @@ public class VmMonitor extends = K8sV1PodStub.list(client, namespace(), podSearch); for (var podStub : podList) { var nodeName = podStub.model().get().getSpec().getNodeName(); - logger.fine(() -> "Adding node name " + nodeName + logger.finer(() -> "Adding node name " + nodeName + " to VM info for " + vmDef.name()); @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") var addrs = new ArrayList(); podStub.model().get().getStatus().getPodIPs().stream() .map(ip -> ip.getIp()).forEach(addrs::add); - logger.fine(() -> "Adding node addresses " + addrs + logger.finer(() -> "Adding node addresses " + addrs + " to VM info for " + vmDef.name()); extra.nodeInfo(nodeName, addrs); }