From f8ef64e9b047d0bb998e43b1fc5524a0b6328072 Mon Sep 17 00:00:00 2001 From: darnodo Date: Fri, 26 Dec 2025 15:56:17 +0100 Subject: [PATCH] docs: update installation steps and reformat markdown tables - Update the dependency installation command in the main README to use `uv sync` instead of `pip`, reflecting the project's package manager. - Realign markdown tables in `src/yang/README.md` to improve raw text readability and consistency. --- .gitignore | 1 + .python-version | 1 + README.md | 2 +- pyproject.toml | 10 ++++++++++ src/yang/README.md | 30 +++++++++++++++--------------- uv.lock | 36 ++++++++++++++++++++++++++++++++++++ 6 files changed, 64 insertions(+), 16 deletions(-) create mode 100644 .gitignore create mode 100644 .python-version create mode 100644 pyproject.toml create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bee8a64 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/.python-version b/.python-version new file mode 100644 index 0000000..e4fba21 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/README.md b/README.md index 48f5ffa..dea0b1d 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ git clone https://gitea.arnodo.fr/Damien/fabric-orchestrator.git cd fabric-orchestrator # Install dependencies -pip install -e . +uv sync # Verify gNMI connectivity to your fabric fabric-orch discover --target leaf1:6030 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..3e7a10f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,10 @@ +[project] +name = "fabric-orchestrator" +version = "0.1.0" +description = "Declarative Network Fabric Orchestrator - Terraform-like infrastructure management for Arista EVPN-VXLAN using gNMI, YANG, and NetBox as Source of Truth" +readme = "README.md" +requires-python = ">=3.12" +dependencies = [ + "dataclasses>=0.8", + "typing>=3.10.0.0", +] diff --git a/src/yang/README.md b/src/yang/README.md index d8e269a..28c08f8 100644 --- a/src/yang/README.md +++ b/src/yang/README.md @@ -6,17 +6,17 @@ This module provides YANG path constants and utilities for managing Arista EVPN- The module contains validated gNMI paths for Arista EOS 4.35.0F, organized by feature: -| Class | Model | Description | -|-------|-------|-------------| -| `Interfaces` | OpenConfig | Physical and logical interfaces | -| `Loopbacks` | OpenConfig | Loopback interfaces | -| `VLANs` | OpenConfig | VLAN configuration and SVIs | -| `BGP` | OpenConfig | BGP global, neighbors, AFI-SAFI | -| `VXLAN` | Arista Exp | VXLAN VNI mappings | -| `MLAG` | Arista Exp | MLAG config (state via eAPI) | -| `EVPN` | Arista Exp | EVPN instances (state via eAPI) | -| `PortChannel` | OpenConfig | LAG/Port-Channel | -| `System` | OpenConfig | System configuration | +| Class | Model | Description | +| ------------- | ---------- | ------------------------------- | +| `Interfaces` | OpenConfig | Physical and logical interfaces | +| `Loopbacks` | OpenConfig | Loopback interfaces | +| `VLANs` | OpenConfig | VLAN configuration and SVIs | +| `BGP` | OpenConfig | BGP global, neighbors, AFI-SAFI | +| `VXLAN` | Arista Exp | VXLAN VNI mappings | +| `MLAG` | Arista Exp | MLAG config (state via eAPI) | +| `EVPN` | Arista Exp | EVPN instances (state via eAPI) | +| `PortChannel` | OpenConfig | LAG/Port-Channel | +| `System` | OpenConfig | System configuration | ## Installation @@ -188,10 +188,10 @@ custom = SubscriptionPath( ## Limitations -| Feature | Config | State | Notes | -|---------|--------|-------|-------| -| MLAG | ✅ | ❌ | Use eAPI for state | -| EVPN | ✅ | ❌ | Use eAPI for state | +| Feature | Config | State | Notes | +| ------- | ------ | ----- | ------------------ | +| MLAG | ✅ | ❌ | Use eAPI for state | +| EVPN | ✅ | ❌ | Use eAPI for state | ## References diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..68d93aa --- /dev/null +++ b/uv.lock @@ -0,0 +1,36 @@ +version = 1 +revision = 3 +requires-python = ">=3.12" + +[[package]] +name = "dataclasses" +version = "0.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/12/7919c5d8b9c497f9180db15ea8ead6499812ea8264a6ae18766d93c59fe5/dataclasses-0.8.tar.gz", hash = "sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97", size = 36581, upload-time = "2020-11-13T14:40:30.139Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ca/75fac5856ab5cfa51bbbcefa250182e50441074fdc3f803f6e76451fab43/dataclasses-0.8-py3-none-any.whl", hash = "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf", size = 19041, upload-time = "2020-11-13T14:40:29.194Z" }, +] + +[[package]] +name = "fabric-orchestrator" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "dataclasses" }, + { name = "typing" }, +] + +[package.metadata] +requires-dist = [ + { name = "dataclasses", specifier = ">=0.8" }, + { name = "typing", specifier = ">=3.10.0.0" }, +] + +[[package]] +name = "typing" +version = "3.10.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/1b/835d4431805939d2996f8772aca1d2313a57e8860fec0e48e8e7dfe3a477/typing-3.10.0.0.tar.gz", hash = "sha256:13b4ad211f54ddbf93e5901a9967b1e07720c1d1b78d596ac6a439641aa1b130", size = 78962, upload-time = "2021-05-01T18:03:58.186Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f2/5d/865e17349564eb1772688d8afc5e3081a5964c640d64d1d2880ebaed002d/typing-3.10.0.0-py3-none-any.whl", hash = "sha256:12fbdfbe7d6cca1a42e485229afcb0b0c8259258cfb919b8a5e2a5c953742f89", size = 26320, upload-time = "2021-05-01T18:03:56.398Z" }, +]