Commit Graph

87 Commits

Author SHA1 Message Date
a05e997742 feat(schema): add include_in_menu: false to all VLAN/VXLAN nodes #41 2026-02-09 12:04:04 +00:00
ffa1eff19a feat(schema): add include_in_menu: false to all BGP nodes #41 2026-02-09 12:03:38 +00:00
69f003b798 feat(schema): add include_in_menu: false to all base nodes #41
Menu is now controlled by custom menus/fabric-menu.yml
2026-02-09 12:03:09 +00:00
40fdf504c9 feat(config): add menu reference to .infrahub.yml #41 2026-02-09 12:02:29 +00:00
78263e8bf5 feat(menu): add custom Infrahub menu for EVPN-VXLAN fabric #41
Organize 22+ schema nodes into logical categories:
- Fabric Topology (Fabric, Site, Device, Platform, Underlay Links)
- Interfaces (Ethernet, Loopback, VLAN SVI, LAG, VXLAN)
- IP Addressing
- Layer 2 / VXLAN (VLAN, VNI, VTEP, Mappings, EVPN)
- Routing / BGP (AS, Router Config, Peer Groups, Sessions, AFI)
- VRF (VRF, Route Targets, Assignments)
- MLAG (Domain, Peer Config, Interface)
- Host Connectivity
2026-02-09 12:02:18 +00:00
25550bb3c4 fix: migrate display_labels to display_label Jinja2 format in VRF schema
Also enriched VRFDeviceAssignment display_label to show device + VRF.

Refs #41
2026-02-07 09:18:38 +00:00
b9b15f3beb fix: migrate display_labels to display_label Jinja2 format in VLAN/VXLAN schema
Refs #41
2026-02-07 09:18:11 +00:00
d9b47461d3 fix: migrate display_labels to display_label Jinja2 format in MLAG schema
Refs #41
2026-02-07 09:17:46 +00:00
498fa8505e fix: migrate display_labels to display_label Jinja2 format in extensions schema
Refs #41
2026-02-07 09:17:26 +00:00
cda3804c2c fix: migrate display_labels to display_label Jinja2 format in BGP schema
Refs #41
2026-02-07 09:17:07 +00:00
97080473f7 fix: migrate display_labels to display_label Jinja2 format in base schema
Replaces deprecated display_labels list format and bare display_label
strings with the new Jinja2 template format as required by Infrahub.

Refs #41
2026-02-07 09:16:40 +00:00
bb76b93499 refactor(schema): replace deprecated display_labels with display_label 2026-02-07 09:03:36 +00:00
a917715a47 refactor(schema): replace deprecated display_labels with display_label across all nodes 2026-02-07 09:03:11 +00:00
99f34b9639 fix(schema): add unique: true on VRF.name for HFID peer traversal 2026-02-06 19:39:28 +00:00
0e96e8aca8 fix(schema): add explicit optional: false on VRFDeviceAssignment.vrf for human_friendly_id 2026-02-06 19:20:56 +00:00
d7e2d9f0e0 fix(schema): add optional: false on UnderlayLink.fabric parent relationship 2026-02-06 19:19:55 +00:00
0c0ab1b214 fix(schema): add explicit optional: false to Parent relationships in vrf.yml 2026-02-06 15:10:16 +00:00
a12e24d00c fix(schema): add explicit optional: false to all Parent relationships in vlan_vxlan.yml 2026-02-06 15:10:00 +00:00
67a54e349d fix(schema): add explicit optional: false to Parent relationships in mlag.yml 2026-02-06 15:09:25 +00:00
adb02fc25c fix(schema): add explicit optional: false to all Parent relationships in bgp.yml 2026-02-06 15:08:57 +00:00
ef6877551f fix(schema): IPAddress.interface - replace Parent with Attribute kind
Parent relationships cannot be optional in Infrahub. Since an IP address
can exist without being assigned to an interface (reserved, planned),
we use kind: Attribute instead of kind: Parent.

Also change InfraInterface.ip_addresses from Component to Generic
since Component requires a matching Parent on the other side.

Both sides now use explicit identifier: interface__ip_addresses
for proper bidirectional linking.
2026-02-06 15:07:01 +00:00
4aadf763a3 fix(schema): add optional: false on device relationship for uniqueness_constraints 2026-02-06 13:11:52 +00:00
52c335aeb0 fix(schema): display_labels must only reference local attributes in vrf.yml 2026-02-06 13:08:59 +00:00
2ca08a4f41 fix(schema): display_labels must only reference local attributes in vlan_vxlan.yml 2026-02-06 13:08:30 +00:00
95bd2ee6c8 fix(schema): display_labels must only reference local attributes in mlag.yml 2026-02-06 13:08:04 +00:00
42d03699d9 fix(schema): display_labels must only reference local attributes in extensions.yml 2026-02-06 13:07:44 +00:00
c22a5b6ab4 fix(schema): display_labels must only reference attributes, not relationships 2026-02-06 13:07:24 +00:00
4e9c2d3009 fix(schema): replace deprecated default_filter with human_friendly_id in base.yml 2026-02-06 13:06:58 +00:00
eb809812af fix(schema): add direction outbound for self-referencing relationship
InterfaceEthernet.connected_interface is a self-reference that requires
direction: outbound to avoid bidirectional conflicts per Infrahub docs.

Ref: #41
2026-02-06 09:12:15 +00:00
8114b6d973 fix(schema): add unique identifiers for VRF RouteTarget relationships
Add identifier and direction: outbound for import/export targets
in VRF and VRFDeviceAssignment to avoid bidirectional conflicts.

