diff --git a/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManagerTest.java b/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManagerTest.java
index e731123936fbfa7898f805c50e70e49dbe1d8ce1..71dfd8bbe46d70db352e86aa141dea8486767566 100644
--- a/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManagerTest.java
+++ b/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/KubernetesManagerTest.java
@@ -2,6 +2,7 @@ package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes;
import com.google.common.collect.Sets;
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager;
+import net.geant.nmaas.externalservices.kubernetes.RemoteClusterManager;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressControllerConfigOption;
import net.geant.nmaas.gitlab.GitLabManager;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKClusterValidator;
@@ -69,6 +70,7 @@ public class KubernetesManagerTest {
private final KubernetesClusterIngressManager ingressManager = mock(KubernetesClusterIngressManager.class);
private final GitLabManager gitLabManager = mock(GitLabManager.class);
private final JanitorService janitorService = mock(JanitorService.class);
+ private final RemoteClusterManager remoteClusterManager = mock(RemoteClusterManager.class);
private static final Identifier DEPLOYMENT_ID = Identifier.newInstance("deploymentId");
@@ -82,7 +84,8 @@ public class KubernetesManagerTest {
ingressResourceManager,
ingressManager,
gitLabManager,
- janitorService
+ janitorService,
+ remoteClusterManager
);
@BeforeEach
diff --git a/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandPreparationTest.java b/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandPreparationTest.java
index 74b90525221a703be60760041acfa9ccb517c425..9bd0e19eb80a4419e723e216700fddcc7187bc41 100644
--- a/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandPreparationTest.java
+++ b/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmCommandPreparationTest.java
@@ -57,7 +57,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
- null, false).asString(),
+ null, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO));
assertThat(
HelmInstallCommand.commandWithRepo(
@@ -66,7 +66,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
- CHART_VERSION, false).asString(),
+ CHART_VERSION, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION));
}
@@ -79,7 +79,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
- null, false).asString(),
+ null, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_v3_USING_CHART_FROM_REPO));
assertThat(
HelmInstallCommand.commandWithRepo(
@@ -88,7 +88,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
- CHART_VERSION, false).asString(),
+ CHART_VERSION, false, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_FOR_V3_USING_CHART_FROM_REPO_WITH_VERSION));
}
@@ -101,7 +101,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
- null, true).asString(),
+ null, true, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO + TLS));
assertThat(
HelmInstallCommand.commandWithRepo(
@@ -110,7 +110,7 @@ public class HelmCommandPreparationTest {
RELEASE_NAME,
null,
CHART_NAME_WITH_REPO,
- CHART_VERSION, true).asString(),
+ CHART_VERSION, true, null).asString(),
equalTo(CORRECT_HELM_INSTALL_COMMAND_USING_CHART_FROM_REPO_WITH_VERSION + TLS));
}
@@ -127,7 +127,7 @@ public class HelmCommandPreparationTest {
arguments,
CHART_NAME_WITH_REPO,
CHART_VERSION,
- false).asString(),
+ false, null).asString(),
allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART),
containsString("testPersistenceName"),
containsString("testStorageClass"))
@@ -147,7 +147,7 @@ public class HelmCommandPreparationTest {
arguments,
CHART_NAME_WITH_REPO,
CHART_VERSION,
- true).asString(),
+ true, null).asString(),
allOf(containsString(CORRECT_HELM_INSTALL_COMMAND_FIRST_PART),
containsString("testPersistenceName"),
containsString("testStorageClass"),
diff --git a/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmKServiceManagerTest.java b/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmKServiceManagerTest.java
index b3e27ed59448daf424638912499f0d4a3de3f265..f743955611888d0dc852135850bdb170cf8e77df 100644
--- a/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmKServiceManagerTest.java
+++ b/src/test/java/net/geant/nmaas/nmservice/deployment/containerorchestrators/kubernetes/components/helm/HelmKServiceManagerTest.java
@@ -5,6 +5,11 @@ import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManag
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterNamespaceService;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressCertificateConfigOption;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressResourceConfigOption;
+import net.geant.nmaas.externalservices.kubernetes.entities.KCluster;
+import net.geant.nmaas.externalservices.kubernetes.entities.KClusterDeployment;
+import net.geant.nmaas.externalservices.kubernetes.entities.KClusterIngress;
+import net.geant.nmaas.externalservices.kubernetes.entities.KClusterState;
+import net.geant.nmaas.externalservices.kubernetes.entities.NamespaceConfigOption;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.KubernetesRepositoryManager;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesNmServiceInfo;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.entities.KubernetesTemplate;
@@ -18,6 +23,7 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
+import java.time.OffsetDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
@@ -119,7 +125,8 @@ public class HelmKServiceManagerTest {
eq("namespace"),
eq("descriptiveDeploymentId"),
k8sTemplateArg.capture(),
- argumentsArg.capture(), null
+ argumentsArg.capture(),
+ eq(null)
);
assertThat(argumentsArg.getValue()).isNotEmpty();
assertThat(argumentsArg.getValue().size()).isEqualTo(11);
@@ -142,8 +149,9 @@ public class HelmKServiceManagerTest {
verify(helmCommandExecutor, times(1)).executeHelmInstallCommand(
eq("namespace"),
eq("descriptiveDeploymentId"),
- any(),
- any(), null
+ any(KubernetesTemplate.class),
+ any(Map.class),
+ eq(null)
);
}
@@ -228,4 +236,63 @@ public class HelmKServiceManagerTest {
);
}
+ @Test
+ void shouldDeployServiceWithKubeconfigPath() {
+ when(namespaceService.namespace("domain")).thenReturn("namespace");
+ when(ingressManager.getResourceConfigOption()).thenReturn(IngressResourceConfigOption.DEPLOY_FROM_CHART);
+ when(ingressManager.getIngressPerDomain()).thenReturn(false);
+ when(ingressManager.getSupportedIngressClass()).thenReturn("testIngressClass");
+ when(ingressManager.getTlsSupported()).thenReturn(true);
+ when(ingressManager.getIssuerOrWildcardName()).thenReturn("testIssuerName");
+ when(ingressManager.getCertificateConfigOption()).thenReturn(IngressCertificateConfigOption.USE_LETSENCRYPT);
+
+
+ KClusterDeployment mockDeployment = KClusterDeployment.builder()
+ .namespaceConfigOption(NamespaceConfigOption.CREATE_NAMESPACE)
+ .defaultNamespace("default-namespace")
+ .defaultStorageClass("default-storage-class")
+ .smtpServerHostname("smtp.example.com")
+ .smtpServerPort(587)
+ .smtpServerUsername("user@example.com")
+ .smtpServerPassword("password")
+ .smtpFromDefaultDomain("example.com")
+ .forceDedicatedWorkers(true)
+ .build();
+
+ KClusterIngress mockIngress = KClusterIngress.builder().resourceConfigOption(IngressResourceConfigOption.NOT_USED).build();
+
+
+ KCluster mockCluster = KCluster.builder()
+ .id(1L)
+ .name("TestCluster")
+ .codename("test-cluster")
+ .description("Mocked Kubernetes Cluster")
+ .creationDate(OffsetDateTime.now())
+ .modificationDate(OffsetDateTime.now())
+ .clusterConfigFile("mock-cluster-config")
+ .pathConfigFile("mock/path/to/kubeconfig")
+ .state(KClusterState.UNKNOWN)
+ .currentStateSince(OffsetDateTime.now())
+ .contactEmail("test@example.com")
+ .deployment(mockDeployment)
+ .ingress(mockIngress)
+ .build();
+
+ KubernetesNmServiceInfo service = repositoryManager.loadService(deploymentId);
+ service.setRemoteCluster(mockCluster);
+ when(repositoryManager.loadService(deploymentId)).thenReturn(service);
+
+ manager.deployService(deploymentId);
+
+ ArgumentCaptor<String> kubeconfigPathArg = ArgumentCaptor.forClass(String.class);
+ verify(helmCommandExecutor, times(1)).executeHelmInstallCommand(
+ eq("namespace"),
+ eq("descriptiveDeploymentId"),
+ any(KubernetesTemplate.class),
+ any(Map.class),
+ kubeconfigPathArg.capture()
+ );
+ assertThat(kubeconfigPathArg.getValue()).isEqualTo("mock/path/to/kubeconfig");
+ }
+
}