feat(infrahub): add Infrahub client for fabric intent (#42)
- 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>
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
[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"
|
||||
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",
|
||||
"pynetbox>=7.5.0",
|
||||
"infrahub-sdk>=0.16.0",
|
||||
"pydantic>=2.0",
|
||||
"rich>=13.0.0",
|
||||
]
|
||||
|
||||
@@ -35,5 +36,7 @@ ignore = ["E501"]
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"basedpyright>=1.37.4",
|
||||
"pytest>=8.0.0",
|
||||
"pytest-asyncio>=0.23.0",
|
||||
"ruff>=0.14.10",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user