diff --git a/README.md b/README.md index 7720482..da8d66b 100644 --- a/README.md +++ b/README.md @@ -29,32 +29,32 @@ Think `terraform plan` and `terraform apply`, but for your network fabric — po │ Webhook / Polling ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ -│ ORCHESTRATION LAYER (PREFECT) │ -│ │ +│ ORCHESTRATION LAYER (PREFECT) │ +│ │ │ ┌────────────────────────────────────────────────────────────────────────┐ │ -│ │ Prefect Flows (Python) │ │ +│ │ Prefect Flows (Python) │ │ │ │ ┌───────────────────┐ ┌───────────────────┐ ┌─────────────────────┐ │ │ │ │ │ fabric_reconcile │ │ handle_drift │ │ drift_remediation │ │ │ │ │ │ (plan/apply) │ │ (subscribe) │ │ (auto-fix) │ │ │ │ │ └───────────────────┘ └───────────────────┘ └─────────────────────┘ │ │ │ └────────────────────────────────────────────────────────────────────────┘ │ -│ │ +│ │ │ ┌────────────────────────────────────────────────────────────────────────┐ │ -│ │ Prefect Tasks (Python) │ │ +│ │ Prefect Tasks (Python) │ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────────────┐ │ │ │ │ │ Intent Parser │ │ Diff Engine │ │ gNMI Client │ │ │ │ │ │ (NetBox→YANG) │ │ (Want vs Have) │ │ (pygnmi wrapper) │ │ │ │ │ └─────────────────┘ └─────────────────┘ └───────────────────────┘ │ │ │ └────────────────────────────────────────────────────────────────────────┘ │ -│ │ +│ │ │ ┌────────────────────────────────────────────────────────────────────────┐ │ │ │ FastAPI Webhook Receiver │ Prefect .serve() │ Prefect Server (UI) │ │ │ └────────────────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────────────┘ - │ gNMI Get/Set/Subscribe - ▼ + │ gNMI Get/Set/Subscribe + ▼ ┌──────────────────────────────────────────────────────────────────────────────┐ -│ DEVICE LAYER │ +│ DEVICE LAYER │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ spine1 │ │ spine2 │ │ leaf1 │ │ leaf2 │ ... │ │ │ gNMI:6030 │ │ gNMI:6030 │ │ gNMI:6030 │ │ gNMI:6030 │ │ @@ -77,16 +77,6 @@ We chose [Prefect](https://prefect.io) as the orchestration engine for several r | **Retry & error handling** | Built-in retry policies with `@task(retries=3)` | | **Human-in-the-loop** | Native `pause_flow_run()` for approval workflows | -### Kestra vs Prefect Comparison - -| Aspect | Kestra | Prefect | -|--------|--------|---------| -| **Workflow definition** | YAML external files | Python code (`@flow`, `@task`) | -| **Secrets management** | ❌ Paid in OSS | ✅ Free (`Secret` blocks) | -| **Code packaging** | Container required | Not required | -| **Integration** | Isolated scripts | Native Python integration | -| **Webhooks** | Built-in triggers | FastAPI + `run_deployment()` | - ## 🎯 Target Fabric This project is designed for the Arista EVPN-VXLAN ContainerLab topology: @@ -342,4 +332,4 @@ if __name__ == "__main__": --- -**Status**: 🚧 Active Development - Migrating to Prefect orchestration (Phase 4) +**Status**: 🚧 Active Development - Phase 2 (Core Components) & Phase 4 (Prefect Integration)