## Do - ops resources: flag to choose bulk vs per-ns stats strategy, pluggable transport beyond podman exec - replace kubectl/crictl exec chains with podman API and client-go for cluster operations - Skip reapply option for resources already present, keyed by GVK + namespaced name - force-conflicts flag on server-side apply for configure (needs apply.go refactor) - StorageCluster configuration: expose key fields (sizing, device class, placement) as configure flags - Hub and spoke: multi-cluster topology with a hub managing spoke MicroShift clusters - Infrastructure configuration: node labeling, machine config, kernel module management - ODF Disaster Recovery: Regional-DR and Metro-DR using Ramen/ACM on MicroShift ## Done - Cluster lifecycle: create, start, stop, delete, list, exec, kubeconfig - LVM thin pool backend for TopoLVM with loop device, force cleanup of dm devices on delete - Podman network per cluster, IDMS mirror support with generated registries.conf and policy.json - ODF addon: install (shim CRDs/CRs/RBAC/oauth, catalog, subscriptions), configure, uninstall - ODF configure: SINGLE_NODE patch via jsonpath discovery, node labeling, resources/ applied - Shim and resource files numbered for predictable apply order - perms create/delete: sudoers for passwordless sudo including modprobe and install - addon odf modules load/unload: writes modules-load.d conf and loads/unloads rbd/ceph/nbd for current session - support.RunPrivileged/WritePrivileged: single OS-aware privileged execution abstraction - Custom network subnet via --network-subnet (default 172.20.0.0/24, avoids common VPN ranges) - Kubeconfig port rewrite: server URL updated to match --api-server-port after copy from container - docs command: CLI reference, examples, project skill, and hidden devlog - embedded examples document via --examples - ops resources (experimental): CPU/mem requests limits and live usage per container, per-ns totals, node summary, filterable by ns and node - MicroShift power tuning on create, opt-out via --no-power-tuning - ExposeKubeAPI: generate cert with all host IPs and hostname as SANs, merge all kubeconfigs into single file with multiple contexts per client - LoadBalancer services: node acting as load balancer working - cluster: test running multiple named clusters simultaneously to verify config dirs, networks, and loop devices don't collide - VM access: cluster running in a VM should be reachable from the local machine without manual kubeconfig or cert fixups - Overlayfs deadlock: fix kubeconfig copy race condition that triggers machine restart on rapid file access (antivirus was the issue) - Multus configuration: secondary network attachment for storage traffic isolation in various groups via VLANs - Network listing: show names of saved dfmicro bridge networks - Multi-node clusters: worker onboarding, readiness gating, and node slot reuse - Whereabouts IPAM: cluster-wide secondary network allocation across worker nodes - Build metadata and examples: UTC version timestamp and tested MicroShift image defaults - cluster peering for non-overlapping service and cluster ip ranges - cluster-specific route base domains under `.dfmicro.io` - ODF storage topologies: Rook Ceph provider with external consumer, and ODF provider with client-only consumer - Test suite levels 4-6: single-node ODF, external storage, and multi-node provider/client PVC read-write coverage