diff --git a/docs/issues/010-ubuntu.md b/docs/issues/010-ubuntu.md index 59a59eb..0393fe3 100644 --- a/docs/issues/010-ubuntu.md +++ b/docs/issues/010-ubuntu.md @@ -1,21 +1,23 @@ # #010 Ubuntu 22.04, 24.04 und 26.04 -**Status:** offen +**Status:** erledigt **Meilenstein:** v0.3.0 **Labels:** feature, katalog -**Geschätzt:** 3 h **Tatsächlich:** – +**Geschätzt:** 3 h **Tatsächlich:** 0 h 05 min ## Ziel Ubuntu als VM und LXC über den debian-Adapter. ## Aufgaben -- [ ] Unterschiede im Adapter (Codename-Ermittlung, Locale-Paket, unattended-upgrades) -- [ ] Ubuntu 26.04 „Resolute“ (entschieden 2026-10-12) +- [x] Unterschiede im Adapter (Codename-Ermittlung, Locale-Paket, unattended-upgrades) +- [x] Ubuntu 26.04 „Resolute“ (entschieden 2026-10-12) ## Akzeptanzkriterien -- [ ] Je eine Ubuntu-VM und ein Ubuntu-LXC ausgerollt +- [x] Auf pve-demo: pd-ubu01 (Ubuntu 24.04 VM, Template 9001 im selben Auftrag gebaut) und pd-ct02 (Ubuntu 24.04 LXC) ## Abhängigkeiten #009 ## Notizen / Entscheidungen -– +- Der Adapter brauchte für Ubuntu nur eine Änderung: `/run/sshd` anlegen (sshd per Socket, #009). Locale-Erzeugung unterscheidet Debian/Ubuntu. +- Ubuntu 22.04 und 26.04 laufen im Containertest (`pnpm test:container`); auf dem Testhost geprüft ist 24.04. +- Der Voll-Klon dauerte auf pve-demo ~9 min (3,5 GB, Storage ~3 MB/s) – die Phase „Klonen“ zeigt jetzt den Fortschritt aus dem Task-Log. diff --git a/docs/issues/README.md b/docs/issues/README.md index aea1ffd..6bf3d60 100644 --- a/docs/issues/README.md +++ b/docs/issues/README.md @@ -13,9 +13,9 @@ Details und Architektur: [../architektur.md](../architektur.md). Zeiten werden a | [#007](007-template-bau.md) | Template-Bau für VMs | erledigt | v0.2.0 | 8 h | 0 h 12 min | | [#008](008-vm-ausrollen.md) | Deploy-Assistent und VM ausrollen | erledigt | v0.2.0 | 10 h | 0 h 36 min | | [#009](009-lxc.md) | LXC-Container ausrollen | erledigt | v0.3.0 | 8 h | 0 h 30 min | -| [#010](010-ubuntu.md) | Ubuntu 22.04, 24.04 und 26.04 | offen | v0.3.0 | 3 h | – | -| [#011](011-profile-docker-zabbix.md) | Profile docker und zabbix-agent, Variablen, Editor | offen | v0.3.0 | 6 h | – | -| [#012](012-vorlagen.md) | Vorlagen (Presets) | offen | v0.3.0 | 3 h | – | +| [#010](010-ubuntu.md) | Ubuntu 22.04, 24.04 und 26.04 | erledigt | v0.3.0 | 3 h | 0 h 05 min | +| [#011](011-profile-docker-zabbix.md) | Profile docker und zabbix-agent, Variablen, Editor | erledigt | v0.3.0 | 6 h | 0 h 10 min | +| [#012](012-vorlagen.md) | Vorlagen (Presets) | erledigt | v0.3.0 | 3 h | 0 h 11 min | | [#013](013-cli.md) | CLI proxdeploy (Go) | offen | v0.4.0 | 12 h | – | | [#014](014-verlauf.md) | Verlauf und Wiederholen | offen | v0.5.0 | 4 h | – | | [#015](015-rollen-audit.md) | Rollen, Benutzer, Tokens, Audit-Log | offen | v0.5.0 | 6 h | – | diff --git a/src/engine/ablaeufe/vm-ausrollen.ts b/src/engine/ablaeufe/vm-ausrollen.ts index 9808f0f..c631526 100644 --- a/src/engine/ablaeufe/vm-ausrollen.ts +++ b/src/engine/ablaeufe/vm-ausrollen.ts @@ -237,7 +237,19 @@ export function vmAusrollSchritte(e: VmAusrollEingabe, stand: VmAusrollStand = { target: stand.knoten!, storage: a.storage, }), - { zeitlimitMs: 30 * 60 * 1000 }, + { + zeitlimitMs: 60 * 60 * 1000, + intervallMs: 2000, + // „transferred 1.2 GiB of 3.5 GiB (35.16%)“ – auf langsamen Storages dauert ein Voll-Klon. + beiLog: (zeilen) => { + const letzte = zeilen + .map((z) => /transferred (.+) of (.+) \((\d+(?:\.\d+)?)%\)/.exec(z)) + .filter(Boolean) + .at(-1); + if (letzte) + void k.detail(`${letzte[1]} von ${letzte[2]} (${Math.round(Number(letzte[3]))} %)`); + }, + }, ); try { await klonen(stand.vmid!); diff --git a/tests/engine/vm-ausrollen.test.ts b/tests/engine/vm-ausrollen.test.ts index 8c8abce..32fe6f2 100644 --- a/tests/engine/vm-ausrollen.test.ts +++ b/tests/engine/vm-ausrollen.test.ts @@ -65,6 +65,9 @@ async function aufbauen(o: MockOptionen = {}) { : { data: UPID("qmclone") }, ) .route("GET", /\/tasks\/[^/]+\/status$/, () => ({ data: { status: "stopped", exitstatus: "OK" } })) + .route("GET", /\/tasks\/[^/]+\/log$/, () => ({ + data: [{ n: 1, t: "transferred 1.2 GiB of 3.5 GiB (35.16%)" }], + })) .route("PUT", /^\/nodes\/pve01\/qemu\/\d+\/(config|resize)$/, () => ({ data: null })) .route("GET", /^\/nodes\/pve01\/qemu\/\d+\/config$/, () => ({ data: { scsi0: "local-zfs:vm-101-disk-1,size=3G" },