Skip to content
Snippets Groups Projects
ipam.py 1.17 KiB
Newer Older
Erik Reid's avatar
Erik Reid committed
import ipaddress
from pydantic import BaseSettings
from gso import settings
import _ipam
Erik Reid's avatar
Erik Reid committed

class V4ServiceNetwork(BaseSettings):
Erik Reid's avatar
Erik Reid committed
    v4: ipaddress.IPv4Network


class V6ServiceNetwork(BaseSettings):
Erik Reid's avatar
Erik Reid committed
    v6: ipaddress.IPv6Network


class ServiceNetworks(BaseSettings):
    v4: V4ServiceNetwork
    v6: V6ServiceNetwork


class V4HostAddress(BaseSettings):
Erik Reid's avatar
Erik Reid committed
    v4: ipaddress.IPv4Address


class V6HostAddress(BaseSettings):
     v6: ipaddress.IPv6Address


class HostAddresses(BaseSettings):
    v4: V4HostAddress
    v6: V6HostAddress


def new_service_networks(service_type) -> ServiceNetworks:
    v4_service_network = _ipam.allocate_service_ipv4_network(service_type=service_type)
    v6_service_network = _ipam.allocate_service_ipv6_network(service_type=service_type)
Erik Reid's avatar
Erik Reid committed
    return ServiceNetworks(
        v4=v4_service_network,
        v6=v6_service_network)
def new_device_lo_address() -> HostAddresses:
    oss = settings.load_oss_params()
    assert oss.IPAM.INFOBLOX
Erik Reid's avatar
Erik Reid committed
    # TODO: load from ipam
    return HostAddresses(
Erik Reid's avatar
Erik Reid committed
        v4=ipaddress.IPv4Address('10.10.10.10'),
        v6=ipaddress.IPv6Address('fc00:798:aa:1::10'))


if __name__ == '__main__':
    new_service_networks('TRUNK')