conditional ingress for wiremock pods (#1445)

* k8s client moved

* fabri8 client moved

* review comments

* review comments
This commit is contained in:
erabii
2023-09-17 21:27:32 +03:00
committed by GitHub
parent 13f7bc5f10
commit 866bcfa1f4
11 changed files with 73 additions and 43 deletions

View File

@@ -175,7 +175,7 @@ class KubernetesClientDiscoveryClientIT {
util.createNamespace(NAMESPACE_A);
util.createNamespace(NAMESPACE_B);
util.setUpClusterWideClusterRoleBinding(NAMESPACE);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.CREATE, false);
util.busybox(NAMESPACE_B, Phase.CREATE);
KubernetesClientDiscoveryClientUtils.patchForAllNamespaces(DEPLOYMENT_NAME, NAMESPACE);
@@ -222,7 +222,7 @@ class KubernetesClientDiscoveryClientIT {
@Order(3)
void testSpecificNamespace() {
util.setUpClusterWide(NAMESPACE, Set.of(NAMESPACE, NAMESPACE_A));
util.wiremock(NAMESPACE_B, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.CREATE, false);
KubernetesClientDiscoveryClientUtils.patchForSingleNamespace(DEPLOYMENT_NAME, NAMESPACE);
@@ -266,8 +266,8 @@ class KubernetesClientDiscoveryClientIT {
Assertions.assertEquals(resultForNonExistentService.size(), 0);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE, false);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.DELETE, false);
util.deleteClusterWide(NAMESPACE, Set.of(NAMESPACE, NAMESPACE_A));
util.deleteNamespace(NAMESPACE_A);
util.deleteNamespace(NAMESPACE_B);
@@ -343,8 +343,8 @@ class KubernetesClientDiscoveryClientIT {
}
private void deleteNamespacesAndWiremock() {
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.DELETE, false);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.DELETE, false);
util.deleteNamespace(NAMESPACE_A_UAT);
util.deleteNamespace(NAMESPACE_B_UAT);
}

View File

@@ -55,8 +55,8 @@ class KubernetesClientDiscoveryFilterITDelegate {
util.createNamespace(NAMESPACE_A_UAT);
util.createNamespace(NAMESPACE_B_UAT);
util.setUpClusterWide(NAMESPACE, Set.of(NAMESPACE, NAMESPACE_A_UAT, NAMESPACE_B_UAT));
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.CREATE, false);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.CREATE, false);
WebClient clientServices = builder().baseUrl("http://localhost/services").build();

View File

@@ -84,9 +84,9 @@ class KubernetesClientDiscoverySelectiveNamespacesIT {
util.createNamespace(NAMESPACE_A);
util.createNamespace(NAMESPACE_B);
util.setUpClusterWide(NAMESPACE, Set.of(NAMESPACE, NAMESPACE_A, NAMESPACE_B));
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE, false);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.CREATE, false);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.CREATE, false);
manifests(Phase.CREATE);
}
@@ -94,9 +94,9 @@ class KubernetesClientDiscoverySelectiveNamespacesIT {
static void afterAll() throws Exception {
Commons.cleanUp(IMAGE_NAME, K3S);
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false);
util.wiremock(NAMESPACE_A, "/wiremock", Phase.DELETE, false);
util.wiremock(NAMESPACE_B, "/wiremock", Phase.DELETE, false);
util.deleteClusterWide(NAMESPACE, Set.of(NAMESPACE, NAMESPACE_A, NAMESPACE_B));
util.deleteNamespace(NAMESPACE_A);
util.deleteNamespace(NAMESPACE_B);

View File

@@ -75,12 +75,12 @@ class LoadBalancerIT {
@BeforeEach
void setup() {
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE, false);
}
@AfterEach
void afterEach() {
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false);
}
@Test

View File

@@ -78,12 +78,12 @@ class ReactiveDiscoveryClientIT {
@BeforeEach
void setup() {
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE, false);
}
@AfterEach
void after() {
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false);
reactiveDiscoveryIt(Phase.DELETE);
}

View File

