Commit Graph

6 Commits

Author SHA1 Message Date
Damien
f663cc623c 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>
2026-02-26 14:03:09 +01:00
Damien
4e598ae400 fix(script): update populate script 2026-02-04 18:23:04 +01:00
darnodo
ac763aa376 fix(netbox): adapt client for NetBox 4.4 API compatibility
- Bump pynetbox dependency to >=7.5.0
- Change get_device_asn to read ASN from device custom field instead of
  filtering ASNs by device (unsupported in NetBox 4.4)
- Remove device_name filter from get_l2vpn_terminations as L2VPN
  terminations cannot be filtered by device in NetBox 4.4
- Refactor get_vrf_interfaces to query IP addresses with VRF filter and
  extract associated interfaces (VRF filtering on interfaces unsupported)
- Add get_interface_mlag_id method to read MLAG ID from interface
  custom field
2026-01-09 10:24:57 +01:00
darnodo
4799c4cbf2 feat(netbox): Add NetBox API client for fabric intent retrieval
Implements FabricNetBoxClient using pynetbox to fetch:
- Device and interface data
- BGP sessions and peer groups (plugin)
- L2VPN/EVPN VNI mappings
- VRF and route target configuration
- MLAG custom fields

Relates to #5
2026-01-08 13:02:09 +01:00
darnodo
e041dab724 feat(build): configure project tooling and update dependencies
- Replace placeholder deps with click, pygnmi, and rich for CLI functionality
- Add fabric-orch CLI entry point via project.scripts
- Configure hatchling as build backend with wheel/sdist targets
- Add ruff linter configuration for code quality
- Add dev dependency group with ruff
- Alphabetize yang module imports
2025-12-31 09:36:00 +01:00
darnodo
f8ef64e9b0 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.
2025-12-26 15:56:17 +01:00