import ipaddress
from pydantic import BaseSettings
from gso import settings


class ServiceNetworks(BaseSettings):
    v4: ipaddress.IPv4Network
    v6: ipaddress.IPv6Network


class HostAddresses(BaseSettings):
    v4: ipaddress.IPv4Address
    v6: ipaddress.IPv6Address


def new_service_networks(
        service_params: settings.ServiceNetworkParams) -> ServiceNetworks:
    oss = settings.load_oss_params()
    assert oss.IPAM.INFOBLOX
    # TODO: load from ipam
    # cf. https://gitlab.geant.org/goat/gap-jenkins/-/blob/development/service-editor/gap_service_editor/ipam.py#L35-66  # noqa: E501
    return ServiceNetworks(
        v4=ipaddress.IPv4Network('10.0.0.0/24'),
        v6=ipaddress.IPv6Network('dead:beef::/120'))


def new_device_lo_address() -> HostAddresses:
    oss = settings.load_oss_params()
    assert oss.IPAM.INFOBLOX
    # TODO: load from ipam
    return HostAddresses(
        v4=ipaddress.IPv4Address('10.10.10.10'),
        v6=ipaddress.IPv6Address('fc00:798:aa:1::10'))