Ref: #41
2026-02-06 09:09:31 +00:00
6d08b19b5f fix(schema): add unique identifiers for MlagDomain VLAN relationships
Add identifier and direction: outbound for peer_vlan and ibgp_vlan
to avoid bidirectional relationship conflicts.

Ref: #41
2026-02-06 09:04:39 +00:00
4f5fef7203 fix(schema): use direction outbound for UnderlayLink relationships
Use outbound direction to avoid bidirectional relationship conflicts
when multiple relationships point to the same peer type.

Ref: #41
2026-02-06 08:55:08 +00:00
afa268ad2d fix(schema): add unique identifiers for UnderlayLink relationships
Infrahub requires unique identifiers when multiple relationships
point to the same peer type with the same direction.

Ref: #41
2026-02-06 08:51:47 +00:00
c2a92c340d fix(schema): rename rd to route_distinguisher in EVPNInstance
Infrahub requires attribute names to have at least 3 characters.

Ref: #41
2026-02-06 08:29:12 +00:00
443642c2a1 fix(schema): rename rd to route_distinguisher (min 3 chars)
Infrahub requires attribute names to have at least 3 characters.

Ref: #41
2026-02-06 08:28:42 +00:00
Damien
ea6b66d639 docs: reformat README tables for better raw readability
Update Markdown tables including InfraHub comparison, Prefect benefits, and project progress phases to use consistent column padding. This improves the visual alignment and readability when viewing the raw source file.
2026-02-06 09:00:27 +01:00
f03698dec5 docs(schema): add schema documentation and ERD
Document all schema files, entity relationships, and mapping
to the reference arista-evpn-vxlan-clab topology.

Ref: #41
2026-02-05 15:54:38 +00:00
bd46d5f046 feat(schema): add extensions schema
Add Fabric, Underlay Link, and Host Connection models
for fabric-wide configuration and topology documentation.

Ref: #41
2026-02-05 15:54:07 +00:00
e3ef0b3763 feat(schema): add MLAG schema
Add models for MLAG Domain, Peer Config, and MLAG Interfaces.
Supports dual-primary detection and heartbeat configuration.

Ref: #41
2026-02-05 15:53:49 +00:00
3e96b0ff1a feat(schema): add BGP schema
Add models for Autonomous System, BGP Router Config, Peer Groups,
BGP Sessions, and Address Families. Supports underlay and EVPN overlay.

Ref: #41
2026-02-05 15:53:32 +00:00
d87ffcaca6 feat(schema): add VRF schema
Add models for VRF, Route Target, and VRF-Device assignments.
Supports L3VNI association for symmetric IRB routing.

Ref: #41
2026-02-05 15:53:11 +00:00
535f24a920 feat(schema): add VLAN and VXLAN schema
Add models for VLAN, VNI, VTEP, VLAN-VNI mappings, and EVPN instances.
Supports L2VNI and L3VNI types for EVPN-VXLAN fabric.

Ref: #41
2026-02-05 15:52:58 +00:00
077917f011 feat(schema): add base infrastructure schema
Add core infrastructure models for Device, Interface, IPAddress,
and Platform based on the arista-evpn-vxlan-clab topology.

Ref: #41
2026-02-05 15:52:36 +00:00
Damien
c6595cda51 docs: replace ASCII architecture diagram with Excalidraw SVG
Replace the text-based ASCII art representation of the system architecture with a linked Excalidraw SVG image. This improves visual clarity, readability, and maintainability of the architectural overview in the README.
2026-02-05 13:03:03 +01:00
383aa6b35f docs: Add Git-as-backend architecture for InfraHub
- Repository now serves as InfraHub backend (schema + data in Git)
- Add data/ directory structure for infrastructure objects
- Add transforms/ for Jinja2 config templates
- Update architecture diagram to show Git-centric workflow
- Add "Repository as InfraHub Backend" section explaining benefits
- Simplify project structure to reflect new approach
2026-02-05 08:48:34 +00:00
77ca22bd0a docs: Update README for InfraHub migration
- Replace NetBox with InfraHub as Source of Truth
- Update architecture diagram
- Explain InfraHub benefits (Git-native, custom schema)
- Update project structure (remove netbox references)
- Update technology stack
- Revise project phases for new approach
2026-02-05 08:42:51 +00:00
Damien
e46946606c Remove fabric provisioning script
The `scripts/provision_fabric.py` script and its associated NetBox
client
module (`src/netbox/`) have been removed. This functionality is no
longer
needed.
2026-02-05 09:38:05 +01:00
Damien
4e598ae400 fix(script): update populate script 2026-02-04 18:23:04 +01:00
Damien
0a2f658a2a fix(scripts): enhance get_or_create logic and parameter handling
- Replace `endpoint.get()` with `endpoint.filter()` in `get_or_create` to handle object retrieval more robustly and avoid potential exceptions with multiple results.
- Decouple `search_params` from `create_params` to correctly handle differences between API filtering keys (e.g., `group_id`, `vrf_id`) and creation keys (e.g., `group`, `vrf`).
- Refine IP address lookups to include `assigned_object_id` in search parameters, preventing ambiguous matches against IPs not assigned to the target interface.
2026-02-04 16:31:50 +01:00
52c9586667 fix: use 'device' instead of 'device_id' for interface creation
NetBox API requires 'device' field for creation, not 'device_id'.
Separated search and create logic for interfaces.
2026-02-04 15:17:30 +00:00