From 7d2d38c2f30ef96a06dc3ad387603f9a924a7270 Mon Sep 17 00:00:00 2001 From: Melvin Hillsman Date: Mon, 1 Jun 2026 11:20:34 -0500 Subject: [PATCH] docs: fix stale CGO, Go version, and structure references in README MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update README.md to reflect the SQLite driver migration from mattn/go-sqlite3 (CGO) to modernc.org/sqlite (pure Go) and other recent changes: - Go prerequisite 1.25+ → 1.26+ (matches go.mod and Dockerfile) - Remove CGO/glibc build claims; document Alpine + CGO_ENABLED=0 - Remove sqlite-libs runtime reference - Add --vm-concurrency flag to run flags table - Add orchestrator package to project structure tree - Move audit to Layer 1, add orchestrator to Layer 4 - Fix Dockerfile description from Debian to Alpine builder Resolves #170 Signed-off-by: Melvin Hillsman --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 86cc688..bf4b21b 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ virtwork and kube-burner solve adjacent but non-overlapping problems. kube-burne ## Prerequisites -- **Go**: 1.25+ (for building from source) +- **Go**: 1.26+ (for building from source) - **OpenShift**: 4.12+ with OpenShift Virtualization (CNV) installed - KubeVirt API v1.7.0+ compatible - CDI (Containerized Data Importer) v1.64.0+ compatible @@ -149,6 +149,7 @@ Flags: --ssh-password string SSH password for VMs --ssh-key strings SSH authorized key (repeatable) --ssh-key-file strings SSH key file path (repeatable) + --vm-concurrency int Max concurrent VM creation operations Global Flags: --namespace string Kubernetes namespace for VMs @@ -303,12 +304,11 @@ oc exec -it deploy/virtwork -- virtwork cleanup ### Building the Container Image ```bash -# Build (requires glibc — CGO is needed for SQLite) podman build -t quay.io/opdev/virtwork:latest . # The Dockerfile uses a multi-stage build: -# Stage 1: golang:1.25-bookworm (Debian) for CGO compilation -# Stage 2: ubi9/ubi-minimal for a minimal runtime with sqlite-libs +# Stage 1: golang:1.26-alpine for pure-Go compilation (CGO_ENABLED=0) +# Stage 2: ubi9/ubi-minimal for a minimal runtime ``` ## Architecture @@ -316,12 +316,12 @@ podman build -t quay.io/opdev/virtwork:latest . The codebase follows a strict layered architecture where each layer depends only on layers below it. ``` -Layer 4 — Orchestration cmd/virtwork, cleanup, audit +Layer 4 — Orchestration cmd/virtwork, orchestrator, cleanup Layer 3 — Workload Defs workloads (Workload + MultiVMWorkload interfaces, registry, cpu, memory, disk, database, network, tps, chaos-disk, chaos-network, chaos-process) Layer 2 — K8s Abstractions vm, resources, wait -Layer 1 — Infrastructure config, cluster, cloudinit, logging +Layer 1 — Infrastructure config, cluster, cloudinit, logging, audit Layer 0 — Definitions constants ``` @@ -344,6 +344,7 @@ virtwork/ │ ├── resources/ # Namespace + Service + Secret helpers │ ├── wait/ # VMI readiness polling │ ├── cleanup/ # Label-based teardown (VMs, Services, Secrets) +│ ├── orchestrator/ # Run + cleanup orchestration logic │ ├── audit/ # SQLite audit tracking (Auditor interface, schema, records) │ ├── workloads/ # Workload + MultiVMWorkload interfaces, 9 implementations, registry │ └── testutil/ # Shared test helpers for integration + E2E @@ -360,7 +361,7 @@ virtwork/ │ ├── secret.yaml │ ├── pvc.yaml │ └── deployment.yaml -├── Dockerfile # Multi-stage build (Debian builder + UBI9 runtime) +├── Dockerfile # Multi-stage build (Alpine builder + UBI9 runtime) ├── Dockerfile.ci # CI variant of the runtime image ├── entrypoint.sh # Container entrypoint (auto-run or sleep) ├── Makefile # CI targets (test, vet, lint, build, ci, verify)