docs: Update README - remove Kestra comparison, update status
- Remove "Kestra vs Prefect Comparison" section (decision made) - Update project status to reflect current phase - Simplify "Why Prefect?" section - Clean up architecture diagram formatting
This commit is contained in:
30
README.md
30
README.md
@@ -29,32 +29,32 @@ Think `terraform plan` and `terraform apply`, but for your network fabric — po
|
|||||||
│ Webhook / Polling
|
│ Webhook / Polling
|
||||||
▼
|
▼
|
||||||
┌──────────────────────────────────────────────────────────────────────────────┐
|
┌──────────────────────────────────────────────────────────────────────────────┐
|
||||||
│ ORCHESTRATION LAYER (PREFECT) │
|
│ ORCHESTRATION LAYER (PREFECT) │
|
||||||
│ │
|
│ │
|
||||||
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
||||||
│ │ Prefect Flows (Python) │ │
|
│ │ Prefect Flows (Python) │ │
|
||||||
│ │ ┌───────────────────┐ ┌───────────────────┐ ┌─────────────────────┐ │ │
|
│ │ ┌───────────────────┐ ┌───────────────────┐ ┌─────────────────────┐ │ │
|
||||||
│ │ │ fabric_reconcile │ │ handle_drift │ │ drift_remediation │ │ │
|
│ │ │ fabric_reconcile │ │ handle_drift │ │ drift_remediation │ │ │
|
||||||
│ │ │ (plan/apply) │ │ (subscribe) │ │ (auto-fix) │ │ │
|
│ │ │ (plan/apply) │ │ (subscribe) │ │ (auto-fix) │ │ │
|
||||||
│ │ └───────────────────┘ └───────────────────┘ └─────────────────────┘ │ │
|
│ │ └───────────────────┘ └───────────────────┘ └─────────────────────┘ │ │
|
||||||
│ └────────────────────────────────────────────────────────────────────────┘ │
|
│ └────────────────────────────────────────────────────────────────────────┘ │
|
||||||
│ │
|
│ │
|
||||||
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
||||||
│ │ Prefect Tasks (Python) │ │
|
│ │ Prefect Tasks (Python) │ │
|
||||||
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────────────┐ │ │
|
│ │ ┌─────────────────┐ ┌─────────────────┐ ┌───────────────────────┐ │ │
|
||||||
│ │ │ Intent Parser │ │ Diff Engine │ │ gNMI Client │ │ │
|
│ │ │ Intent Parser │ │ Diff Engine │ │ gNMI Client │ │ │
|
||||||
│ │ │ (NetBox→YANG) │ │ (Want vs Have) │ │ (pygnmi wrapper) │ │ │
|
│ │ │ (NetBox→YANG) │ │ (Want vs Have) │ │ (pygnmi wrapper) │ │ │
|
||||||
│ │ └─────────────────┘ └─────────────────┘ └───────────────────────┘ │ │
|
│ │ └─────────────────┘ └─────────────────┘ └───────────────────────┘ │ │
|
||||||
│ └────────────────────────────────────────────────────────────────────────┘ │
|
│ └────────────────────────────────────────────────────────────────────────┘ │
|
||||||
│ │
|
│ │
|
||||||
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
||||||
│ │ FastAPI Webhook Receiver │ Prefect .serve() │ Prefect Server (UI) │ │
|
│ │ FastAPI Webhook Receiver │ Prefect .serve() │ Prefect Server (UI) │ │
|
||||||
│ └────────────────────────────────────────────────────────────────────────┘ │
|
│ └────────────────────────────────────────────────────────────────────────┘ │
|
||||||
└──────────────────────────────────────────────────────────────────────────────┘
|
└──────────────────────────────────────────────────────────────────────────────┘
|
||||||
│ gNMI Get/Set/Subscribe
|
│ gNMI Get/Set/Subscribe
|
||||||
▼
|
▼
|
||||||
┌──────────────────────────────────────────────────────────────────────────────┐
|
┌──────────────────────────────────────────────────────────────────────────────┐
|
||||||
│ DEVICE LAYER │
|
│ DEVICE LAYER │
|
||||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||||||
│ │ spine1 │ │ spine2 │ │ leaf1 │ │ leaf2 │ ... │
|
│ │ spine1 │ │ spine2 │ │ leaf1 │ │ leaf2 │ ... │
|
||||||
│ │ gNMI:6030 │ │ gNMI:6030 │ │ gNMI:6030 │ │ gNMI:6030 │ │
|
│ │ 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)` |
|
| **Retry & error handling** | Built-in retry policies with `@task(retries=3)` |
|
||||||
| **Human-in-the-loop** | Native `pause_flow_run()` for approval workflows |
|
| **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
|
## 🎯 Target Fabric
|
||||||
|
|
||||||
This project is designed for the Arista EVPN-VXLAN ContainerLab topology:
|
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)
|
||||||
|
|||||||
Reference in New Issue
Block a user