Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
4b3a682
fix: enhance IP address logging and verify tag reconciliation
casibbald Jan 6, 2026
28590b2
feat: add diagnostic script for missing resources
casibbald Jan 6, 2026
a87fda2
feat: Implement KEA DHCP event hoo
casibbald Jan 12, 2026
3e50e8d
chore(deps): bump node from 20-alpine to 25-alpine in /dockerfiles (#6)
dependabot[bot] Jan 12, 2026
0cc8796
docs(agents): link AGENTS.md to canonical desktop dev environment brief
casibbald Apr 20, 2026
61abfd4
Fixes for deployment
casibbald Jul 15, 2026
fd51006
scripts: fix kubectl exec PGPASSWORD, PostgreSQL discovery, and token…
casibbald Jul 15, 2026
660a7a8
fix(ip_address): skip status drift detection when address is inside I…
casibbald Jul 15, 2026
24a2447
feat(ipam): add IPPool and IPClaim CRDs with reconcilers
casibbald Jul 15, 2026
3f8dbe1
fix(ipam): use subnets() iterator, add ControllerError import, fix bo…
casibbald Jul 15, 2026
2d3304d
Add all background docs
casibbald Jul 15, 2026
f1a9995
fix(netbox-controller): handle populated IP ranges and fix controller…
casibbald Jul 15, 2026
0d84e33
chore: remove 8 dangling config files no longer used
casibbald Jul 15, 2026
fcf86ce
fix(dcops-ui): fix Dockerfile corepack failure and add Tilt live_update
casibbald Jul 15, 2026
ba8f444
feat(dcops-ui): add Dashboard SPA with K8s API integration
casibbald Jul 16, 2026
9ab2bbd
feat(dcops-ui): add Dashboard SPA with K8s API integration
casibbald Jul 16, 2026
255b03f
fix(Tiltfile): bind kubectl proxy to 0.0.0.0 so containers can reach it
casibbald Jul 16, 2026
c76c7d0
fix(dcops-ui): fix CRD discovery to query all dcops microgroups (netb…
casibbald Jul 16, 2026
ef3a410
fix(dcops-ui): use pre-aggregated summary.byCategory for chart data
casibbald Jul 16, 2026
6809f6e
feat(dcops-ui): separate docs and dashboard into independent Tilt res…
casibbald Jul 16, 2026
474bce6
feat(dcops): switch to Flux-driven deployment (Tilt builds only)
casibbald Jul 22, 2026
9fcacd2
feat(dcops): switch to Flux-driven deployment (Tilt builds only)
casibbald Jul 22, 2026
8817742
fix(dcops): split pxe-server build+image to eliminate build storm
casibbald Jul 22, 2026
6d20137
fix(dcops): unblock generate-crds from NetBox token dependency chain
casibbald Jul 22, 2026
01b9450
fix(dcops): decouple CRD generation from cluster operations to preven…
casibbald Jul 22, 2026
109f655
fix(dcops): fix pxe-server image-pxe-server buildstorm in Tilt by usi…
casibbald Jul 22, 2026
05677fd
fix(dcops): fix format string arg count for pxe-server image build
casibbald Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .agent/memory-bank/activeContext.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Active context placeholder
1 change: 1 addition & 0 deletions .agent/memory-bank/productContext.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Product context placeholder
1 change: 1 addition & 0 deletions .agent/memory-bank/progress.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Progress placeholder
1 change: 1 addition & 0 deletions .agent/memory-bank/projectbrief.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DCops Memory Bank initialized on $(date)
1 change: 1 addition & 0 deletions .agent/memory-bank/systemPatterns.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
System patterns placeholder
1 change: 1 addition & 0 deletions .agent/memory-bank/techContext.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Tech context placeholder
14 changes: 14 additions & 0 deletions .agent/session.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@


========================================
SESSION START: 2025-12-28 17:42:54
========================================
Project: DCops
User: casibbald
Shell: /bin/zsh
Working Directory: /Users/casibbald/Workspace/microscaler/DCops
Git Branch: main
Git Status: 3 uncommitted changes
Memory Bank Status: COMPLETE
========================================

2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ __pycache__/
*.pyc

reconciliation-differences.txt
.nfs.*
._*
33 changes: 33 additions & 0 deletions AGENT.md → AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,38 @@
# Agent Development Guidelines

> **Desktop dev environment** — before doing anything in this repo, read the
> Microscaler-wide topology brief. It explains that you are on a Mac but the
> code lives on `ms02` (NFS), where commands execute for this environment, how
> the Kind cluster and vLLM fit in, and the network constraints behind the SSH
> tunneling. Do not duplicate its contents here — link to it. If reality drifts,
> fix the canonical doc, not this copy.
>
> - GitHub: [`cylon-local-infra/docs/desktop-dev-environment.md`](https://github.com/microscaler/cylon-local-infra/blob/main/docs/desktop-dev-environment.md)
> - On ms02 NFS: `~/Workspace/microscaler/cylon-local-infra/docs/desktop-dev-environment.md`

---

## Shared Kind cluster (local dev)

DCops deploys to the **shared** Kind cluster (`kind-kind`), not a dedicated `kind-dcops` cluster.

| Item | Value |
|------|-------|
| Cluster | `kind` → context **`kind-kind`** |
| Registry | **`kind-registry`** on **`localhost:5001`** |
| Prerequisite repo | **`../shared-kind-cluster`** — `just cluster-create` or `just dev-up` |
| DCops namespaces | **`netbox`**, **`dcops-system`** |
| Tilt UI port | **10354** (`tilt-dcops.service`) |
| NetBox UI (Tilt forward) | **http://localhost:8011** |
| Kea Control Agent (Tilt forward) | **http://localhost:8010** |
| PXE HTTP (Tilt forward) | **http://localhost:8088** |

**Workflow:** `just verify-shared-kind` → `just dev-up` (or `just tilt-up`). **`just dev-down`** stops Tilt only — it does **not** delete the shared cluster.

Override checkout layout: `SHARED_KIND_CLUSTER_ROOT=/path/to/shared-kind-cluster`.

---

This document provides specific guidance for AI agents working on the DCops codebase, with **explicit modularization requirements** from the start.

## 🚨 CRITICAL: Check for Existing Helpers/Traits First
Expand Down
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ members = [
"controllers/pxe-intent",
"controllers/netbox",
"controllers/routeros",
"controllers/dhcp",
"crates/netbox-client",
"crates/routeros-client",
"crates/pxe-server",
Expand Down
16 changes: 13 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ DCops is a set of Kubernetes controllers that manage your physical infrastructur
- Prevent infinite boot loops and accidental reinstallations
- Safe cluster rebuilds without manual intervention

**📡 DHCP-managed leases (Kea)**
- Translate NetBox IP ranges and addresses into ISC Kea DHCP config
- MAC-keyed host reservations for stable leases — powers the Aether hypervisor's
"recover a VM, keep its IP" story ([contract](docs/AETHER_DCOPS_IPAM_CONTRACT.md))
- Populated ranges are managed by Kea, not tracked as individual NetBox IPs

**📊 Single Source of Truth**
- Git is your source of truth
- NetBox is your authoritative database
Expand Down Expand Up @@ -154,8 +160,10 @@ The easiest way to get started with DCops development is using our pre-configure

**What's Included:**
- ✅ Full Rust toolchain (stable, rustfmt, clippy, musl target)
- ✅ Docker-in-Docker for building images and running Kind clusters
- ✅ Kubernetes tools (kubectl, kind, Tilt)
- ✅ Docker-in-Docker for building images
- ✅ Kubernetes tools (kubectl, Tilt) — DCops deploys to a shared **k3s** cluster
(`shared-k8s`), driven by the [`Tiltfile`](./Tiltfile); the older Kind setup has
been removed
- ✅ Python 3 for project scripts
- ✅ Development tools (Just, cargo-nextest, cargo-llvm-cov, cargo-audit)

Expand All @@ -165,12 +173,14 @@ The easiest way to get started with DCops development is using our pre-configure
If you prefer a local development environment, ensure you have:
- Rust toolchain (see `rust-toolchain.toml`)
- Docker Desktop
- kubectl, kind, and Tilt installed
- kubectl and Tilt installed (NetBox runs against the shared cluster's Postgres/Redis in the `data` namespace)
- Python 3 for running project scripts

## Learn More

- **Contributing**: [CONTRIBUTING.md](CONTRIBUTING.md)
- **Aether hypervisor integration** (MAC-keyed DHCP reservations, populated ranges): [docs/AETHER_DCOPS_IPAM_CONTRACT.md](docs/AETHER_DCOPS_IPAM_CONTRACT.md)
- **Populated IP range handling** (NetBox constraint + implemented fix): [docs/NETBOX_IP_RANGE_ANALYSIS.md](docs/NETBOX_IP_RANGE_ANALYSIS.md)

---

Expand Down
Loading
Loading