diff --git a/geant_service_orchestrator/services/ipam.py b/geant_service_orchestrator/services/ipam.py new file mode 100644 index 0000000000000000000000000000000000000000..24999bd45ad72f9c73449fdb4cec04c0932f809a --- /dev/null +++ b/geant_service_orchestrator/services/ipam.py @@ -0,0 +1,30 @@ +import ipaddress +from pydantic import BaseSettings +from geant_service_orchestrator import settings + + +class ServiceNetworks(BaseSettings) + v4: ipaddress.IPv4Network + v6: ipaddress.IPv6Network + + +class HostAddresses(BaseSettings): + v4: ipaddress.IPv4Address + v6: ipaddress.IPv6Address + + +def new_service_networks( + ipam: settings.IPAMParams, + service_params: settings.ServiceNetworkParams) -> ServiceNetworks: + # 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_host_address(fqdn: str, networks: ServiceNetworks) -> HostAddress: + # TODO: load from ipam + return HostAddresses( + v4=ipaddress.IPv4Address('10.0.0.1'), + v6=ipaddress.IPv6Address('dead:beef::1'))