Skip to content

Commit ca4cb00

Browse files
authored
refactor: move conversion hook method (#55)
1 parent fb0a550 commit ca4cb00

File tree

5 files changed

+35
-35
lines changed

5 files changed

+35
-35
lines changed

docs/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ The conversion hook is configured within the `CustomResourceDefinition`, see
9191
related [Kubernetes docs](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#configure-customresourcedefinition-to-use-conversion-webhooks).
9292
Since this is [not yet supported](https://github.com/fabric8io/kubernetes-client/issues/4692) by the fabric8 client CRD
9393
generator, the hook definition is
94-
[added before](https://github.com/java-operator-sdk/admission-controller-framework/blob/e2637a90152bebfca2983ba17268c1f7ec7e9602/samples/commons/src/test/java/io/javaoperatorsdk/webhook/sample/EndToEndTestBase.java#L97-L124) CRD is applied.
94+
[added before](https://github.com/java-operator-sdk/admission-controller-framework/blob/57a889ea1c0cb42b5a703a3cc8053f51c3982f74/samples/commons/src/main/java/io/javaoperatorsdk/webhook/sample/commons/Utils.java#L83-L110) CRD is applied.
9595

9696
Note
9797
that [cert manager](https://github.com/java-operator-sdk/admission-controller-framework/blob/e2637a90152bebfca2983ba17268c1f7ec7e9602/samples/quarkus/src/test/java/io/javaoperatorsdk/webhook/sample/QuarkusWebhooksE2E.java#L19-L23)

samples/commons/src/main/java/io/javaoperatorsdk/webhook/sample/commons/Utils.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,19 @@
33
import java.io.FileInputStream;
44
import java.io.IOException;
55
import java.io.InputStream;
6+
import java.util.List;
67
import java.util.Map;
78
import java.util.concurrent.TimeUnit;
89
import java.util.function.UnaryOperator;
910
import java.util.stream.Collectors;
1011

1112
import io.fabric8.kubernetes.api.model.HasMetadata;
13+
import io.fabric8.kubernetes.api.model.apiextensions.v1.*;
1214
import io.fabric8.kubernetes.api.model.networking.v1.*;
1315
import io.fabric8.kubernetes.client.KubernetesClient;
1416

1517
import static io.javaoperatorsdk.webhook.sample.commons.AdmissionControllers.VALIDATION_TARGET_LABEL;
18+
import static io.javaoperatorsdk.webhook.sample.commons.ConversionControllers.CONVERSION_PATH;
1619

1720
public class Utils {
1821

@@ -77,4 +80,33 @@ public static Ingress testIngress(String name) {
7780
.build();
7881
}
7982

83+
public static UnaryOperator<HasMetadata> addConversionHookEndpointToCustomResource(
84+
String serviceName) {
85+
return r -> {
86+
if (!(r instanceof CustomResourceDefinition)) {
87+
return r;
88+
}
89+
var crd = (CustomResourceDefinition) r;
90+
var crc = new CustomResourceConversion();
91+
crd.getMetadata()
92+
.setAnnotations(Map.of("cert-manager.io/inject-ca-from", "default/" + serviceName));
93+
crd.getSpec().setConversion(crc);
94+
crc.setStrategy("Webhook");
95+
96+
var whc = new WebhookConversionBuilder()
97+
.withConversionReviewVersions(List.of("v1"))
98+
.withClientConfig(new WebhookClientConfigBuilder()
99+
.withService(new ServiceReferenceBuilder()
100+
.withPath("/" + CONVERSION_PATH)
101+
.withName(serviceName)
102+
.withNamespace("default")
103+
.withPort(443)
104+
.build())
105+
.build())
106+
.build();
107+
crc.setWebhook(whc);
108+
return crd;
109+
};
110+
}
111+
80112
}

samples/commons/src/test/java/io/javaoperatorsdk/webhook/sample/EndToEndTestBase.java

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package io.javaoperatorsdk.webhook.sample;
22

33
import java.time.Duration;
4-
import java.util.List;
5-
import java.util.Map;
64
import java.util.concurrent.TimeUnit;
75
import java.util.function.Supplier;
8-
import java.util.function.UnaryOperator;
96

107
import org.junit.jupiter.api.Test;
118

12-
import io.fabric8.kubernetes.api.model.HasMetadata;
139
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
1410
import io.fabric8.kubernetes.api.model.apiextensions.v1.*;
1511
import io.fabric8.kubernetes.client.KubernetesClient;
@@ -20,7 +16,6 @@
2016
import io.javaoperatorsdk.webhook.sample.commons.customresource.MultiVersionCustomResourceV2;
2117

2218
import static io.javaoperatorsdk.webhook.sample.commons.AdmissionControllers.MUTATION_TARGET_LABEL;
23-
import static io.javaoperatorsdk.webhook.sample.commons.ConversionControllers.CONVERSION_PATH;
2419
import static io.javaoperatorsdk.webhook.sample.commons.Utils.*;
2520
import static io.javaoperatorsdk.webhook.sample.commons.Utils.SPIN_UP_GRACE_PERIOD;
2621
import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
@@ -93,33 +88,4 @@ public static void waitForCoreDNS(KubernetesClient client) {
9388
client.apps().deployments().inNamespace("kube-system").withName("coredns").waitUntilReady(2,
9489
TimeUnit.MINUTES);
9590
}
96-
97-
public static UnaryOperator<HasMetadata> addConversionHookEndpointToCustomResource(
98-
String serviceName) {
99-
return r -> {
100-
if (!(r instanceof CustomResourceDefinition)) {
101-
return r;
102-
}
103-
var crd = (CustomResourceDefinition) r;
104-
var crc = new CustomResourceConversion();
105-
crd.getMetadata()
106-
.setAnnotations(Map.of("cert-manager.io/inject-ca-from", "default/" + serviceName));
107-
crd.getSpec().setConversion(crc);
108-
crc.setStrategy("Webhook");
109-
110-
var whc = new WebhookConversionBuilder()
111-
.withConversionReviewVersions(List.of("v1"))
112-
.withClientConfig(new WebhookClientConfigBuilder()
113-
.withService(new ServiceReferenceBuilder()
114-
.withPath("/" + CONVERSION_PATH)
115-
.withName(serviceName)
116-
.withNamespace("default")
117-
.withPort(443)
118-
.build())
119-
.build())
120-
.build();
121-
crc.setWebhook(whc);
122-
return crd;
123-
};
124-
}
12591
}

samples/quarkus/src/test/java/io/javaoperatorsdk/webhook/sample/QuarkusWebhooksE2E.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import io.fabric8.kubernetes.client.KubernetesClient;
1010
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
1111

12+
import static io.javaoperatorsdk.webhook.sample.commons.Utils.addConversionHookEndpointToCustomResource;
1213
import static io.javaoperatorsdk.webhook.sample.commons.Utils.applyAndWait;
1314

1415
class QuarkusWebhooksE2E extends EndToEndTestBase {

samples/spring-boot/src/test/java/io/javaoperatorsdk/webhook/sample/springboot/SpringBootWebhooksE2E.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import io.fabric8.kubernetes.client.KubernetesClientBuilder;
1111
import io.javaoperatorsdk.webhook.sample.EndToEndTestBase;
1212

13+
import static io.javaoperatorsdk.webhook.sample.commons.Utils.addConversionHookEndpointToCustomResource;
1314
import static io.javaoperatorsdk.webhook.sample.commons.Utils.applyAndWait;
1415

1516
class SpringBootWebhooksE2E extends EndToEndTestBase {

0 commit comments

Comments
 (0)