From c96165a6e0e73d6b07bf941e5e7b0a914de277cd Mon Sep 17 00:00:00 2001
From: Karel van Klink <karel.vanklink@geant.org>
Date: Fri, 7 Apr 2023 16:25:51 +0200
Subject: [PATCH] Add provisioning proxy stub

---
 .../services/provisioning_proxy.py            | 33 +++++++++++++++++++
 geant_service_orchestrator/settings.py        |  7 ++++
 2 files changed, 40 insertions(+)
 create mode 100644 geant_service_orchestrator/services/provisioning_proxy.py

diff --git a/geant_service_orchestrator/services/provisioning_proxy.py b/geant_service_orchestrator/services/provisioning_proxy.py
new file mode 100644
index 00000000..c34c20cd
--- /dev/null
+++ b/geant_service_orchestrator/services/provisioning_proxy.py
@@ -0,0 +1,33 @@
+from geant_service_orchestrator import settings
+import requests
+
+
+def get_api_version(oss_params=settings.ANSIBLEParams):
+    r = requests.get(
+        f'{oss_params.host}'
+        f'/api/version'
+    )
+    r.raise_for_status()
+
+
+#
+# Some examples I want to keep around for now
+#
+#
+# def next_lag(router_name, oss_params=settings.OSSParams):
+#     r = requests.post(
+#         f'{oss_params.RESOURCE_MANAGER_API_PREFIX}'
+#         f'/api/interfaces/next-lag/{router_name}')
+#     r.raise_for_status()
+#     response = r.json()
+#     return response['name']
+#
+#
+# def next_physical(router_name, lag_name, oss_params=settings.OSSParams):
+#     # TODO: speed needed (if first interface)
+#     r = requests.post(
+#         f'{oss_params.RESOURCE_MANAGER_API_PREFIX}'
+#         f'/api/interfaces/next-physical/{router_name}/{lag_name}')
+#     r.raise_for_status()
+#     response = r.json()
+#     return response['name']
diff --git a/geant_service_orchestrator/settings.py b/geant_service_orchestrator/settings.py
index a0c79368..bb586da6 100644
--- a/geant_service_orchestrator/settings.py
+++ b/geant_service_orchestrator/settings.py
@@ -33,9 +33,16 @@ class IPAMParams(BaseSettings):
     GEANT_IP: ServiceNetworkParams
 
 
+class ANSIBLEParams(BaseSettings):
+    host: str
+    auth: str  # FIXME: unfinished
+    api_version: int
+
+
 class OSSParams(BaseSettings):
     IPAM: IPAMParams
     RESOURCE_MANAGER_API_PREFIX: str  # api prefix
+    ANSIBLE: ANSIBLEParams
 
 
 def load_oss_params() -> OSSParams:
-- 
GitLab