@@ -105,15 +105,15 @@ class DiscoveryClientFilterNamespaceIT {
@AfterEach
void afterEach() {
util.wiremock(NAMESPACE_LEFT, "/wiremock-" + NAMESPACE_LEFT, Phase.DELETE);
util.wiremock(NAMESPACE_RIGHT, "/wiremock-" + NAMESPACE_RIGHT, Phase.DELETE);
util.wiremock(NAMESPACE_LEFT, "/wiremock-" + NAMESPACE_LEFT, Phase.DELETE, false);
util.wiremock(NAMESPACE_RIGHT, "/wiremock-" + NAMESPACE_RIGHT, Phase.DELETE, false);
discoveryIt(Phase.DELETE);
}
@Test
void testDiscoveryClient() {
util.wiremock(NAMESPACE_LEFT, "/wiremock-" + NAMESPACE_LEFT, Phase.CREATE);
util.wiremock(NAMESPACE_RIGHT, "/wiremock-" + NAMESPACE_RIGHT, Phase.CREATE);
util.wiremock(NAMESPACE_LEFT, "/wiremock-" + NAMESPACE_LEFT, Phase.CREATE, false);
util.wiremock(NAMESPACE_RIGHT, "/wiremock-" + NAMESPACE_RIGHT, Phase.CREATE, false);
discoveryIt(Phase.CREATE);
testLoadBalancer();

View File

@@ -73,12 +73,12 @@ class Fabric8DiscoveryBootstrapIT {
util.setUp(NAMESPACE);
manifests(Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE, false);
}
@AfterAll
static void after() throws Exception {
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false);
manifests(Phase.DELETE);
Commons.cleanUp(IMAGE_NAME, K3S);
Commons.systemPrune();

View File

@@ -97,32 +97,32 @@ class Fabric8DiscoveryPodMetadataIT {
util.setUp(NAMESPACE);
manifests(Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE, "/wiremock", Phase.CREATE, false);
util.busybox(NAMESPACE, Phase.CREATE);
util.createNamespace(NAMESPACE_A_UAT);
util.createNamespace(NAMESPACE_B_UAT);
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.CREATE, false);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.CREATE, false);
util.createNamespace(NAMESPACE_LEFT);
util.createNamespace(NAMESPACE_RIGHT);
util.wiremock(NAMESPACE_LEFT, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_RIGHT, "/wiremock", Phase.CREATE);
util.wiremock(NAMESPACE_LEFT, "/wiremock", Phase.CREATE, false);
util.wiremock(NAMESPACE_RIGHT, "/wiremock", Phase.CREATE, false);
}
@AfterAll
static void after() throws Exception {
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE, "/wiremock", Phase.DELETE, false);
util.busybox(NAMESPACE, Phase.DELETE);
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_A_UAT, "/wiremock", Phase.DELETE, false);
util.wiremock(NAMESPACE_B_UAT, "/wiremock", Phase.DELETE, false);
util.deleteNamespace(NAMESPACE_A_UAT);
util.deleteNamespace(NAMESPACE_B_UAT);
util.wiremock(NAMESPACE_LEFT, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_RIGHT, "/wiremock", Phase.DELETE);
util.wiremock(NAMESPACE_LEFT, "/wiremock", Phase.DELETE, false);
util.wiremock(NAMESPACE_RIGHT, "/wiremock", Phase.DELETE, false);
util.deleteNamespace(NAMESPACE_LEFT);
util.deleteNamespace(NAMESPACE_RIGHT);

View File

@@ -82,12 +82,12 @@ public class Fabric8ClientLoadbalancerIT {
@BeforeEach
void beforeEach() {
util.wiremock(NAMESPACE, "/", Phase.CREATE);
util.wiremock(NAMESPACE, "/", Phase.CREATE, false);
}
@AfterEach
void afterEach() {
util.wiremock(NAMESPACE, "/", Phase.DELETE);
util.wiremock(NAMESPACE, "/", Phase.DELETE, false);
}
@Test

View File

@@ -261,22 +261,36 @@ public final class Util {
}
public void wiremock(String namespace, String path, Phase phase) {
wiremock(namespace, path, phase, true);
}
public void wiremock(String namespace, String path, Phase phase, boolean withIngress) {
InputStream deploymentStream = inputStream("wiremock/wiremock-deployment.yaml");
InputStream serviceStream = inputStream("wiremock/wiremock-service.yaml");
InputStream ingressStream = inputStream("wiremock/wiremock-ingress.yaml");
Deployment deployment = client.apps().deployments().load(deploymentStream).get();
Service service = client.services().load(serviceStream).get();
Ingress ingress = client.network().v1().ingresses().load(ingressStream).get();
Ingress ingress = null;
if (phase.equals(Phase.CREATE)) {
if (withIngress) {
ingress = client.network().v1().ingresses().load(ingressStream).get();
ingress.getMetadata().setNamespace(namespace);
ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0).setPath(path);
}
deployment.getMetadata().setNamespace(namespace);
service.getMetadata().setNamespace(namespace);
ingress.getMetadata().setNamespace(namespace);
ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0).setPath(path);
createAndWait(namespace, "wiremock", deployment, service, ingress, false);
}
else {
if (withIngress) {
ingress = client.network().v1().ingresses().load(ingressStream).get();
}
deleteAndWait(namespace, deployment, service, ingress);
}

View File

@@ -420,19 +420,35 @@ public final class Util {
.getItems().stream().noneMatch(x -> x.getMetadata().getName().equals(name)));
}
/**
* deploy wiremock without ingress.
*/
public void wiremock(String namespace, String path, Phase phase) {
wiremock(namespace, path, phase, true);
}
public void wiremock(String namespace, String path, Phase phase, boolean withIngress) {
V1Deployment deployment = (V1Deployment) yaml("wiremock/wiremock-deployment.yaml");
V1Service service = (V1Service) yaml("wiremock/wiremock-service.yaml");
V1Ingress ingress = (V1Ingress) yaml("wiremock/wiremock-ingress.yaml");
V1Ingress ingress = null;
if (phase.equals(Phase.CREATE)) {
if (withIngress) {
ingress = (V1Ingress) yaml("wiremock/wiremock-ingress.yaml");
ingress.getMetadata().setNamespace(namespace);
ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0).setPath(path);
}
deployment.getMetadata().setNamespace(namespace);
service.getMetadata().setNamespace(namespace);
ingress.getMetadata().setNamespace(namespace);
ingress.getSpec().getRules().get(0).getHttp().getPaths().get(0).setPath(path);
createAndWait(namespace, "wiremock", deployment, service, ingress, false);
}
else {
if (withIngress) {
ingress = (V1Ingress) yaml("wiremock/wiremock-ingress.yaml");
}
deleteAndWait(namespace, deployment, service, ingress);
}
@@ -617,7 +633,7 @@ public final class Util {
private boolean isDeploymentReady(String deploymentName, String namespace) throws ApiException {
V1DeploymentList deployments = appsV1Api.listNamespacedDeployment(namespace, null, null, null,
"metadata.name=" + deploymentName, null, null, null, null, null, null);
if (deployments.getItems().size() < 1) {
if (deployments.getItems().isEmpty()) {
fail("No deployments with the name " + deploymentName);
}
V1Deployment deployment = deployments.getItems().get(0);