From dfecad1da459e92a12bca1d02ac44e135085e055 Mon Sep 17 00:00:00 2001
From: kbeyro <121854496+kbeyro@users.noreply.github.com>
Date: Tue, 27 May 2025 14:02:41 +0200
Subject: [PATCH] add cluster path if exist

---
 .../kubernetes/components/helm/HelmCommand.java          | 2 ++
 .../kubernetes/components/helm/HelmCommandExecutor.java  | 9 +++++----
 .../components/helm/commands/HelmInstallCommand.java     | 6 +++++-
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommand.java b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommand.java
index f4ba07022..fb2e4bd9f 100644
--- a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommand.java
+++ b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommand.java
@@ -16,6 +16,8 @@ public abstract class HelmCommand implements Command {
     protected static final String HELM_VERSION_2 = "v2";
     protected static final String HELM_VERSION_3 = "v3";
 
+    protected static final String KUBECONFIG = "--kubeconfig";
+
     protected String command;
 
     @Override
diff --git a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandExecutor.java b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandExecutor.java
index 01a3fd9b4..dfc719d8a 100644
--- a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandExecutor.java
+++ b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandExecutor.java
@@ -46,11 +46,11 @@ public class HelmCommandExecutor {
         this.enableTls = enableTls;
     }
 
-    void executeHelmInstallCommand(String namespace, String releaseName, KubernetesTemplate template, Map<String, String> arguments) {
-        executeInstall(namespace, releaseName, template, arguments);
+    void executeHelmInstallCommand(String namespace, String releaseName, KubernetesTemplate template, Map<String, String> arguments, String kubeConfigPath) {
+        executeInstall(namespace, releaseName, template, arguments, kubeConfigPath);
     }
 
-    private void executeInstall(String namespace, String releaseName, KubernetesTemplate template, Map<String, String> arguments) {
+    private void executeInstall(String namespace, String releaseName, KubernetesTemplate template, Map<String, String> arguments, String kubeConfigPath) {
         try {
             HelmInstallCommand command = HelmInstallCommand.commandWithRepo(
                     helmVersion,
@@ -59,7 +59,8 @@ public class HelmCommandExecutor {
                     arguments,
                     constructChartNameWithRepo(template.getChart().getName()),
                     template.getChart().getVersion(),
-                    enableTls
+                    enableTls,
+                    kubeConfigPath
             );
             commandExecutor.execute(command);
         } catch (CommandExecutionException e) {
diff --git a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/commands/HelmInstallCommand.java b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/commands/HelmInstallCommand.java
index 940c89fa9..c5cab7455 100644
--- a/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/commands/HelmInstallCommand.java
+++ b/src/main/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/commands/HelmInstallCommand.java
@@ -25,7 +25,7 @@ public class HelmInstallCommand extends HelmCommand {
      * @param enableTls    flag indicating if tls option should be added
      * @return complete command object
      */
-    public static HelmInstallCommand commandWithRepo(String helmVersion, String namespace, String releaseName, Map<String, String> values, String chartName, String chartVersion, boolean enableTls) {
+    public static HelmInstallCommand commandWithRepo(String helmVersion, String namespace, String releaseName, Map<String, String> values, String chartName, String chartVersion, boolean enableTls, String kubeConfigPath) {
         StringBuilder sb = buildBaseInstallCommand(helmVersion, namespace, releaseName, values);
         if (chartName == null || chartName.isEmpty()) {
             throw new IllegalArgumentException("Chart name can't be null or empty");
@@ -35,6 +35,10 @@ public class HelmInstallCommand extends HelmCommand {
             sb.append(SPACE).append(OPTION_VERSION).append(SPACE).append(chartVersion);
         }
         addTlsOptionIfRequired(helmVersion, enableTls, sb);
+
+        if(kubeConfigPath != null && !kubeConfigPath.isEmpty()) {
+            sb.append(SPACE).append(KUBECONFIG).append(SPACE).append(kubeConfigPath);
+        }
         return new HelmInstallCommand(sb.toString());
     }
 
-- 
GitLab