Pydantic Overview¶
Basic Pydantic example¶
from pydantic import BaseModel
class Vlan(BaseModel):
id: int
name: str
# Usage
vlan10 = Vlan(id=10, name="Vlan10")
print(vlan10)
Create a Pydantic data model for an interface with speed as an integer, vlan as an integer, and name as the interface name.
Enum Pydantic example¶
from pydantic import BaseModel
from enum import Enum
class BaseVlanType(str, Enum):
VOICE = 'voice'
DATA = 'data'
class Vlan(BaseModel):
id: int
name: str
private: bool
base_vlan: BaseVlanType
# Usage
vlan20 = Vlan(id=20, name="Vlan20", private=True, base_vlan=BaseVlanType.DATA)
print(vlan20)
Add to your Pydantic data model with with profile as an enum on your interface.
Pydantic Union & Nested Example¶
from ipaddress import IPv4Address, IPv6Address
from pydantic import BaseModel
from typing import List
class Device(BaseModel):
serial: str
ip_address: IPv4Address
vlans: List[Vlan]
# Usage
vlan30 = Vlan(id=30, name="Vlan30", private=False, base_vlan=BaseVlanType.VOICE)
vlan40 = Vlan(id=40, name="Vlan40", private=True, base_vlan=BaseVlanType.DATA)
device1 = Device(serial="SN12345", ip_address="192.168.1.1", vlans=[vlan30, vlan40])
print(device1)
We can adjust to have either IPv4 or V6 model.
Add your interface to the interfaces key of the Device model.