From a32dc8a2c8fcba420b4b9bea80b04f4fe5a77234 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Tue, 28 Mar 2023 09:35:38 +0200 Subject: [PATCH] skeleton ipam oss interface --- geant_service_orchestrator/services/ipam.py | 30 +++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 geant_service_orchestrator/services/ipam.py diff --git a/geant_service_orchestrator/services/ipam.py b/geant_service_orchestrator/services/ipam.py new file mode 100644 index 00000000..24999bd4 --- /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')) -- GitLab