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