From 35748a872387b3378a27567c8e7cd8591de6d7c0 Mon Sep 17 00:00:00 2001
From: John Kasper Svergja <johnkasper.svergja@ssb.no>
Date: Sat, 16 Dec 2023 19:25:01 +0100
Subject: [PATCH] Add support for regions.customValues for use in helm
 templates

This feature was introduced in onyxia-api in PR 298 (  https://github.com/InseeFrLab/onyxia-api/pull/298).
Values from backend (regions.json -> services.customValues) are available to use in helm templates as region.customValues
---
 web/src/core/adapters/onyxiaApi/default.ts       | 2 ++
 web/src/core/adapters/onyxiaApi/mock.ts          | 1 +
 web/src/core/ports/OnyxiaApi/DeploymentRegion.ts | 1 +
 web/src/core/ports/OnyxiaApi/XOnyxia.ts          | 1 +
 web/src/core/usecases/launcher/thunks.ts         | 1 +
 5 files changed, 6 insertions(+)

diff --git a/web/src/core/adapters/onyxiaApi/default.ts b/web/src/core/adapters/onyxiaApi/default.ts
index 19dd62de6..d4f13bbde 100644
--- a/web/src/core/adapters/onyxiaApi/default.ts
+++ b/web/src/core/adapters/onyxiaApi/default.ts
@@ -82,6 +82,7 @@ export function createOnyxiaApi(params: {
                         id: string;
                         services: {
                             allowedURIPattern: string;
+                            customValues?: object;
                             expose: {
                                 domain: string;
                                 ingressClassName: string;
@@ -319,6 +320,7 @@ export function createOnyxiaApi(params: {
                                 region.packageRepositoryInjection,
                             "certificateAuthorityInjection":
                                 region.certificateAuthorityInjection,
+                            "customValues": region.services.customValues,
                             "kubernetes": (() => {
                                 const { k8sPublicEndpoint } = region.services;
                                 return k8sPublicEndpoint?.URL === undefined
diff --git a/web/src/core/adapters/onyxiaApi/mock.ts b/web/src/core/adapters/onyxiaApi/mock.ts
index 54b0112ad..1095a914f 100644
--- a/web/src/core/adapters/onyxiaApi/mock.ts
+++ b/web/src/core/adapters/onyxiaApi/mock.ts
@@ -33,6 +33,7 @@ export const onyxiaApi: OnyxiaApi = {
                         "ingress": true,
                         "route": undefined,
                         "istio": undefined,
+                        "customValues": undefined,
                         "initScriptUrl":
                             "https://InseeFrLab.github.io/onyxia/onyxia-init.sh",
                         "s3": undefined,
diff --git a/web/src/core/ports/OnyxiaApi/DeploymentRegion.ts b/web/src/core/ports/OnyxiaApi/DeploymentRegion.ts
index 5e790e3c1..13987de62 100644
--- a/web/src/core/ports/OnyxiaApi/DeploymentRegion.ts
+++ b/web/src/core/ports/OnyxiaApi/DeploymentRegion.ts
@@ -7,6 +7,7 @@ export type DeploymentRegion = {
     ingressClassName: string | undefined;
     ingress: boolean | undefined;
     route: boolean | undefined;
+    customValues: object | undefined;
     istio:
         | {
               enabled: boolean;
diff --git a/web/src/core/ports/OnyxiaApi/XOnyxia.ts b/web/src/core/ports/OnyxiaApi/XOnyxia.ts
index e9c575ac9..f05a5c1a0 100644
--- a/web/src/core/ports/OnyxiaApi/XOnyxia.ts
+++ b/web/src/core/ports/OnyxiaApi/XOnyxia.ts
@@ -64,6 +64,7 @@ export type XOnyxiaContext = {
         defaultIpProtection: boolean | undefined;
         defaultNetworkPolicy: boolean | undefined;
         allowedURIPattern: string;
+        customValues: object | undefined;
         kafka:
             | {
                   url: string;
diff --git a/web/src/core/usecases/launcher/thunks.ts b/web/src/core/usecases/launcher/thunks.ts
index ba15350a0..96dacbacc 100644
--- a/web/src/core/usecases/launcher/thunks.ts
+++ b/web/src/core/usecases/launcher/thunks.ts
@@ -278,6 +278,7 @@ export const thunks = {
                             "defaultNetworkPolicy": region.defaultNetworkPolicy,
                             "allowedURIPattern":
                                 region.allowedURIPatternForUserDefinedInitScript,
+                            "customValues": region.customValues,
                             "kafka": region.kafka,
                             "from": region.from,
                             "tolerations": region.tolerations,