From 9fb7a7aecddf77e5c3cb738da8c5097d3d7712eb Mon Sep 17 00:00:00 2001
From: Erik Reid <erik.reid@geant.org>
Date: Tue, 28 Mar 2023 09:24:02 +0200
Subject: [PATCH] use ipaddress.*Network types

---
 geant_service_orchestrator/settings.py | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/geant_service_orchestrator/settings.py b/geant_service_orchestrator/settings.py
index 98352e6b..f842dd69 100644
--- a/geant_service_orchestrator/settings.py
+++ b/geant_service_orchestrator/settings.py
@@ -1,6 +1,6 @@
+import ipaddress
 import json
 import os
-from typing import Optional
 from pydantic import BaseSettings
 
 
@@ -12,14 +12,19 @@ class InfoBloxParams(BaseSettings):
     password: str
 
 
-class ServiceNetworkProtocolParams(BaseSettings):
-    container: str  # ipaddress?
-    mask: int
+class V4NetworkParams(BaseSettings):
+    container: ipaddress.IPv4Network
+    mask: int  # TODO: validation on mask?
+
+
+class V6NetworkParams(BaseSettings):
+    container: ipaddress.IPv6Network
+    mask: int  # TODO: validation on mask?
 
 
 class ServiceNetworkParams(BaseSettings):
-    V4: ServiceNetworkProtocolParams
-    V6: ServiceNetworkProtocolParams
+    V4: V4NetworkParams
+    V6: V6NetworkParams
 
 
 class IPAMParams(BaseSettings):
@@ -34,6 +39,10 @@ class OSSParams(BaseSettings):
 
 
 def load_oss_params() -> OSSParams:
+    """
+    look for OSS_PARAMS_FILENAME in the environment and load the
+    parameters from that file
+    """
     with open(os.environ['OSS_PARAMS_FILENAME']) as f:
         return OSSParams(**json.loads(f.read()))
 
-- 
GitLab