- Replace pynetbox with infrahub-sdk>=0.16.0 + pydantic>=2.0 in dependencies - Add pytest and pytest-asyncio to dev dependencies - Implement FabricInfrahubClient async client (src/infrahub/client.py) - get_device, get_device_vlans, get_device_bgp_config - get_device_bgp_peer_groups, get_device_bgp_sessions - get_device_vrfs, get_device_vtep, get_device_evpn_instances - get_mlag_domain, get_mlag_peer_config - TTL-based caching (60s) to avoid redundant SDK queries - Async context manager support - Add Pydantic v2 frozen models for all intent types (src/infrahub/models.py) - Add custom exception hierarchy (src/infrahub/exceptions.py) - Add unit tests with fully mocked SDK (tests/test_infrahub_client.py) - Tests for correct model return, NotFoundError, branch selection, caching Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
43 lines
886 B
TOML
43 lines
886 B
TOML
[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 Infrahub as Source of Truth"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"click>=8.1.0",
|
|
"pygnmi>=0.8.0",
|
|
"infrahub-sdk>=0.16.0",
|
|
"pydantic>=2.0",
|
|
"rich>=13.0.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
fabric-orch = "src.cli:main"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src"]
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
include = ["src"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py312"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "W"]
|
|
ignore = ["E501"]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"basedpyright>=1.37.4",
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=0.23.0",
|
|
"ruff>=0.14.10",
|
|
]
|