"""Components to use in workflow forms."""
from orchestrator.forms import FormPage
from orchestrator.forms.validators import Choice
from orchestrator.types import UUIDstr
from pydantic import validator

from gso.utils.helpers import validate_router_in_netbox


class SelectRouterSide(FormPage):
    """Selector for a router on a side."""

    class Config:
        """Setup title."""

        title: str

    side_node_id: Choice
    config: Config


    @validator("side_node_id", allow_reuse=True)
    def validate_device_exists_in_netbox(cls, side_node_id: UUIDstr) -> str | None:
        """Validate side node id."""
        return validate_router_in_netbox(side_node_id)