Skip to content
Snippets Groups Projects
Commit d9c21ced authored by Lukasz Lopatowski's avatar Lukasz Lopatowski
Browse files

Merge branch '297-properly-handle-removal-od-main-component-name' into 'develop'

Fixed deployment name preparation for Janitor

See merge request !208
parents 2546fac8 b7362082
Branches
No related tags found
1 merge request!208Fixed deployment name preparation for Janitor
Pipeline #94322 passed
...@@ -3,10 +3,10 @@ package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes; ...@@ -3,10 +3,10 @@ package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.geant.nmaas.gitlab.GitLabManager;
import net.geant.nmaas.gitlab.exceptions.GitLabInvalidConfigurationException;
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager; import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressControllerConfigOption; import net.geant.nmaas.externalservices.kubernetes.entities.IngressControllerConfigOption;
import net.geant.nmaas.gitlab.GitLabManager;
import net.geant.nmaas.gitlab.exceptions.GitLabInvalidConfigurationException;
import net.geant.nmaas.nmservice.deployment.ContainerOrchestrator; import net.geant.nmaas.nmservice.deployment.ContainerOrchestrator;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.KClusterCheckException; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.KClusterCheckException;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.helm.HelmChartIngressVariable; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.helm.HelmChartIngressVariable;
...@@ -367,8 +367,8 @@ public class KubernetesManager implements ContainerOrchestrator { ...@@ -367,8 +367,8 @@ public class KubernetesManager implements ContainerOrchestrator {
} }
} }
private Identifier getDeploymentIdForJanitorStatusCheck(String releaseName, String componentName) { static Identifier getDeploymentIdForJanitorStatusCheck(String releaseName, String componentName) {
return componentName != null ? return StringUtils.isNotEmpty(componentName) ?
Identifier.newInstance(releaseName + "-" + componentName) : Identifier.newInstance(releaseName + "-" + componentName) :
Identifier.newInstance(releaseName); Identifier.newInstance(releaseName);
} }
......
package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes; package net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import net.geant.nmaas.gitlab.GitLabManager;
import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager; import net.geant.nmaas.externalservices.kubernetes.KubernetesClusterIngressManager;
import net.geant.nmaas.externalservices.kubernetes.entities.IngressControllerConfigOption; 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; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKClusterValidator;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKServiceOperationsManager; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.DefaultKServiceOperationsManager;
import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.KClusterCheckException; import net.geant.nmaas.nmservice.deployment.containerorchestrators.kubernetes.components.cluster.KClusterCheckException;
...@@ -41,6 +41,7 @@ import java.util.Map; ...@@ -41,6 +41,7 @@ import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
...@@ -142,11 +143,11 @@ public class KubernetesManagerTest { ...@@ -142,11 +143,11 @@ public class KubernetesManagerTest {
Map<HelmChartIngressVariable, String> sshAccessUserDeploymentParameters = new HashMap<>(); Map<HelmChartIngressVariable, String> sshAccessUserDeploymentParameters = new HashMap<>();
sshAccessUserDeploymentParameters.put(HelmChartIngressVariable.ACCESS_USER, "testUser"); sshAccessUserDeploymentParameters.put(HelmChartIngressVariable.ACCESS_USER, "testUser");
accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.INTERNAL, "ssh-service-with-access-user", null, "SSH", sshAccessUserDeploymentParameters)); accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.INTERNAL, "ssh-service-with-access-user", null, "SSH", sshAccessUserDeploymentParameters));
accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.PUBLIC, "public-service", null, "Public",null)); accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.PUBLIC, "public-service", null, "Public", null));
Map<HelmChartIngressVariable, String> dataAccessUserDeploymentParameters = new HashMap<>(); Map<HelmChartIngressVariable, String> dataAccessUserDeploymentParameters = new HashMap<>();
dataAccessUserDeploymentParameters.put(HelmChartIngressVariable.ACCESS_USER, "testUser"); dataAccessUserDeploymentParameters.put(HelmChartIngressVariable.ACCESS_USER, "testUser");
accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.INTERNAL, "data-service-with-access-user", null, "DATA", dataAccessUserDeploymentParameters)); accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.INTERNAL, "data-service-with-access-user", null, "DATA", dataAccessUserDeploymentParameters));
accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.PUBLIC, "public-service", null, "Public",null)); accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.PUBLIC, "public-service", null, "Public", null));
Map<HelmChartIngressVariable, String> dataAccessDeploymentParameters = new HashMap<>(); Map<HelmChartIngressVariable, String> dataAccessDeploymentParameters = new HashMap<>();
dataAccessDeploymentParameters.put(HelmChartIngressVariable.K8S_SERVICE_SUFFIX, "component1"); dataAccessDeploymentParameters.put(HelmChartIngressVariable.K8S_SERVICE_SUFFIX, "component1");
accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.INTERNAL, "data-service", null, "DATA", dataAccessDeploymentParameters)); accessMethods.add(new ServiceAccessMethod(ServiceAccessMethodType.INTERNAL, "data-service", null, "DATA", dataAccessDeploymentParameters));
...@@ -319,14 +320,14 @@ public class KubernetesManagerTest { ...@@ -319,14 +320,14 @@ public class KubernetesManagerTest {
} }
@Test @Test
void shouldVerifyRequest () { void shouldVerifyRequest() {
assertDoesNotThrow(() -> { assertDoesNotThrow(() -> {
manager.verifyRequestAndObtainInitialDeploymentDetails(DEPLOYMENT_ID); manager.verifyRequestAndObtainInitialDeploymentDetails(DEPLOYMENT_ID);
}); });
} }
@Test @Test
void shouldVerifyRequestAndThrowException () { void shouldVerifyRequestAndThrowException() {
assertThrows(ContainerOrchestratorInternalErrorException.class, () -> { assertThrows(ContainerOrchestratorInternalErrorException.class, () -> {
doThrow(new KClusterCheckException("")).when(clusterValidator).checkClusterStatusAndPrerequisites(); doThrow(new KClusterCheckException("")).when(clusterValidator).checkClusterStatusAndPrerequisites();
manager.verifyRequestAndObtainInitialDeploymentDetails(DEPLOYMENT_ID); manager.verifyRequestAndObtainInitialDeploymentDetails(DEPLOYMENT_ID);
...@@ -356,7 +357,7 @@ public class KubernetesManagerTest { ...@@ -356,7 +357,7 @@ public class KubernetesManagerTest {
verify(repositoryManager, times(1)).updateKServiceAccessMethods(accessMethodsArg.capture()); verify(repositoryManager, times(1)).updateKServiceAccessMethods(accessMethodsArg.capture());
assertEquals(10, accessMethodsArg.getValue().size()); assertEquals(10, accessMethodsArg.getValue().size());
assertTrue(accessMethodsArg.getValue().stream().anyMatch(m -> assertTrue(accessMethodsArg.getValue().stream().anyMatch(m ->
m.isOfType(ServiceAccessMethodType.DEFAULT) m.isOfType(ServiceAccessMethodType.DEFAULT)
&& m.getName().equals("Default") && m.getName().equals("Default")
&& m.getProtocol().equals("Web") && m.getProtocol().equals("Web")
&& m.getUrl().equals("base.url"))); && m.getUrl().equals("base.url")));
...@@ -397,9 +398,9 @@ public class KubernetesManagerTest { ...@@ -397,9 +398,9 @@ public class KubernetesManagerTest {
assertDoesNotThrow(() -> { assertDoesNotThrow(() -> {
when(serviceLifecycleManager.checkServiceDeployed(any(Identifier.class))).thenReturn(true); when(serviceLifecycleManager.checkServiceDeployed(any(Identifier.class))).thenReturn(true);
when(janitorService.checkIfReady(any(), any())).thenReturn(true); when(janitorService.checkIfReady(any(), any())).thenReturn(true);
when(janitorService.retrieveServiceIp(Identifier.newInstance("deploymentId"),"domain")) when(janitorService.retrieveServiceIp(Identifier.newInstance("deploymentId"), "domain"))
.thenReturn("192.168.100.1"); .thenReturn("192.168.100.1");
when(janitorService.retrieveServiceIp(Identifier.newInstance("deploymentId-component1"),"domain")) when(janitorService.retrieveServiceIp(Identifier.newInstance("deploymentId-component1"), "domain"))
.thenReturn("192.168.100.2"); .thenReturn("192.168.100.2");
doThrow(new JanitorResponseException("")).when(janitorService).checkServiceExists(any(), any()); doThrow(new JanitorResponseException("")).when(janitorService).checkServiceExists(any(), any());
...@@ -487,10 +488,10 @@ public class KubernetesManagerTest { ...@@ -487,10 +488,10 @@ public class KubernetesManagerTest {
assertEquals(2, appUiAccessDetails.getServiceAccessMethods().size()); assertEquals(2, appUiAccessDetails.getServiceAccessMethods().size());
assertTrue(appUiAccessDetails.getServiceAccessMethods().stream().anyMatch(m -> assertTrue(appUiAccessDetails.getServiceAccessMethods().stream().anyMatch(m ->
m.getType().equals(ServiceAccessMethodType.EXTERNAL) m.getType().equals(ServiceAccessMethodType.EXTERNAL)
&& m.getName().equals("web-service") && m.getName().equals("web-service")
&& m.getProtocol().equals("Web") && m.getProtocol().equals("Web")
&& m.getUrl().equals("app1.nmaas.eu") && m.getUrl().equals("app1.nmaas.eu")
)); ));
assertTrue(appUiAccessDetails.getServiceAccessMethods().stream().anyMatch(m -> assertTrue(appUiAccessDetails.getServiceAccessMethods().stream().anyMatch(m ->
m.getType().equals(ServiceAccessMethodType.INTERNAL) m.getType().equals(ServiceAccessMethodType.INTERNAL)
...@@ -500,4 +501,14 @@ public class KubernetesManagerTest { ...@@ -500,4 +501,14 @@ public class KubernetesManagerTest {
)); ));
} }
@Test
void shouldBuildDeploymentNameForCheck() {
assertThat(KubernetesManager.getDeploymentIdForJanitorStatusCheck("releaseName", "componentName"))
.isEqualTo(Identifier.newInstance("releaseName-componentName"));
assertThat(KubernetesManager.getDeploymentIdForJanitorStatusCheck("releaseName", null))
.isEqualTo(Identifier.newInstance("releaseName"));
assertThat(KubernetesManager.getDeploymentIdForJanitorStatusCheck("releaseName", ""))
.isEqualTo(Identifier.newInstance("releaseName"));
}
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment