feat(infrahub): add Infrahub client for fabric intent (#42)
This commit is contained in:
137
src/infrahub_client/models.py
Normal file
137
src/infrahub_client/models.py
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
"""Pydantic v2 models for typed Infrahub fabric intent responses."""
|
||||||
|
|
||||||
|
from pydantic import BaseModel, ConfigDict
|
||||||
|
|
||||||
|
|
||||||
|
class DeviceIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraDevice node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
name: str
|
||||||
|
role: str
|
||||||
|
status: str
|
||||||
|
platform: str | None = None
|
||||||
|
site: str | None = None
|
||||||
|
asn: int | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class VlanIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraVLAN node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
vlan_id: int
|
||||||
|
name: str
|
||||||
|
status: str
|
||||||
|
vlan_type: str
|
||||||
|
vni: int | None = None
|
||||||
|
stp_enabled: bool
|
||||||
|
|
||||||
|
|
||||||
|
class VniIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraVNI node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
vni: int
|
||||||
|
vni_type: str
|
||||||
|
description: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class BgpRouterConfigIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraBGPRouterConfig node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
router_id: str
|
||||||
|
local_asn: int
|
||||||
|
default_ipv4_unicast: bool
|
||||||
|
ecmp_max_paths: int
|
||||||
|
|
||||||
|
|
||||||
|
class BgpPeerGroupIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraBGPPeerGroup node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
name: str
|
||||||
|
peer_group_type: str
|
||||||
|
remote_asn: int | None = None
|
||||||
|
update_source: str | None = None
|
||||||
|
send_community: bool
|
||||||
|
ebgp_multihop: int | None = None
|
||||||
|
next_hop_unchanged: bool
|
||||||
|
|
||||||
|
|
||||||
|
class BgpSessionIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraBGPSession node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
peer_address: str
|
||||||
|
description: str | None = None
|
||||||
|
enabled: bool
|
||||||
|
peer_group: str | None = None
|
||||||
|
remote_asn: int | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class VrfIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraVRF node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
name: str
|
||||||
|
route_distinguisher: str | None = None
|
||||||
|
vrf_id: int | None = None
|
||||||
|
l3vni: int | None = None
|
||||||
|
import_targets: list[str]
|
||||||
|
export_targets: list[str]
|
||||||
|
|
||||||
|
|
||||||
|
class VtepIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraVTEP node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
source_address: str
|
||||||
|
udp_port: int
|
||||||
|
learn_restrict: bool
|
||||||
|
vlan_vni_mappings: list[tuple[int, int]]
|
||||||
|
|
||||||
|
|
||||||
|
class MlagDomainIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraMlagDomain node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
domain_id: str
|
||||||
|
virtual_mac: str
|
||||||
|
heartbeat_vrf: str
|
||||||
|
dual_primary_detection: bool
|
||||||
|
dual_primary_delay: int
|
||||||
|
dual_primary_action: str
|
||||||
|
peer_devices: list[str]
|
||||||
|
|
||||||
|
|
||||||
|
class MlagPeerConfigIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraMlagPeerConfig node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
local_interface_ip: str
|
||||||
|
peer_address: str
|
||||||
|
heartbeat_peer_ip: str
|
||||||
|
peer_link: str
|
||||||
|
|
||||||
|
|
||||||
|
class EvpnInstanceIntent(BaseModel):
|
||||||
|
"""Intent model for an Infrahub InfraEVPNInstance node."""
|
||||||
|
|
||||||
|
model_config = ConfigDict(frozen=True)
|
||||||
|
|
||||||
|
route_distinguisher: str
|
||||||
|
route_target_import: str
|
||||||
|
route_target_export: str
|
||||||
|
redistribute_learned: bool
|
||||||
|
vlan_id: int
|
||||||
Reference in New Issue
Block a user