Source code for netbird.models.network
"""
Network models for NetBird API.
"""
from typing import List, Optional
from pydantic import Field
from .common import BaseModel, ResourceId
[docs]
class NetworkCreate(BaseModel):
"""Model for creating a network.
Attributes:
name: Network name
description: Network description
"""
name: str = Field(..., description="Network name")
description: Optional[str] = Field(None, description="Network description")
[docs]
class NetworkUpdate(BaseModel):
"""Model for updating a network.
Attributes:
name: Network name
description: Network description
"""
name: Optional[str] = Field(None, description="Network name")
description: Optional[str] = Field(None, description="Network description")
[docs]
class NetworkResource(BaseModel):
"""Network resource model.
Attributes:
id: Resource identifier
name: Resource name
description: Resource description
address: Resource address
enabled: Whether resource is enabled
groups: Associated group IDs
"""
id: ResourceId = Field(..., description="Resource identifier")
name: str = Field(..., description="Resource name")
description: Optional[str] = Field(None, description="Resource description")
address: str = Field(..., description="Resource address")
enabled: bool = Field(True, description="Resource enabled status")
groups: Optional[List[ResourceId]] = Field(None, description="Associated group IDs")
[docs]
class NetworkRouter(BaseModel):
"""Network router model.
Attributes:
id: Router identifier
name: Router name
description: Router description
peer: Associated peer ID
peer_groups: Associated peer group IDs
metric: Router metric
masquerade: Whether masquerading is enabled
enabled: Whether router is enabled
"""
id: ResourceId = Field(..., description="Router identifier")
name: str = Field(..., description="Router name")
description: Optional[str] = Field(None, description="Router description")
peer: Optional[ResourceId] = Field(None, description="Associated peer ID")
peer_groups: Optional[List[ResourceId]] = Field(
None, description="Associated peer group IDs"
)
metric: int = Field(9999, description="Router metric")
masquerade: bool = Field(False, description="Masquerading enabled")
enabled: bool = Field(True, description="Router enabled status")
[docs]
class Network(BaseModel):
"""NetBird network model.
Attributes:
id: Unique network identifier
name: Network name
description: Network description
routers: List of router IDs
resources: List of resource IDs
policies: List of associated policy IDs
routing_peers_count: Number of routing peers
"""
id: ResourceId = Field(..., description="Unique network identifier")
name: str = Field(..., description="Network name")
description: Optional[str] = Field(None, description="Network description")
routers: Optional[List[str]] = Field(None, description="Router IDs")
resources: Optional[List[str]] = Field(None, description="Resource IDs")
policies: Optional[List[ResourceId]] = Field(
None, description="Associated policy IDs"
)
routing_peers_count: Optional[int] = Field(
None, description="Number of routing peers"
)