diff --git a/gradle-plugin/kubernetes/pom.xml b/gradle-plugin/kubernetes/pom.xml
index 022a011145..89cd2880df 100644
--- a/gradle-plugin/kubernetes/pom.xml
+++ b/gradle-plugin/kubernetes/pom.xml
@@ -167,6 +167,14 @@
+
+ io.fabric8
+ mockwebserver
+
+
+ io.fabric8
+ openshift-server-mock
+
org.junit.jupiter
junit-jupiter-engine
diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java
index 5e59f97917..ffaa5c0f2f 100644
--- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java
+++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/KubernetesExtension.java
@@ -29,7 +29,7 @@
import org.eclipse.jkube.kit.common.ResourceFileType;
import org.eclipse.jkube.kit.common.util.OpenshiftHelper;
import org.eclipse.jkube.kit.common.util.ResourceClassifier;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;
import org.eclipse.jkube.kit.config.image.WatchMode;
import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy;
diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java
index 8012efff1f..4fb3612216 100644
--- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java
+++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/AbstractJKubeTask.java
@@ -33,8 +33,7 @@
import org.eclipse.jkube.kit.common.RegistryConfig;
import org.eclipse.jkube.kit.common.util.LazyBuilder;
import org.eclipse.jkube.kit.common.util.ResourceUtil;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.eclipse.jkube.kit.config.resource.ResourceServiceConfig;
@@ -57,7 +56,7 @@ public abstract class AbstractJKubeTask extends DefaultTask implements Kubernete
protected final KubernetesExtension kubernetesExtension;
protected KitLogger kitLogger;
- protected ClusterAccess clusterAccess;
+ protected ClusterConfiguration clusterConfiguration;
protected JKubeServiceHub jKubeServiceHub;
protected static final String DOCKER_BUILD_TIMESTAMP = "docker/build.timestamp";
protected List resolvedImages;
@@ -80,7 +79,7 @@ public final void runTask() {
protected void init() {
kubernetesExtension.javaProject = GradleUtil.convertGradleProject(getProject());
kitLogger = createLogger(null);
- clusterAccess = new ClusterAccess(initClusterConfiguration());
+ clusterConfiguration = initClusterConfiguration();
jKubeServiceHub = initJKubeServiceHubBuilder().build();
kubernetesExtension.resources = updateResourceConfigNamespace(kubernetesExtension.getNamespaceOrNull(), kubernetesExtension.resources);
resolvedImages = resolveImages();
@@ -142,8 +141,8 @@ protected JKubeServiceHub.JKubeServiceHubBuilder initJKubeServiceHubBuilder() {
.registry(kubernetesExtension.getPushRegistryOrNull() != null ?
kubernetesExtension.getPushRegistryOrNull() : kubernetesExtension.getRegistryOrDefault())
.build())
+ .clusterConfiguration(clusterConfiguration)
.build())
- .clusterAccess(clusterAccess)
.offline(kubernetesExtension.getOfflineOrDefault())
.platformMode(kubernetesExtension.getRuntimeMode())
.resourceServiceConfig(initResourceServiceConfig())
@@ -176,7 +175,7 @@ protected GeneratorContext.GeneratorContextBuilder initGeneratorContextBuilder()
.prePackagePhase(false)
.useProjectClasspath(kubernetesExtension.getUseProjectClassPathOrDefault())
.sourceDirectory(kubernetesExtension.getBuildSourceDirectoryOrDefault())
- .openshiftNamespace(StringUtils.isNotBlank(kubernetesExtension.getNamespaceOrNull()) ? kubernetesExtension.getNamespaceOrNull() : clusterAccess.getNamespace())
+ .openshiftNamespace(StringUtils.isNotBlank(kubernetesExtension.getNamespaceOrNull()) ? kubernetesExtension.getNamespaceOrNull() : clusterConfiguration.getNamespace())
.buildTimestamp(getBuildTimestamp(null, null, kubernetesExtension.javaProject.getBuildDirectory().getAbsolutePath(),
DOCKER_BUILD_TIMESTAMP))
.filter(kubernetesExtension.getFilterOrNull());
diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java
index 1534f0c6d3..4f565a6c50 100644
--- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java
+++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTask.java
@@ -92,6 +92,6 @@ protected void configureApplyService() {
applyService.setRollingUpgradePreserveScale(kubernetesExtension.getRollingUpgradePreserveScaleOrDefault());
applyService.setRecreateMode(kubernetesExtension.getRecreateOrDefault());
applyService.setNamespace(kubernetesExtension.getNamespaceOrNull());
- applyService.setFallbackNamespace(resolveFallbackNamespace(kubernetesExtension.resources, clusterAccess));
+ applyService.setFallbackNamespace(resolveFallbackNamespace(kubernetesExtension.resources, clusterConfiguration));
}
}
diff --git a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java
index ca1eb42be7..efdd17f437 100644
--- a/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java
+++ b/gradle-plugin/kubernetes/src/main/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTask.java
@@ -60,7 +60,7 @@ public void run() {
WatcherContext context = createWatcherContext();
WatcherManager.watch(resolvedImages,
- applicableNamespace(null, kubernetesExtension.getNamespaceOrNull(), kubernetesExtension.resources, clusterAccess),
+ applicableNamespace(null, kubernetesExtension.getNamespaceOrNull(), kubernetesExtension.resources, clusterConfiguration),
resources,
context);
} catch (KubernetesClientException kubernetesClientException) {
diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTaskTest.java
index c260673c14..9db143c800 100644
--- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTaskTest.java
+++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesApplyTaskTest.java
@@ -13,13 +13,13 @@
*/
package org.eclipse.jkube.gradle.plugin.task;
-import java.net.URL;
import java.util.Collections;
-import io.fabric8.openshift.client.OpenShiftClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import org.eclipse.jkube.gradle.plugin.KubernetesExtension;
import org.eclipse.jkube.gradle.plugin.TestKubernetesExtension;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.service.ApplyService;
import org.gradle.api.provider.Property;
@@ -34,32 +34,26 @@
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class KubernetesApplyTaskTest {
@RegisterExtension
public final TaskEnvironmentExtension taskEnvironment = new TaskEnvironmentExtension();
- private MockedConstruction clusterAccessMockedConstruction;
private MockedConstruction applyServiceMockedConstruction;
private TestKubernetesExtension extension;
+ private KubernetesClient kubernetesClient;
@BeforeEach
void setUp(){
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- // OpenShiftClient instance needed due to OpenShift checks performed in KubernetesApply
- final OpenShiftClient kubernetesClient = mock(OpenShiftClient.class);
- when(kubernetesClient.getMasterUrl()).thenReturn(new URL("http://kubernetes-cluster"));
- when(kubernetesClient.adapt(OpenShiftClient.class)).thenReturn(kubernetesClient);
- when(mock.createDefaultClient()).thenReturn(kubernetesClient);
- });
applyServiceMockedConstruction = mockConstruction(ApplyService.class);
extension = new TestKubernetesExtension();
+ extension.access = ClusterConfiguration.from(kubernetesClient.getConfiguration()).build();
when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension);
extension.isFailOnNoKubernetesJson = false;
}
@@ -67,7 +61,6 @@ void setUp(){
@AfterEach
void tearDown() {
applyServiceMockedConstruction.close();
- clusterAccessMockedConstruction.close();
}
@Test
@@ -115,7 +108,7 @@ void configureApplyService_withManifest_shouldSetDefaults() throws Exception {
verify(as, times(1)).setRollingUpgradePreserveScale(false);
verify(as, times(1)).setRecreateMode(false);
verify(as, times(1)).setNamespace(null);
- verify(as, times(1)).setFallbackNamespace(null);
+ verify(as, times(1)).setFallbackNamespace(kubernetesClient.getNamespace());
}
@Test
diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTaskTest.java
index a54c2c7785..536433a50f 100644
--- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTaskTest.java
+++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesUndeployTaskTest.java
@@ -14,17 +14,17 @@
package org.eclipse.jkube.gradle.plugin.task;
import java.io.IOException;
-import java.net.URL;
import java.nio.file.Paths;
import java.util.Collections;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import org.eclipse.jkube.gradle.plugin.KubernetesExtension;
import org.eclipse.jkube.gradle.plugin.TestKubernetesExtension;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.eclipse.jkube.kit.config.service.kubernetes.KubernetesUndeployService;
-import io.fabric8.kubernetes.client.KubernetesClient;
import org.gradle.api.provider.Property;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -34,37 +34,32 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class KubernetesUndeployTaskTest {
@RegisterExtension
private final TaskEnvironmentExtension taskEnvironment = new TaskEnvironmentExtension();
private MockedConstruction kubernetesUndeployServiceMockedConstruction;
- private MockedConstruction clusterAccessMockedConstruction;
private TestKubernetesExtension extension;
+ private KubernetesClient kubernetesClient;
@BeforeEach
void setUp() {
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- final KubernetesClient kubernetesClient = mock(KubernetesClient.class);
- when(mock.createDefaultClient()).thenReturn(kubernetesClient);
- when(kubernetesClient.getMasterUrl()).thenReturn(new URL("http://kubernetes-cluster"));
- });
kubernetesUndeployServiceMockedConstruction = mockConstruction(KubernetesUndeployService.class);
extension = new TestKubernetesExtension();
+ extension.access = ClusterConfiguration.from(kubernetesClient.getConfiguration()).build();
when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension);
}
@AfterEach
void tearDown() {
kubernetesUndeployServiceMockedConstruction.close();
- clusterAccessMockedConstruction.close();
}
@Test
diff --git a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java
index c98045fcdc..2890d2dcd8 100644
--- a/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java
+++ b/gradle-plugin/kubernetes/src/test/java/org/eclipse/jkube/gradle/plugin/task/KubernetesWatchTaskTest.java
@@ -14,13 +14,14 @@
package org.eclipse.jkube.gradle.plugin.task;
import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import org.assertj.core.api.AssertionsForClassTypes;
import org.eclipse.jkube.gradle.plugin.KubernetesExtension;
import org.eclipse.jkube.gradle.plugin.TestKubernetesExtension;
import org.eclipse.jkube.kit.build.service.docker.DockerAccessFactory;
import org.eclipse.jkube.kit.build.service.docker.access.DockerAccess;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.util.KubernetesHelper;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.service.kubernetes.DockerBuildService;
import org.eclipse.jkube.watcher.api.WatcherManager;
import org.junit.jupiter.api.AfterEach;
@@ -30,18 +31,17 @@
import org.mockito.MockedConstruction;
import org.mockito.MockedStatic;
-import java.net.URL;
-
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class KubernetesWatchTaskTest {
@RegisterExtension
@@ -49,10 +49,10 @@ class KubernetesWatchTaskTest {
private MockedConstruction dockerAccessFactoryMockedConstruction;
private MockedConstruction dockerBuildServiceMockedConstruction;
- private MockedConstruction clusterAccessMockedConstruction;
private MockedStatic watcherManagerMockedStatic;
private MockedStatic kubernetesHelperMockedStatic;
private TestKubernetesExtension extension;
+ private KubernetesClient kubernetesClient;
@BeforeEach
void setUp() {
@@ -62,14 +62,10 @@ void setUp() {
dockerBuildServiceMockedConstruction = mockConstruction(DockerBuildService.class, (mock, ctx) -> {
when(mock.isApplicable()).thenReturn(true);
});
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- final KubernetesClient kubernetesClient = mock(KubernetesClient.class);
- when(kubernetesClient.getMasterUrl()).thenReturn(new URL("http://kubernetes-cluster"));
- when(mock.createDefaultClient()).thenReturn(kubernetesClient);
- });
watcherManagerMockedStatic = mockStatic(WatcherManager.class);
kubernetesHelperMockedStatic = mockStatic(KubernetesHelper.class);
extension = new TestKubernetesExtension();
+ extension.access = ClusterConfiguration.from(kubernetesClient.getConfiguration()).build();
when(taskEnvironment.project.getExtensions().getByType(KubernetesExtension.class)).thenReturn(extension);
kubernetesHelperMockedStatic.when(KubernetesHelper::getDefaultNamespace).thenReturn(null);
extension.isFailOnNoKubernetesJson = false;
@@ -79,7 +75,6 @@ void setUp() {
void tearDown() {
watcherManagerMockedStatic.close();
kubernetesHelperMockedStatic.close();
- clusterAccessMockedConstruction.close();
dockerBuildServiceMockedConstruction.close();
dockerAccessFactoryMockedConstruction.close();
}
@@ -107,6 +102,6 @@ void runTask_withManifest_shouldWatchEntities() throws Exception {
// Then
AssertionsForClassTypes.assertThat(watchTask.jKubeServiceHub.getBuildService()).isNotNull()
.isInstanceOf(DockerBuildService.class);
- watcherManagerMockedStatic.verify(() -> WatcherManager.watch(any(), isNull(), any(), any()), times(1));
+ watcherManagerMockedStatic.verify(() -> WatcherManager.watch(any(), eq(kubernetesClient.getNamespace()), any(), any()), times(1));
}
}
diff --git a/gradle-plugin/openshift/pom.xml b/gradle-plugin/openshift/pom.xml
index 793d0e14c6..d906d5fc38 100644
--- a/gradle-plugin/openshift/pom.xml
+++ b/gradle-plugin/openshift/pom.xml
@@ -64,6 +64,14 @@
+
+ io.fabric8
+ mockwebserver
+
+
+ io.fabric8
+ openshift-server-mock
+
org.junit.jupiter
junit-jupiter-engine
diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftApplyTaskTest.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftApplyTaskTest.java
index a17f8ae758..14bba7000d 100644
--- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftApplyTaskTest.java
+++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftApplyTaskTest.java
@@ -13,59 +13,63 @@
*/
package org.eclipse.jkube.gradle.plugin.task;
-import java.net.URL;
import java.util.Collections;
+import io.fabric8.kubernetes.api.model.APIGroupBuilder;
+import io.fabric8.kubernetes.api.model.APIGroupListBuilder;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.openshift.client.OpenShiftClient;
import org.eclipse.jkube.gradle.plugin.OpenShiftExtension;
import org.eclipse.jkube.gradle.plugin.TestOpenShiftExtension;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.service.ApplyService;
-import io.fabric8.openshift.client.OpenShiftClient;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.mockito.MockedConstruction;
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class OpenShiftApplyTaskTest {
@RegisterExtension
public final TaskEnvironmentExtension taskEnvironment = new TaskEnvironmentExtension();
- private MockedConstruction clusterAccessMockedConstruction;
private MockedConstruction applyServiceMockedConstruction;
private TestOpenShiftExtension extension;
+ private KubernetesMockServer kubernetesMockServer;
+ private OpenShiftClient openShiftClient;
@BeforeEach
void setUp() {
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- final OpenShiftClient openShiftClient = mock(OpenShiftClient.class);
- when(mock.createDefaultClient()).thenReturn(openShiftClient);
- when(openShiftClient.getMasterUrl()).thenReturn(new URL("http://openshiftapps-com-cluster:6443"));
- when(openShiftClient.hasApiGroup("openshift.io", false)).thenReturn(true);
- });
applyServiceMockedConstruction = mockConstruction(ApplyService.class);
extension = new TestOpenShiftExtension();
- when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension);
+ extension.access = ClusterConfiguration.from(openShiftClient.getConfiguration()).build();
extension.isFailOnNoKubernetesJson = false;
+ kubernetesMockServer.expect().get().withPath("/apis")
+ .andReturn(HTTP_OK, new APIGroupListBuilder()
+ .addToGroups(new APIGroupBuilder().withName("test.openshift.io").build())
+ .build())
+ .always();
+ when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension);
}
@AfterEach
void tearDown() {
applyServiceMockedConstruction.close();
- clusterAccessMockedConstruction.close();
}
@Test
@@ -113,7 +117,7 @@ void configureApplyService_withManifest_shouldSetDefaults() throws Exception {
verify(as, times(1)).setRollingUpgradePreserveScale(false);
verify(as, times(1)).setRecreateMode(false);
verify(as, times(1)).setNamespace(null);
- verify(as, times(1)).setFallbackNamespace(null);
+ verify(as, times(1)).setFallbackNamespace(openShiftClient.getNamespace());
}
@Test
diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftUndeployTaskTest.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftUndeployTaskTest.java
index 9ef32c996d..c89fcd1bea 100644
--- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftUndeployTaskTest.java
+++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftUndeployTaskTest.java
@@ -17,13 +17,17 @@
import java.nio.file.Paths;
import java.util.Collections;
+import io.fabric8.kubernetes.api.model.APIGroupBuilder;
+import io.fabric8.kubernetes.api.model.APIGroupListBuilder;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import io.fabric8.openshift.client.OpenShiftClient;
import org.eclipse.jkube.gradle.plugin.OpenShiftExtension;
import org.eclipse.jkube.gradle.plugin.TestOpenShiftExtension;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.eclipse.jkube.kit.config.service.openshift.OpenshiftUndeployService;
-import io.fabric8.openshift.client.OpenShiftClient;
import org.gradle.api.provider.Property;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -31,32 +35,35 @@
import org.junit.jupiter.api.extension.RegisterExtension;
import org.mockito.MockedConstruction;
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
-import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class OpenShiftUndeployTaskTest {
@RegisterExtension
public final TaskEnvironmentExtension taskEnvironment = new TaskEnvironmentExtension();
private MockedConstruction openshiftUndeployServiceMockedConstruction;
- private MockedConstruction clusterAccessMockedConstruction;
private TestOpenShiftExtension extension;
+ private KubernetesMockServer kubernetesMockServer;
+ private OpenShiftClient openShiftClient;
@BeforeEach
void setUp() {
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- final OpenShiftClient openShiftClient = mock(OpenShiftClient.class);
- when(mock.createDefaultClient()).thenReturn(openShiftClient);
- when(openShiftClient.hasApiGroup("openshift.io", false)).thenReturn(true);
- });
openshiftUndeployServiceMockedConstruction = mockConstruction(OpenshiftUndeployService.class);
extension = new TestOpenShiftExtension();
+ extension.access = ClusterConfiguration.from(openShiftClient.getConfiguration()).build();
+ kubernetesMockServer.expect().get().withPath("/apis")
+ .andReturn(HTTP_OK, new APIGroupListBuilder()
+ .addToGroups(new APIGroupBuilder().withName("test.openshift.io").build())
+ .build())
+ .always();
when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension);
when(taskEnvironment.project.getName()).thenReturn("test-project");
}
@@ -64,7 +71,6 @@ void setUp() {
@AfterEach
void tearDown() {
openshiftUndeployServiceMockedConstruction.close();
- clusterAccessMockedConstruction.close();
}
@Test
diff --git a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java
index df04e1377f..6a6e741b85 100644
--- a/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java
+++ b/gradle-plugin/openshift/src/test/java/org/eclipse/jkube/gradle/plugin/task/OpenShiftWatchTaskTest.java
@@ -13,52 +13,54 @@
*/
package org.eclipse.jkube.gradle.plugin.task;
+import io.fabric8.kubernetes.api.model.APIGroupBuilder;
+import io.fabric8.kubernetes.api.model.APIGroupListBuilder;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
import io.fabric8.openshift.client.OpenShiftClient;
import org.eclipse.jkube.gradle.plugin.OpenShiftExtension;
import org.eclipse.jkube.gradle.plugin.TestOpenShiftExtension;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.util.KubernetesHelper;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.watcher.api.WatcherManager;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
-import org.mockito.MockedConstruction;
import org.mockito.MockedStatic;
-import java.net.URL;
-
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockConstruction;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class OpenShiftWatchTaskTest {
@RegisterExtension
private final TaskEnvironmentExtension taskEnvironment = new TaskEnvironmentExtension();
- private MockedConstruction clusterAccessMockedConstruction;
private MockedStatic watcherManagerMockedStatic;
private MockedStatic kubernetesHelperMockedStatic;
private TestOpenShiftExtension extension;
+ private KubernetesMockServer kubernetesMockServer;
+ private OpenShiftClient openShiftClient;
@BeforeEach
void setUp() {
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- final OpenShiftClient openShiftClient = mock(OpenShiftClient.class);
- when(openShiftClient.getMasterUrl()).thenReturn(new URL("http://openshiftapps.com:6443"));
- when(openShiftClient.adapt(OpenShiftClient.class)).thenReturn(openShiftClient);
- when(mock.createDefaultClient()).thenReturn(openShiftClient);
- });
watcherManagerMockedStatic = mockStatic(WatcherManager.class);
kubernetesHelperMockedStatic = mockStatic(KubernetesHelper.class);
extension = new TestOpenShiftExtension();
+ extension.access = ClusterConfiguration.from(openShiftClient.getConfiguration()).build();
when(taskEnvironment.project.getExtensions().getByType(OpenShiftExtension.class)).thenReturn(extension);
+ kubernetesMockServer.expect().get().withPath("/apis")
+ .andReturn(HTTP_OK, new APIGroupListBuilder()
+ .addToGroups(new APIGroupBuilder().withName("test.openshift.io").build())
+ .build())
+ .always();
kubernetesHelperMockedStatic.when(KubernetesHelper::getDefaultNamespace).thenReturn(null);
extension.isFailOnNoKubernetesJson = false;
}
@@ -66,7 +68,6 @@ void setUp() {
@AfterEach
void tearDown() {
watcherManagerMockedStatic.close();
- clusterAccessMockedConstruction.close();
kubernetesHelperMockedStatic.close();
}
@@ -89,6 +90,6 @@ void runTask_withManifest_shouldWatchEntities() throws Exception {
// When
watchTask.runTask();
// Then
- watcherManagerMockedStatic.verify(() -> WatcherManager.watch(any(), isNull(), any(), any()), times(1));
+ watcherManagerMockedStatic.verify(() -> WatcherManager.watch(any(), eq(openShiftClient.getNamespace()), any(), any()), times(1));
}
}
diff --git a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/JKubeConfiguration.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/JKubeConfiguration.java
index 975d3ae50d..3d3c11f7f4 100644
--- a/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/JKubeConfiguration.java
+++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/JKubeConfiguration.java
@@ -24,6 +24,7 @@
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
/**
* @author roland
@@ -38,6 +39,7 @@ public class JKubeConfiguration implements Serializable {
private static final long serialVersionUID = 7459084747241070651L;
private JavaProject project;
+ private ClusterConfiguration clusterConfiguration;
private String sourceDirectory;
private String outputDirectory;
private Map buildArgs;
diff --git a/jkube-kit/config/resource/src/main/java/org/eclipse/jkube/kit/config/access/ClusterConfiguration.java b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/access/ClusterConfiguration.java
similarity index 90%
rename from jkube-kit/config/resource/src/main/java/org/eclipse/jkube/kit/config/access/ClusterConfiguration.java
rename to jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/access/ClusterConfiguration.java
index d6df655a1b..48282a3e5c 100644
--- a/jkube-kit/config/resource/src/main/java/org/eclipse/jkube/kit/config/access/ClusterConfiguration.java
+++ b/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/access/ClusterConfiguration.java
@@ -11,10 +11,14 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
-package org.eclipse.jkube.kit.config.access;
+package org.eclipse.jkube.kit.common.access;
+import io.fabric8.kubernetes.api.model.NamedContext;
+import io.fabric8.kubernetes.api.model.NamedContextBuilder;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
+
+import java.io.Serializable;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Optional;
@@ -32,9 +36,10 @@
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
-public class ClusterConfiguration {
+public class ClusterConfiguration implements Serializable {
private static final String PROPERTY_PREFIX = "jkube.";
+ private static final long serialVersionUID = 8756257530678486528L;
private String username;
private String password;
@@ -49,6 +54,7 @@ public class ClusterConfiguration {
private String clientKeyData;
private String clientKeyAlgo;
private String clientKeyPassphrase;
+ private String currentContext;
private String trustStoreFile;
private String trustStorePassphrase;
private String keyStoreFile;
@@ -134,6 +140,12 @@ public Config getConfig() {
configBuilder.withTrustCerts(this.trustCerts);
}
+ if (StringUtils.isNotBlank(this.currentContext)) {
+ configBuilder.withCurrentContext(new NamedContextBuilder()
+ .withName(this.currentContext)
+ .build());
+ }
+
return configBuilder.build();
}
@@ -153,6 +165,7 @@ public static ClusterConfigurationBuilder from(Config kubernetesConfig) {
.clientKeyData(kubernetesConfig.getClientKeyData())
.clientKeyAlgo(kubernetesConfig.getClientKeyAlgo())
.clientKeyPassphrase(kubernetesConfig.getClientKeyPassphrase())
+ .currentContext(Optional.ofNullable(kubernetesConfig.getCurrentContext()).map(NamedContext::getName).orElse(null))
.trustStoreFile(kubernetesConfig.getTrustStoreFile())
.trustStorePassphrase(kubernetesConfig.getTrustStorePassphrase())
.keyStoreFile(kubernetesConfig.getKeyStoreFile())
diff --git a/jkube-kit/config/resource/src/test/java/org/eclipse/jkube/kit/config/access/ClusterConfigurationTest.java b/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/access/ClusterConfigurationTest.java
similarity index 92%
rename from jkube-kit/config/resource/src/test/java/org/eclipse/jkube/kit/config/access/ClusterConfigurationTest.java
rename to jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/access/ClusterConfigurationTest.java
index 1a461cec47..c6e68368c0 100644
--- a/jkube-kit/config/resource/src/test/java/org/eclipse/jkube/kit/config/access/ClusterConfigurationTest.java
+++ b/jkube-kit/common/src/test/java/org/eclipse/jkube/kit/common/access/ClusterConfigurationTest.java
@@ -11,8 +11,9 @@
* Contributors:
* Red Hat, Inc. - initial API and implementation
*/
-package org.eclipse.jkube.kit.config.access;
+package org.eclipse.jkube.kit.common.access;
+import io.fabric8.kubernetes.api.model.NamedContextBuilder;
import io.fabric8.kubernetes.client.Config;
import io.fabric8.kubernetes.client.ConfigBuilder;
import org.junit.jupiter.api.Test;
@@ -31,6 +32,7 @@ void should_load_configuration_from_properties() {
properties.put("jkube.password", "the pa$$w*rd");
properties.put("jkube.masterUrl", "https://example.com");
properties.put("jkube.corner-case", "corner");
+ properties.put("jkube.currentContext", "ctx1");
properties.put("manufactur8.jkube.corner-case", "cased");
// When
final Config config = ClusterConfiguration.from(properties).build().getConfig();
@@ -38,6 +40,7 @@ void should_load_configuration_from_properties() {
assertThat(config).isNotNull()
.hasFieldOrPropertyWithValue("username", "user name")
.hasFieldOrPropertyWithValue("password", "the pa$$w*rd")
+ .hasFieldOrPropertyWithValue("currentContext", new NamedContextBuilder().withName("ctx1").build())
.hasFieldOrPropertyWithValue("masterUrl", "https://example.com/");
}
@@ -104,6 +107,7 @@ void loadsConfigurationFromKubernetesConfig() {
.withClientKeyData("clientKeyData")
.withClientKeyAlgo("clientKeyAlgo")
.withClientKeyPassphrase("clientKeyPassphrase")
+ .withCurrentContext(new NamedContextBuilder().withName("ctx1").build())
.withTrustStoreFile("trustStoreFile")
.withTrustStorePassphrase("trustStorePassphrase")
.withKeyStoreFile("keyStoreFile")
@@ -126,6 +130,7 @@ void loadsConfigurationFromKubernetesConfig() {
.hasFieldOrPropertyWithValue("clientKeyData", "clientKeyData")
.hasFieldOrPropertyWithValue("clientKeyAlgo", "clientKeyAlgo")
.hasFieldOrPropertyWithValue("clientKeyPassphrase", "clientKeyPassphrase")
+ .hasFieldOrPropertyWithValue("currentContext", new NamedContextBuilder().withName("ctx1").build())
.hasFieldOrPropertyWithValue("trustStoreFile", "trustStoreFile")
.hasFieldOrPropertyWithValue("trustStorePassphrase", "trustStorePassphrase")
.hasFieldOrPropertyWithValue("keyStoreFile", "keyStoreFile")
diff --git a/jkube-kit/config/resource/src/main/java/org/eclipse/jkube/kit/config/access/ClusterAccess.java b/jkube-kit/config/resource/src/main/java/org/eclipse/jkube/kit/config/access/ClusterAccess.java
deleted file mode 100644
index 4e5589140d..0000000000
--- a/jkube-kit/config/resource/src/main/java/org/eclipse/jkube/kit/config/access/ClusterAccess.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2019 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at:
- *
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.jkube.kit.config.access;
-
-
-import io.fabric8.kubernetes.client.Config;
-import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.KubernetesClientBuilder;
-
-/**
- * @author roland
- */
-public class ClusterAccess {
-
- private final ClusterConfiguration clusterConfiguration;
-
- public ClusterAccess(ClusterConfiguration clusterConfiguration) {
- this.clusterConfiguration = clusterConfiguration == null ?
- ClusterConfiguration.builder().build() : clusterConfiguration;
- }
-
- public KubernetesClient createDefaultClient() {
- return new KubernetesClientBuilder().withConfig(createDefaultConfig()).build();
- }
-
- private Config createDefaultConfig() {
- return this.clusterConfiguration.getConfig();
- }
-
- public String getNamespace() {
- return this.clusterConfiguration.getNamespace();
- }
-
-}
-
diff --git a/jkube-kit/config/resource/src/test/java/org/eclipse/jkube/kit/config/access/ClusterAccessTest.java b/jkube-kit/config/resource/src/test/java/org/eclipse/jkube/kit/config/access/ClusterAccessTest.java
deleted file mode 100644
index 998dc4b022..0000000000
--- a/jkube-kit/config/resource/src/test/java/org/eclipse/jkube/kit/config/access/ClusterAccessTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2019 Red Hat, Inc.
- * This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License 2.0
- * which is available at:
- *
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- */
-package org.eclipse.jkube.kit.config.access;
-
-import io.fabric8.kubernetes.client.KubernetesClient;
-import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
-import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
-import io.fabric8.openshift.client.OpenShiftClient;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-@EnableKubernetesMockClient(https = false)
-class ClusterAccessTest {
- private KubernetesMockServer mockServer;
- private ClusterConfiguration clusterConfiguration;
-
- @BeforeEach
- void setUp() {
- clusterConfiguration = ClusterConfiguration.builder()
- .masterUrl(mockServer.url("/"))
- .build();
- }
-
- @Test
- void createDefaultClientShouldReturnKubernetesClient() {
- // When
- final KubernetesClient result = new ClusterAccess(clusterConfiguration).createDefaultClient();
- // Then
- assertThat(result).isNotNull().isNotInstanceOf(OpenShiftClient.class);
- }
-}
diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/JKubeServiceHub.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/JKubeServiceHub.java
index 104fccd275..56fc80771e 100644
--- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/JKubeServiceHub.java
+++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/JKubeServiceHub.java
@@ -18,6 +18,7 @@
import java.util.Optional;
import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClientBuilder;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@@ -26,8 +27,6 @@
import org.eclipse.jkube.kit.build.service.docker.DockerServiceHub;
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.util.LazyBuilder;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceService;
import org.eclipse.jkube.kit.config.resource.ResourceServiceConfig;
@@ -51,7 +50,6 @@ public class JKubeServiceHub implements Closeable {
private final BuildServiceConfig buildServiceConfig;
@Getter
private final ResourceServiceConfig resourceServiceConfig;
- private final ClusterAccess clusterAccess;
@Getter
@Setter
private RuntimeMode platformMode;
@@ -64,18 +62,16 @@ public class JKubeServiceHub implements Closeable {
private LazyBuilder migrateService;
private LazyBuilder debugService;
private LazyBuilder helmService;
- private LazyBuilder clusterAccessLazyBuilder;
private LazyBuilder kubernetesClientLazyBuilder;
private final boolean offline;
@Builder(toBuilder = true)
public JKubeServiceHub(
- ClusterAccess clusterAccess, RuntimeMode platformMode, KitLogger log,
+ RuntimeMode platformMode, KitLogger log,
DockerServiceHub dockerServiceHub, JKubeConfiguration configuration,
BuildServiceConfig buildServiceConfig, ResourceServiceConfig resourceServiceConfig,
LazyBuilder resourceService,
boolean offline) {
- this.clusterAccess = clusterAccess;
this.platformMode = platformMode;
this.log = log;
this.dockerServiceHub = dockerServiceHub;
@@ -103,8 +99,7 @@ private void init() {
}
private void initLazyBuilders() {
- clusterAccessLazyBuilder = new LazyBuilder<>(JKubeServiceHub::initClusterAccessIfNecessary);
- kubernetesClientLazyBuilder = new LazyBuilder<>(hub -> getClusterAccess().createDefaultClient());
+ kubernetesClientLazyBuilder = new LazyBuilder<>(hub -> initKubernetesClientIfNecessary());
buildServiceManager = new LazyBuilder<>(BuildServiceManager::new);
pluginManager = new LazyBuilder<>(PluginManager::new);
applyService = new LazyBuilder<>(ApplyService::new);
@@ -125,15 +120,11 @@ private void initLazyBuilders() {
helmService = new LazyBuilder<>(hub -> new HelmService(hub.getConfiguration(), hub.getResourceServiceConfig(), log));
}
- private ClusterAccess initClusterAccessIfNecessary() {
+ private KubernetesClient initKubernetesClientIfNecessary() {
if (offline) {
throw new IllegalArgumentException("Connection to Cluster required. Please check if offline mode is set to false");
}
- if (clusterAccess != null) {
- return clusterAccess;
- }
- return new ClusterAccess(ClusterConfiguration.from(
- System.getProperties(), configuration.getProject().getProperties()).build());
+ return new KubernetesClientBuilder().withConfig(configuration.getClusterConfiguration().getConfig()).build();
}
public RuntimeMode getRuntimeMode() {
@@ -180,8 +171,4 @@ public KubernetesClient getClient() {
return kubernetesClientLazyBuilder.get(this);
}
- public ClusterAccess getClusterAccess() {
- return clusterAccessLazyBuilder.get(this);
- }
-
}
diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtil.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtil.java
index 9ba9356af2..b778fa8fd5 100644
--- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtil.java
+++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtil.java
@@ -26,9 +26,9 @@
import io.fabric8.kubernetes.client.dsl.Resource;
import io.fabric8.kubernetes.client.dsl.ScalableResource;
import org.eclipse.jkube.kit.common.KitLogger;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.util.KubernetesHelper;
import org.eclipse.jkube.kit.common.util.OpenshiftHelper;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.image.ImageName;
import io.fabric8.kubernetes.api.model.DeletionPropagation;
@@ -171,8 +171,8 @@ public static void doDeleteAndWait(KubernetesClient kubernetesClient, GenericKub
crClient.waitUntilCondition(Objects::isNull, seconds, TimeUnit.SECONDS);
}
- public static String applicableNamespace(HasMetadata resource, String namespace, ResourceConfig resourceConfig, ClusterAccess clusterAccess) {
- return applicableNamespace(resource, namespace, resolveFallbackNamespace(resourceConfig, clusterAccess));
+ public static String applicableNamespace(HasMetadata resource, String namespace, ResourceConfig resourceConfig, ClusterConfiguration clusterConfiguration) {
+ return applicableNamespace(resource, namespace, resolveFallbackNamespace(resourceConfig, clusterConfiguration));
}
public static String applicableNamespace(HasMetadata resource, String namespace, String fallbackNamespace) {
@@ -185,11 +185,11 @@ public static String applicableNamespace(HasMetadata resource, String namespace,
return StringUtils.isNotBlank(fallbackNamespace) ? fallbackNamespace : KubernetesHelper.getDefaultNamespace();
}
- public static String resolveFallbackNamespace(ResourceConfig resourceConfig, ClusterAccess clusterAccess) {
+ public static String resolveFallbackNamespace(ResourceConfig resourceConfig, ClusterConfiguration clusterConfiguration) {
return Optional.ofNullable(resourceConfig)
.map(ResourceConfig::getNamespace)
- .orElse(Optional.ofNullable(clusterAccess)
- .map(ClusterAccess::getNamespace)
+ .orElse(Optional.ofNullable(clusterConfiguration)
+ .map(ClusterConfiguration::getNamespace)
.orElse(null));
}
diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java
index bb2d1f1e1c..6933eb70da 100644
--- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java
+++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployService.java
@@ -51,7 +51,7 @@ public KubernetesUndeployService(JKubeServiceHub jKubeServiceHub, KitLogger logg
@Override
public void undeploy(List resourceDirs, ResourceConfig resourceConfig, File... manifestFiles) throws IOException {
- final String fallbackNamespace = KubernetesClientUtil.resolveFallbackNamespace(resourceConfig, jKubeServiceHub.getClusterAccess());
+ final String fallbackNamespace = KubernetesClientUtil.resolveFallbackNamespace(resourceConfig, jKubeServiceHub.getConfiguration().getClusterConfiguration());
final List manifests = Stream.of(manifestFiles)
.filter(Objects::nonNull).filter(File::exists).filter(File::isFile)
.collect(Collectors.toList());
diff --git a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java
index 249a5a2681..ddc5b9e8a6 100644
--- a/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java
+++ b/jkube-kit/config/service/src/main/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildService.java
@@ -251,7 +251,7 @@ private void initClient() {
if (buildServiceConfig.getResourceConfig() != null && buildServiceConfig.getResourceConfig().getNamespace() != null) {
applicableOpenShiftNamespace = buildServiceConfig.getResourceConfig().getNamespace();
} else {
- applicableOpenShiftNamespace = jKubeServiceHub.getClusterAccess().getNamespace();
+ applicableOpenShiftNamespace = jKubeServiceHub.getConfiguration().getClusterConfiguration().getNamespace();
}
}
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceCrudTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceCrudTest.java
index 6ecf43f722..b318232121 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceCrudTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceCrudTest.java
@@ -41,8 +41,7 @@
import io.fabric8.openshift.client.OpenShiftClient;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.KitLogger;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
@@ -63,7 +62,6 @@
@EnableKubernetesMockClient(crud = true)
class ApplyServiceCrudTest {
-
KubernetesMockServer kubernetesMockServer;
KubernetesClient kubernetesClient;
private KitLogger log;
@@ -76,9 +74,10 @@ void setUp() {
apiGroupList = new APIGroupList();
final JKubeServiceHub serviceHub = JKubeServiceHub.builder()
.log(log)
- .configuration(JKubeConfiguration.builder().build())
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(kubernetesClient.getConfiguration()).build())
+ .build())
.platformMode(RuntimeMode.KUBERNETES)
- .clusterAccess(new ClusterAccess(ClusterConfiguration.from(kubernetesClient.getConfiguration()).build()))
.build();
applyService = serviceHub.getApplyService();
applyService.setNamespace("default");
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceTest.java
index 77ac9c1a13..d80c79eb5d 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/ApplyServiceTest.java
@@ -42,8 +42,7 @@
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.util.Serialization;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.eclipse.jkube.kit.config.service.openshift.WebServerEventCollector;
@@ -72,7 +71,6 @@
@EnableKubernetesMockClient
class ApplyServiceTest {
-
KubernetesMockServer mockServer;
OpenShiftClient client;
@@ -82,9 +80,10 @@ class ApplyServiceTest {
void setUp() {
final JKubeServiceHub serviceHub = JKubeServiceHub.builder()
.log(new KitLogger.SilentLogger())
- .configuration(JKubeConfiguration.builder().build())
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(client.getConfiguration()).build())
+ .build())
.platformMode(RuntimeMode.KUBERNETES)
- .clusterAccess(new ClusterAccess(ClusterConfiguration.from(client.getConfiguration()).build()))
.build();
applyService = serviceHub.getApplyService();
applyService.setNamespace("default");
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/DebugServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/DebugServiceTest.java
index c53e26b6c8..a269ffca3f 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/DebugServiceTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/DebugServiceTest.java
@@ -49,8 +49,7 @@
import org.eclipse.jkube.kit.common.JKubeException;
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.util.Serialization;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.junit.jupiter.api.AfterEach;
@@ -94,9 +93,10 @@ void setUp() {
logger = spy(new KitLogger.SilentLogger());
final JKubeServiceHub serviceHub = JKubeServiceHub.builder()
.log(logger)
- .configuration(JKubeConfiguration.builder().build())
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(kubernetesClient.getConfiguration()).build())
+ .build())
.platformMode(RuntimeMode.KUBERNETES)
- .clusterAccess(new ClusterAccess(ClusterConfiguration.from(kubernetesClient.getConfiguration()).build()))
.build();
debugContext = DebugContext.builder()
.namespace("namespace")
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/JKubeServiceHubTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/JKubeServiceHubTest.java
index b1f065524c..4183d36b06 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/JKubeServiceHubTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/JKubeServiceHubTest.java
@@ -13,12 +13,21 @@
*/
package org.eclipse.jkube.kit.config.service;
+import io.fabric8.kubernetes.api.model.APIGroupBuilder;
+import io.fabric8.kubernetes.api.model.APIGroupListBuilder;
+import io.fabric8.kubernetes.client.Client;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.http.HttpClient;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
+import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
+import org.assertj.core.api.InstanceOfAssertFactories;
import org.eclipse.jkube.kit.build.service.docker.DockerServiceHub;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
+import org.eclipse.jkube.kit.common.JavaProject;
import org.eclipse.jkube.kit.common.KitLogger;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.service.MigrateService;
import org.eclipse.jkube.kit.common.util.LazyBuilder;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy;
import org.eclipse.jkube.kit.config.resource.ResourceService;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
@@ -32,35 +41,39 @@
import org.eclipse.jkube.kit.resource.helm.HelmService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import org.mockito.MockedConstruction;
+import org.junit.jupiter.api.io.TempDir;
+import java.nio.file.Path;
+
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.assertj.core.api.Assertions.assertThatNullPointerException;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
import static org.eclipse.jkube.kit.config.resource.RuntimeMode.KUBERNETES;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockConstruction;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@SuppressWarnings({"unused"})
+@EnableKubernetesMockClient(crud = true)
class JKubeServiceHubTest {
+ @TempDir
+ Path temporaryFolder;
private JKubeServiceHub.JKubeServiceHubBuilder jKubeServiceHubBuilder;
- private OpenShiftClient openShiftClient;
+ KubernetesMockServer kubernetesMockServer;
+ OpenShiftClient openShiftClient;
@BeforeEach
void setUp() {
- final ClusterAccess clusterAccess = mock(ClusterAccess.class, RETURNS_DEEP_STUBS);
- openShiftClient = mock(OpenShiftClient.class);
- when(clusterAccess.createDefaultClient()).thenReturn(openShiftClient);
- when(openShiftClient.adapt(OpenShiftClient.class)).thenReturn(openShiftClient);
jKubeServiceHubBuilder = JKubeServiceHub.builder()
.platformMode(KUBERNETES)
- .configuration(mock(JKubeConfiguration.class, RETURNS_DEEP_STUBS))
- .clusterAccess(clusterAccess)
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(openShiftClient.getConfiguration()).build())
+ .project(JavaProject.builder()
+ .baseDirectory(temporaryFolder.toFile())
+ .build())
+ .build())
.log(new KitLogger.SilentLogger())
.dockerServiceHub(mock(DockerServiceHub.class, RETURNS_DEEP_STUBS))
.offline(false)
@@ -170,7 +183,7 @@ void getUndeployServiceInOpenShiftWithInvalidClient() {
// Given
jKubeServiceHubBuilder.platformMode(RuntimeMode.OPENSHIFT);
try (JKubeServiceHub jKubeServiceHub = jKubeServiceHubBuilder.build()) {
- when(openShiftClient.isSupported()).thenReturn(true);
+ kubernetesMockServer.setUnsupported("openshift.io");
// When
final UndeployService result = jKubeServiceHub.getUndeployService();
// Then
@@ -185,7 +198,9 @@ void getUndeployServiceInOpenShiftWithValidClient() {
// Given
jKubeServiceHubBuilder.platformMode(RuntimeMode.OPENSHIFT);
try (JKubeServiceHub jKubeServiceHub = jKubeServiceHubBuilder.build()) {
- when(openShiftClient.hasApiGroup("openshift.io", false)).thenReturn(true);
+ kubernetesMockServer.expect().get().withPath("/apis")
+ .andReturn(HTTP_OK, new APIGroupListBuilder().addToGroups(new APIGroupBuilder().withName("apps.openshift.io").build()).build())
+ .once();
// When
final UndeployService result = jKubeServiceHub.getUndeployService();
// Then
@@ -247,33 +262,6 @@ void getResourceService() {
}
}
- @Test
- void clusterAccessIsNotInitializedIfProvided() {
- // Given
- try (final JKubeServiceHub jKubeServiceHub = jKubeServiceHubBuilder.build();
- MockedConstruction clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class)) {
- assertThat(clusterAccessMockedConstruction.constructed()).asList().isEmpty();
- // When
- jKubeServiceHub.getClusterAccess();
- // Then
- assertThat(clusterAccessMockedConstruction.constructed()).asList().isEmpty();
- }
- }
-
- @Test
- void clusterAccessIsInitializedLazily() {
- // Given
- jKubeServiceHubBuilder.clusterAccess(null);
- try (final JKubeServiceHub jKubeServiceHub = jKubeServiceHubBuilder.build();
- MockedConstruction clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class)) {
- assertThat(clusterAccessMockedConstruction.constructed()).asList().isEmpty();
- // When
- jKubeServiceHub.getClusterAccess();
- // Then
- assertThat(clusterAccessMockedConstruction.constructed()).asList().hasSize(1);
- }
- }
-
@Test
void getClientWithOfflineConnectionIsNotAllowed() {
// Given
@@ -300,10 +288,16 @@ void getApplyServiceWithOfflineThrowsException() {
@Test
void closeClosesInitializedClient() {
+ KubernetesClient kubernetesClient;
try (final JKubeServiceHub jKubeServiceHub = jKubeServiceHubBuilder.build()) {
- jKubeServiceHub.getClient();
+ kubernetesClient = jKubeServiceHub.getClient();
}
// Then
- verify(openShiftClient, times(1)).close();
+ assertThat(kubernetesClient)
+ .isNotNull()
+ .extracting(Client::getHttpClient)
+ .extracting(HttpClient::isClosed)
+ .asInstanceOf(InstanceOfAssertFactories.BOOLEAN)
+ .isTrue();
}
}
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtilTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtilTest.java
index 14f7406778..e8c04f9c0f 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtilTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesClientUtilTest.java
@@ -22,15 +22,13 @@
import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer;
import io.fabric8.kubernetes.client.Watcher;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.eclipse.jkube.kit.config.service.kubernetes.KubernetesClientUtil.doDeleteAndWait;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+
@SuppressWarnings("unused")
@EnableKubernetesMockClient(crud = true)
class KubernetesClientUtilTest {
@@ -91,16 +89,13 @@ void applicableNamespace_whenNamespaceInResourceMetadata_shouldReturnProvidedNam
}
@Test
- void applicableNamespace_whenNamespaceProvidedViaClusterAccess_shouldReturnProvidedNamespace() {
- // Given
- ClusterAccess mockedClusterAccess = mock(ClusterAccess.class, RETURNS_DEEP_STUBS);
- when(mockedClusterAccess.getNamespace()).thenReturn("ns1");
-
+ void applicableNamespace_whenNamespaceProvidedViaKubernetesClient_shouldReturnProvidedNamespace() {
// When
- String resolvedNamespace = KubernetesClientUtil.applicableNamespace(null, null, null, mockedClusterAccess);
+ String resolvedNamespace = KubernetesClientUtil.applicableNamespace(null, null, null,
+ ClusterConfiguration.from(kubernetesClient.getConfiguration()).build());
// Then
- assertThat(resolvedNamespace).isEqualTo("ns1");
+ assertThat(resolvedNamespace).isEqualTo(kubernetesClient.getNamespace());
}
@Test
@@ -128,17 +123,15 @@ void resolveFallbackNamespace_whenNamespaceProvidedViaResourceConfiguration_shou
}
@Test
- void resolveFallbackNamespace_whenNamespaceProvidedViaClusterAccess_shouldReturnProvidedNamespace() {
- // Given
- ClusterAccess mockedClusterAccess = mock(ClusterAccess.class, RETURNS_DEEP_STUBS);
- when(mockedClusterAccess.getNamespace()).thenReturn("ns1");
-
+ void resolveFallbackNamespace_whenNamespaceProvidedViaKubernetesClient_shouldReturnProvidedNamespace() {
// When
- String resolvedNamespace = KubernetesClientUtil.resolveFallbackNamespace(null, mockedClusterAccess);
+ String resolvedNamespace = KubernetesClientUtil
+ .resolveFallbackNamespace(null, ClusterConfiguration.from(kubernetesClient.getConfiguration()).build());
// Then
- assertThat(resolvedNamespace).isEqualTo("ns1");
+ assertThat(resolvedNamespace).isEqualTo(kubernetesClient.getNamespace());
}
+
@Test
void getPodStatusMessagePostfix_whenActionIsDeleted_shouldReturnPodDeletedMessage() {
// Given
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java
index 3b4b856e2c..e3d36ba448 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/kubernetes/KubernetesUndeployServiceTest.java
@@ -34,8 +34,7 @@
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.util.Serialization;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.eclipse.jkube.kit.config.service.JKubeServiceHub;
@@ -72,8 +71,9 @@ void setUp() {
final JKubeServiceHub jKubeServiceHub = JKubeServiceHub.builder()
.log(logger)
.platformMode(RuntimeMode.KUBERNETES)
- .configuration(JKubeConfiguration.builder().build())
- .clusterAccess(new ClusterAccess(ClusterConfiguration.from(kubernetesClient.getConfiguration()).namespace("test").build()))
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(kubernetesClient.getConfiguration()).build())
+ .build())
.build();
kubernetesUndeployService = new KubernetesUndeployService(jKubeServiceHub, logger);
}
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceTest.java
index 349fc663e4..89a614e7c5 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenShiftBuildServiceTest.java
@@ -60,7 +60,6 @@ void setUp() {
jKubeServiceHub = mock(JKubeServiceHub.class, RETURNS_DEEP_STUBS);
final OpenShiftClient oc = mock(OpenShiftClient.class);
when(jKubeServiceHub.getClient()).thenReturn(oc);
- when(jKubeServiceHub.getClusterAccess().createDefaultClient()).thenReturn(oc);
when(jKubeServiceHub.getConfiguration()).thenReturn(JKubeConfiguration.builder()
.project(JavaProject.builder()
.buildFinalName("test-project")
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildServiceIntegrationTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildServiceIntegrationTest.java
index def6bfb197..a7ab792aba 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildServiceIntegrationTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftBuildServiceIntegrationTest.java
@@ -37,6 +37,7 @@
import org.eclipse.jkube.kit.common.JavaProject;
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.RegistryConfig;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.common.archive.ArchiveCompression;
import org.eclipse.jkube.kit.common.util.Serialization;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;
@@ -136,6 +137,7 @@ void init(@TempDir Path temporaryFolder) throws Exception {
.buildDirectory(target)
.build())
.pullRegistryConfig(RegistryConfig.builder().build())
+ .clusterConfiguration(ClusterConfiguration.from(client.getConfiguration()).build())
.build());
image = ImageConfiguration.builder()
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftUndeployServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftUndeployServiceTest.java
index 96b3cebd0e..66ecb21d17 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftUndeployServiceTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/openshift/OpenshiftUndeployServiceTest.java
@@ -28,8 +28,7 @@
import org.eclipse.jkube.kit.common.JKubeConfiguration;
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.util.Serialization;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.eclipse.jkube.kit.config.service.JKubeServiceHub;
@@ -73,8 +72,9 @@ void setUp() {
final JKubeServiceHub jKubeServiceHub = JKubeServiceHub.builder()
.log(logger)
.platformMode(RuntimeMode.KUBERNETES)
- .configuration(JKubeConfiguration.builder().build())
- .clusterAccess(new ClusterAccess(ClusterConfiguration.from(openShiftClient.getConfiguration()).namespace("test").build()))
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(openShiftClient.getConfiguration()).build())
+ .build())
.build();
resourceConfig = ResourceConfig.builder().namespace("test").build();
openshiftUndeployService = new OpenshiftUndeployService(jKubeServiceHub, logger);
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginManagerTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginManagerTest.java
index ca3f5cf7c7..c3968e2bff 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginManagerTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginManagerTest.java
@@ -35,7 +35,7 @@ class PluginManagerTest {
@BeforeEach
void setUp() {
- jKubeServiceHub = new JKubeServiceHub(null, RuntimeMode.KUBERNETES, new KitLogger.StdoutLogger(),
+ jKubeServiceHub = new JKubeServiceHub(RuntimeMode.KUBERNETES, new KitLogger.StdoutLogger(),
null, new JKubeConfiguration(), new BuildServiceConfig(), new ResourceServiceConfig(),
new LazyBuilder<>(hub -> null), true);
}
diff --git a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginServiceTest.java b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginServiceTest.java
index 0bc99bcfb4..095ba1223d 100644
--- a/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginServiceTest.java
+++ b/jkube-kit/config/service/src/test/java/org/eclipse/jkube/kit/config/service/plugins/PluginServiceTest.java
@@ -13,7 +13,6 @@
*/
package org.eclipse.jkube.kit.config.service.plugins;
-
import org.apache.commons.io.FileUtils;
import org.eclipse.jkube.api.JKubePlugin;
import org.eclipse.jkube.kit.common.JKubeConfiguration;
@@ -52,7 +51,7 @@ class PluginServiceTest {
@BeforeEach
void setUp() {
logger = spy(new KitLogger.SilentLogger());
- jKubeServiceHub = new JKubeServiceHub(null, RuntimeMode.KUBERNETES, logger, null,
+ jKubeServiceHub = new JKubeServiceHub(RuntimeMode.KUBERNETES, logger, null,
JKubeConfiguration.builder()
.project(JavaProject.builder()
.outputDirectory(temporaryFolder)
diff --git a/jkube-kit/doc/src/main/asciidoc/inc/apply/_cluster_access_configuration.adoc b/jkube-kit/doc/src/main/asciidoc/inc/apply/_cluster_access_configuration.adoc
index 3b0ce91a4e..50ee722172 100644
--- a/jkube-kit/doc/src/main/asciidoc/inc/apply/_cluster_access_configuration.adoc
+++ b/jkube-kit/doc/src/main/asciidoc/inc/apply/_cluster_access_configuration.adoc
@@ -88,6 +88,10 @@ endif::[]
| Client Key Passphrase on which to operate.
| `jkube.clientKeyPassphrase`
+| *currentContext*
+| Client Kubernetes Context that is currently in use
+| `jkube.currentContext`
+
| *trustStoreFile*
| Trust Store File on which to operate.
| `jkube.trustStoreFile`
diff --git a/jkube-kit/jkube-kit-spring-boot/src/test/java/org/eclipse/jkube/springboot/watcher/SpringBootWatcherIntegrationTest.java b/jkube-kit/jkube-kit-spring-boot/src/test/java/org/eclipse/jkube/springboot/watcher/SpringBootWatcherIntegrationTest.java
index 730a4521f1..691d231ac0 100644
--- a/jkube-kit/jkube-kit-spring-boot/src/test/java/org/eclipse/jkube/springboot/watcher/SpringBootWatcherIntegrationTest.java
+++ b/jkube-kit/jkube-kit-spring-boot/src/test/java/org/eclipse/jkube/springboot/watcher/SpringBootWatcherIntegrationTest.java
@@ -25,8 +25,7 @@
import org.eclipse.jkube.kit.common.KitLogger;
import org.eclipse.jkube.kit.common.Plugin;
import org.eclipse.jkube.kit.common.util.EnvUtil;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.PlatformMode;
import org.eclipse.jkube.kit.config.resource.RuntimeMode;
import org.eclipse.jkube.kit.config.service.JKubeServiceHub;
@@ -78,8 +77,9 @@ void setUp() throws IOException {
final JKubeServiceHub jKubeServiceHub = JKubeServiceHub.builder()
.log(logger)
.platformMode(RuntimeMode.KUBERNETES)
- .configuration(JKubeConfiguration.builder().build())
- .clusterAccess(new ClusterAccess(ClusterConfiguration.from(kubernetesClient.getConfiguration()).namespace("test").build()))
+ .configuration(JKubeConfiguration.builder()
+ .clusterConfiguration(ClusterConfiguration.from(kubernetesClient.getConfiguration()).build())
+ .build())
.build();
watcherContext = WatcherContext.builder()
.logger(logger)
diff --git a/jkube-kit/watcher/api/src/main/java/org/eclipse/jkube/watcher/api/WatcherContext.java b/jkube-kit/watcher/api/src/main/java/org/eclipse/jkube/watcher/api/WatcherContext.java
index 8f9955279b..c74182b93d 100644
--- a/jkube-kit/watcher/api/src/main/java/org/eclipse/jkube/watcher/api/WatcherContext.java
+++ b/jkube-kit/watcher/api/src/main/java/org/eclipse/jkube/watcher/api/WatcherContext.java
@@ -47,6 +47,6 @@ public class WatcherContext {
private JKubeBuildStrategy jKubeBuildStrategy;
public String getNamespace() {
- return getJKubeServiceHub().getClusterAccess().getNamespace();
+ return getJKubeServiceHub().getConfiguration().getClusterConfiguration().getNamespace();
}
}
diff --git a/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherRestartContainerTest.java b/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherRestartContainerTest.java
index 8ea8ee05ce..26f8a22355 100644
--- a/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherRestartContainerTest.java
+++ b/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherRestartContainerTest.java
@@ -40,7 +40,6 @@
import org.assertj.core.api.InstanceOfAssertFactories;
import org.eclipse.jkube.kit.build.service.docker.WatchService;
import org.eclipse.jkube.kit.common.util.OpenshiftHelper;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;
import org.eclipse.jkube.watcher.api.WatcherContext;
import org.junit.jupiter.api.BeforeEach;
diff --git a/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherTest.java b/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherTest.java
index 1d56b92676..528a944620 100644
--- a/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherTest.java
+++ b/jkube-kit/watcher/standard/src/test/java/org/eclipse/jkube/watcher/standard/DockerImageWatcherTest.java
@@ -20,7 +20,6 @@
import org.eclipse.jkube.kit.build.service.docker.watch.ExecTask;
import org.eclipse.jkube.kit.build.service.docker.watch.WatchContext;
import org.eclipse.jkube.kit.common.JavaProject;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;
import org.eclipse.jkube.watcher.api.WatcherContext;
@@ -46,7 +45,6 @@ class DockerImageWatcherTest {
@BeforeEach
public void setUp() {
WatcherContext watcherContext = mock(WatcherContext.class, RETURNS_DEEP_STUBS);
- ClusterAccess mockedClusterAccess = mock(ClusterAccess.class);
watchService = mock(WatchService.class);
DockerServiceHub mockedDockerServiceHub = mock(DockerServiceHub.class,RETURNS_DEEP_STUBS);
dockerImageWatcher = new DockerImageWatcher(watcherContext);
@@ -57,7 +55,6 @@ public void setUp() {
.groupId("org.example")
.artifactId("test")
.version("1.0.0-SNAPSHOT").build());
- when(watcherContext.getJKubeServiceHub().getClusterAccess()).thenReturn(mockedClusterAccess);
}
@Test
diff --git a/kubernetes-maven-plugin/plugin/pom.xml b/kubernetes-maven-plugin/plugin/pom.xml
index b938c8573d..7c0b9acd2f 100644
--- a/kubernetes-maven-plugin/plugin/pom.xml
+++ b/kubernetes-maven-plugin/plugin/pom.xml
@@ -157,6 +157,14 @@
jkube-kit-remote-dev
+
+ io.fabric8
+ mockwebserver
+
+
+ io.fabric8
+ openshift-server-mock
+
org.junit.jupiter
junit-jupiter-engine
diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java
index 85f5d0d05a..b417e0619b 100644
--- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java
+++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractDockerMojo.java
@@ -41,8 +41,7 @@
import org.eclipse.jkube.kit.common.util.EnvUtil;
import org.eclipse.jkube.kit.common.util.MavenUtil;
import org.eclipse.jkube.kit.common.util.ResourceUtil;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.image.build.RegistryAuthConfiguration;
import org.eclipse.jkube.kit.config.resource.PlatformMode;
import org.eclipse.jkube.kit.config.resource.ProcessorConfig;
@@ -311,8 +310,8 @@ public abstract class AbstractDockerMojo extends AbstractMojo
protected KitLogger log;
- // Access for creating OpenShift binary builds
- protected ClusterAccess clusterAccess;
+ // Resolved Cluster Configuration
+ protected ClusterConfiguration clusterConfiguration;
// The JKube service hub
protected JKubeServiceHub jkubeServiceHub;
@@ -375,7 +374,7 @@ public final void execute() throws MojoExecutionException, MojoFailureException
protected void init() {
log = new AnsiLogger(getLog(), useColorForLogging(), verbose, !settings.getInteractiveMode(), getLogPrefix());
authConfigFactory = new DockerAuthConfigFactory(log);
- clusterAccess = new ClusterAccess(initClusterConfiguration());
+ clusterConfiguration = initClusterConfiguration();
runtimeMode = getConfiguredRuntimeMode();
}
@@ -398,7 +397,6 @@ protected void doExecute() throws MojoExecutionException {
jkubeServiceHub = JKubeServiceHub.builder()
.log(log)
.configuration(initJKubeConfiguration())
- .clusterAccess(clusterAccess)
.platformMode(getConfiguredRuntimeMode())
.dockerServiceHub(DockerServiceHub.newInstance(log, dockerAccess))
.buildServiceConfig(buildServiceConfigBuilder().build())
@@ -434,6 +432,7 @@ protected JKubeConfiguration initJKubeConfiguration() throws DependencyResolutio
.buildArgs(buildArgs)
.pullRegistryConfig(getRegistryConfig(pullRegistry))
.pushRegistryConfig(getRegistryConfig(pushRegistry))
+ .clusterConfiguration(clusterConfiguration)
.build();
}
diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java
index 9bc37db986..afd154865f 100644
--- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java
+++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/AbstractJKubeMojo.java
@@ -26,8 +26,7 @@
import org.eclipse.jkube.kit.common.util.LazyBuilder;
import org.eclipse.jkube.kit.common.util.MavenUtil;
import org.eclipse.jkube.kit.common.util.ResourceUtil;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
@@ -145,7 +144,7 @@ public abstract class AbstractJKubeMojo extends AbstractMojo implements KitLogge
protected KitLogger log;
- protected ClusterAccess clusterAccess;
+ protected ClusterConfiguration clusterConfiguration;
// The JKube service hub
protected JKubeServiceHub jkubeServiceHub;
@@ -164,7 +163,7 @@ public void execute() throws MojoExecutionException, MojoFailureException {
protected void init() throws MojoFailureException {
log = createLogger(null);
- clusterAccess = new ClusterAccess(initClusterConfiguration());
+ clusterConfiguration = initClusterConfiguration();
try {
javaProject = MavenUtil.convertMavenProjectToJKubeProject(project, session);
} catch (DependencyResolutionRequiredException e) {
@@ -243,8 +242,8 @@ protected JKubeServiceHub.JKubeServiceHubBuilder initJKubeServiceHubBuilder(Java
.settings(MavenUtil.getRegistryServerFromMavenSettings(settings))
.passwordDecryptionMethod(this::decrypt)
.build())
+ .clusterConfiguration(clusterConfiguration)
.build())
- .clusterAccess(clusterAccess)
.offline(offline)
.platformMode(getRuntimeMode())
.resourceServiceConfig(initResourceServiceConfig())
diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java
index 10e6b5704a..e6d220650f 100644
--- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java
+++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojo.java
@@ -226,7 +226,7 @@ private void configureApplyService(KubernetesClient kubernetes) {
applyService.setRollingUpgradePreserveScale(isRollingUpgradePreserveScale());
applyService.setRecreateMode(recreate);
applyService.setNamespace(namespace);
- applyService.setFallbackNamespace(resolveFallbackNamespace(resources, clusterAccess));
+ applyService.setFallbackNamespace(resolveFallbackNamespace(resources, clusterConfiguration));
boolean openShift = OpenshiftHelper.isOpenShift(kubernetes);
if (openShift) {
diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java
index 9b174e97cd..5fab601cdf 100644
--- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java
+++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/build/ResourceMojo.java
@@ -232,7 +232,7 @@ private List getResolvedImages(List imag
.useProjectClasspath(useProjectClasspath)
.strategy(JKubeBuildStrategy.docker)
.prePackagePhase(true)
- .openshiftNamespace(StringUtils.isNotBlank(this.namespace) ? this.namespace: clusterAccess.getNamespace())
+ .openshiftNamespace(StringUtils.isNotBlank(this.namespace) ? this.namespace: clusterConfiguration.getNamespace())
.buildTimestamp(getBuildTimestamp(getPluginContext(), CONTEXT_KEY_BUILD_TIMESTAMP, project.getBuild().getDirectory(), DOCKER_BUILD_TIMESTAMP))
.build());
return generatorManager.generateAndMerge(images);
diff --git a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java
index b0b7734d6f..107d8f7c19 100644
--- a/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java
+++ b/kubernetes-maven-plugin/plugin/src/main/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojo.java
@@ -95,7 +95,7 @@ public void executeInternal() throws MojoExecutionException {
WatcherContext context = getWatcherContext();
WatcherManager.watch(getResolvedImages(),
- applicableNamespace(null, namespace, resources, clusterAccess),
+ applicableNamespace(null, namespace, resources, clusterConfiguration),
appliedK8sResources,
context);
diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java
index 47078d9f0d..0c154b5394 100644
--- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java
+++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/ApplyMojoTest.java
@@ -15,13 +15,14 @@
import java.io.File;
import java.io.IOException;
-import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Properties;
-import io.fabric8.openshift.client.NamespacedOpenShiftClient;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import io.fabric8.kubernetes.client.ConfigBuilder;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
import org.apache.maven.plugin.MojoExecutionException;
@@ -32,38 +33,32 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
-import org.mockito.MockedConstruction;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.when;
+@EnableKubernetesMockClient(crud = true)
class ApplyMojoTest {
- private MockedConstruction clusterAccessMockedConstruction;
private File kubernetesManifestFile;
private MavenProject mavenProject;
- private NamespacedOpenShiftClient defaultKubernetesClient;
- private String kubeConfigNamespace;
+ private KubernetesClient defaultKubernetesClient;
private ApplyMojo applyMojo;
@BeforeEach
void setUp(@TempDir Path temporaryFolder) throws IOException {
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, context) -> {
- when(mock.createDefaultClient()).thenReturn(defaultKubernetesClient);
- when(mock.getNamespace()).thenAnswer(invocation -> kubeConfigNamespace);
- });
kubernetesManifestFile = Files.createFile(temporaryFolder.resolve("kubernetes.yml")).toFile();
mavenProject = mock(MavenProject.class);
when(mavenProject.getProperties()).thenReturn(new Properties());
- defaultKubernetesClient = mock(NamespacedOpenShiftClient.class);
- when(defaultKubernetesClient.adapt(any())).thenReturn(defaultKubernetesClient);
- when(defaultKubernetesClient.getMasterUrl()).thenReturn(URI.create("https://www.example.com").toURL());
// @formatter:off
applyMojo = new ApplyMojo() {{
+ access = ClusterConfiguration.from(
+ new ConfigBuilder(defaultKubernetesClient.getConfiguration())
+ .withNamespace("kubernetes-client-config-namespace")
+ .build()
+ ).build();
project = mavenProject;
settings = mock(Settings.class);
kubernetesManifest = kubernetesManifestFile;
@@ -74,7 +69,6 @@ void setUp(@TempDir Path temporaryFolder) throws IOException {
@AfterEach
void tearDown() {
- clusterAccessMockedConstruction.close();
mavenProject = null;
applyMojo = null;
}
@@ -128,13 +122,12 @@ void resolveEffectiveNamespace_whenNamespaceSetInResourceConfig() throws MojoExe
@Test
void resolveEffectiveNamespace_whenNoNamespaceConfigured() throws MojoExecutionException, MojoFailureException {
// Given
- kubeConfigNamespace = "clusteraccess-namespace";
// When
applyMojo.execute();
// Then
assertThat(applyMojo.applyService)
.hasFieldOrPropertyWithValue("namespace", null)
- .hasFieldOrPropertyWithValue("fallbackNamespace", "clusteraccess-namespace");
+ .hasFieldOrPropertyWithValue("fallbackNamespace", "kubernetes-client-config-namespace");
}
}
diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java
index ae69fa8fe0..97f4f54309 100644
--- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java
+++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/DebugMojoTest.java
@@ -20,7 +20,6 @@
import java.util.Properties;
import org.eclipse.jkube.kit.common.util.AnsiLogger;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.service.DebugContext;
import org.eclipse.jkube.kit.config.service.JKubeServiceHub;
@@ -36,9 +35,6 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.isNotNull;
-import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -51,7 +47,6 @@
class DebugMojoTest {
private MockedConstruction jKubeServiceHubMockedConstruction;
- private MockedConstruction clusterAccessMockedConstruction;
private File kubernetesManifestFile;
private MavenProject mavenProject;
@@ -65,7 +60,6 @@ void setUp(@TempDir Path temporaryFolder) throws IOException {
doReturn(oc).when(oc).adapt(OpenShiftClient.class);
when(mock.getClient()).thenReturn(oc);
});
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class);
kubernetesManifestFile = Files.createFile(temporaryFolder.resolve("kubernetes.yml")).toFile();
mavenProject = mock(MavenProject.class);
when(mavenProject.getProperties()).thenReturn(new Properties());
@@ -81,7 +75,6 @@ void setUp(@TempDir Path temporaryFolder) throws IOException {
@AfterEach
void tearDown() {
- clusterAccessMockedConstruction.close();
jKubeServiceHubMockedConstruction.close();
mavenProject = null;
debugMojo = null;
diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java
index 7f68b21109..bf1648cf0f 100644
--- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java
+++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/LogMojoTest.java
@@ -21,7 +21,6 @@
import io.fabric8.kubernetes.client.KubernetesClient;
import io.fabric8.openshift.client.OpenShiftClient;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
import org.eclipse.jkube.kit.config.service.JKubeServiceHub;
import org.eclipse.jkube.kit.config.service.PodLogService;
@@ -50,7 +49,6 @@
class LogMojoTest {
private MockedConstruction jKubeServiceHubMockedConstruction;
- private MockedConstruction clusterAccessMockedConstruction;
private MockedConstruction podLogServiceMockedConstruction;
private File kubernetesManifestFile;
private MavenProject mavenProject;
@@ -65,7 +63,6 @@ void setUp(@TempDir Path temporaryFolder) throws IOException {
doReturn(oc).when(oc).adapt(OpenShiftClient.class);
when(mock.getClient()).thenReturn(oc);
});
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class);
podLogServiceMockedConstruction = mockConstruction(PodLogService.class);
kubernetesManifestFile = Files.createTempFile(temporaryFolder, "kubernetes", ".yml").toFile();
mavenProject = mock(MavenProject.class);
@@ -82,7 +79,6 @@ void setUp(@TempDir Path temporaryFolder) throws IOException {
@AfterEach
void tearDown() {
- clusterAccessMockedConstruction.close();
jKubeServiceHubMockedConstruction.close();
mavenProject = null;
logMojo = null;
diff --git a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojoTest.java b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojoTest.java
index 9e36a6ce0d..2d5ad62f29 100644
--- a/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojoTest.java
+++ b/kubernetes-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/develop/WatchMojoTest.java
@@ -14,20 +14,17 @@
package org.eclipse.jkube.maven.plugin.mojo.develop;
import java.io.File;
-import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collections;
-import java.util.HashMap;
import java.util.Properties;
+import io.fabric8.kubernetes.client.ConfigBuilder;
import io.fabric8.kubernetes.client.KubernetesClient;
-import org.eclipse.jkube.kit.common.JKubeConfiguration;
-import org.eclipse.jkube.kit.common.JavaProject;
-import org.eclipse.jkube.kit.config.access.ClusterAccess;
+import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.image.build.JKubeBuildStrategy;
import org.eclipse.jkube.kit.config.resource.ResourceConfig;
-import org.eclipse.jkube.kit.config.service.JKubeServiceHub;
import org.eclipse.jkube.watcher.api.WatcherManager;
import org.apache.maven.project.MavenProject;
@@ -36,47 +33,29 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
-import org.mockito.MockedConstruction;
import org.mockito.MockedStatic;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.mockConstruction;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.when;
-import static org.mockito.Mockito.withSettings;
+@EnableKubernetesMockClient(crud = true)
class WatchMojoTest {
- private File kubernetesManifestFile;
+ private KubernetesClient kubernetesClient;
+ private File kubernetesManifestFile;
private MavenProject mavenProject;
- private Settings mavenSettings;
private MockedStatic watcherManagerMockedStatic;
- private MockedConstruction jKubeServiceHubMockedConstruction;
- private MockedConstruction clusterAccessMockedConstruction;
private TestWatchMojo watchMojo;
@BeforeEach
void setUp(@TempDir Path temporaryFolder) throws Exception {
final Path srcDir = Files.createDirectory(temporaryFolder.resolve("src"));
final File targetDir = Files.createDirectory(temporaryFolder.resolve("target")).toFile();
- jKubeServiceHubMockedConstruction = mockConstruction(JKubeServiceHub.class,
- withSettings().defaultAnswer(RETURNS_DEEP_STUBS), (mock, context) -> {
- final KubernetesClient kc = mock(KubernetesClient.class, RETURNS_DEEP_STUBS);
- when(kc.getMasterUrl()).thenReturn(URI.create("https://www.example.com").toURL());
- when(mock.getClient()).thenReturn(kc);
- when(mock.getConfiguration()).thenReturn(JKubeConfiguration.builder()
- .project(JavaProject.builder()
- .baseDirectory(temporaryFolder.toFile())
- .build())
- .build());
- });
- clusterAccessMockedConstruction = mockConstruction(ClusterAccess.class, (mock, ctx) -> {
- when(mock.getNamespace()).thenReturn("namespace-from-config");
- });
kubernetesManifestFile = Files.createTempFile(srcDir, "kubernetes", ".yml").toFile();
mavenProject = mock(MavenProject.class, RETURNS_DEEP_STUBS);
when(mavenProject.getProperties()).thenReturn(new Properties());
@@ -86,16 +65,19 @@ void setUp(@TempDir Path temporaryFolder) throws Exception {
when(mavenProject.getBasedir()).thenReturn(temporaryFolder.toFile());
when(mavenProject.getBuild().getDirectory()).thenReturn(targetDir.getAbsolutePath());
when(mavenProject.getBuild().getOutputDirectory()).thenReturn(targetDir.getAbsolutePath());
- mavenSettings = mock(Settings.class);
watcherManagerMockedStatic = mockStatic(WatcherManager.class);
// @formatter:off
watchMojo = new TestWatchMojo() {{
project = mavenProject;
- settings = mavenSettings;
+ settings = mock(Settings.class);
kubernetesManifest = kubernetesManifestFile;
resourceDir = temporaryFolder.resolve("src").resolve("main").resolve("jkube").toFile().getAbsoluteFile();
buildStrategy = JKubeBuildStrategy.jib;
- setPluginContext(new HashMap<>());
+ access = ClusterConfiguration.from(
+ new ConfigBuilder(kubernetesClient.getConfiguration())
+ .withNamespace("kubernetes-client-config-namespace")
+ .build()
+ ).build();
}};
// @formatter:on
}
@@ -103,20 +85,18 @@ void setUp(@TempDir Path temporaryFolder) throws Exception {
@AfterEach
void tearDown() {
watcherManagerMockedStatic.close();
- clusterAccessMockedConstruction.close();
- jKubeServiceHubMockedConstruction.close();
}
@Test
- void executeInternal_whenNoNamespaceConfigured_shouldDelegateToWatcherManagerWithClusterAccessNamespace() throws Exception {
+ void executeInternal_whenNoNamespaceConfigured_shouldDelegateToWatcherManagerWithClusterConfigurationNamespace() throws Exception {
// When
watchMojo.execute();
// Then
- watcherManagerMockedStatic.verify(() -> WatcherManager.watch(any(), eq("namespace-from-config"), any(), any()), times(1));
+ watcherManagerMockedStatic.verify(() -> WatcherManager.watch(any(), eq("kubernetes-client-config-namespace"), any(), any()), times(1));
}
@Test
- void executeInternal_whenNamespaceConfiguredInResourceConfig_shouldDelegateToWatcherManagerWithClusterAccessNamespace() throws Exception {
+ void executeInternal_whenNamespaceConfiguredInResourceConfig_shouldDelegateToWatcherManagerWithResourceConfigNamespace() throws Exception {
// Given
ResourceConfig resources = ResourceConfig.builder()
.namespace("namespace-from-resource_config")
@@ -129,7 +109,7 @@ void executeInternal_whenNamespaceConfiguredInResourceConfig_shouldDelegateToWat
}
@Test
- void executeInternal_whenNamespaceConfigured_shouldDelegateToWatcherManagerWithClusterAccessNamespace() throws Exception {
+ void executeInternal_whenNamespaceConfigured_shouldDelegateToWatcherManagerWithConfiguredNamespace() throws Exception {
// Given
watchMojo.setNamespace("configured-namespace");
// When
diff --git a/openshift-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenShiftResourceMojoTest.java b/openshift-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenShiftResourceMojoTest.java
index ea48613146..6b9f21d406 100644
--- a/openshift-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenShiftResourceMojoTest.java
+++ b/openshift-maven-plugin/plugin/src/test/java/org/eclipse/jkube/maven/plugin/mojo/build/OpenShiftResourceMojoTest.java
@@ -22,7 +22,7 @@
import org.apache.maven.project.MavenProjectHelper;
import org.apache.maven.settings.Settings;
import org.eclipse.jkube.kit.common.KitLogger;
-import org.eclipse.jkube.kit.config.access.ClusterConfiguration;
+import org.eclipse.jkube.kit.common.access.ClusterConfiguration;
import org.eclipse.jkube.kit.config.image.ImageConfiguration;
import org.eclipse.jkube.kit.config.image.build.BuildConfiguration;
import org.junit.jupiter.api.BeforeEach;
@@ -91,7 +91,7 @@ void execute_generatesResourcesAndAttachesArtifact() throws Exception {
}
@Test
- void executeInternal_resolvesGroupInImageNameToClusterAccessNamespace_whenNamespaceDetected() throws MojoExecutionException, MojoFailureException {
+ void executeInternal_resolvesGroupInImageNameToClusterConfigurationNamespace_whenNamespaceDetected() throws MojoExecutionException, MojoFailureException {
// Given
resourceMojo.project.setArtifactId("test-project");
ImageConfiguration imageConfiguration = ImageConfiguration.builder()