Skip to content

Commit 1d45599

Browse files
committed
fix: sekeleton
1 parent ea8d066 commit 1d45599

File tree

15 files changed

+309
-96
lines changed

15 files changed

+309
-96
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package io.javaoperatorsdk.admissioncontroller.api;
2+
3+
public class AdmissionControllerException extends RuntimeException {
4+
5+
public AdmissionControllerException() {
6+
}
7+
8+
public AdmissionControllerException(String message) {
9+
super(message);
10+
}
11+
12+
public AdmissionControllerException(String message, Throwable cause) {
13+
super(message, cause);
14+
}
15+
16+
public AdmissionControllerException(Throwable cause) {
17+
super(cause);
18+
}
19+
20+
public AdmissionControllerException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
21+
super(message, cause, enableSuppression, writableStackTrace);
22+
}
23+
}

core/src/main/java/io/javaoperatorsdk/admissioncontroller/api/Validator.java

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.clone;
2+
3+
import io.fabric8.kubernetes.api.model.HasMetadata;
4+
5+
public interface Cloner {
6+
7+
/**
8+
* Returns a deep copy of the given object if not {@code null} or {@code null} otherwise.
9+
*
10+
* @param object the object to be cloned
11+
* @param <R> the type of the object to be cloned
12+
* @return a deep copy of the given object if it isn't {@code null}, {@code null} otherwise
13+
*/
14+
<R> R clone(R object);
15+
16+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.clone;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
6+
public class ObjectMapperCloner implements Cloner{
7+
8+
private final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
9+
10+
@Override
11+
public <R> R clone(R object) {
12+
if (object == null) {
13+
return null;
14+
}
15+
try {
16+
return (R) OBJECT_MAPPER.readValue(OBJECT_MAPPER.writeValueAsString(object), object.getClass());
17+
} catch (JsonProcessingException e) {
18+
throw new IllegalStateException(e);
19+
}
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.mutation;
2+
3+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionRequest;
4+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionResponse;
5+
import io.javaoperatorsdk.admissioncontroller.api.clone.Cloner;
6+
import io.javaoperatorsdk.admissioncontroller.api.clone.ObjectMapperCloner;
7+
8+
public class DefaultRequestResponseMutator<T> implements RequestResponseMutator {
9+
10+
private final Mutator<T> mutator;
11+
private final Cloner cloner;
12+
13+
public DefaultRequestResponseMutator(Mutator<T> mutator) {
14+
this(mutator, new ObjectMapperCloner());
15+
}
16+
17+
public DefaultRequestResponseMutator(Mutator<T> mutator, Cloner cloner) {
18+
this.mutator = mutator;
19+
this.cloner = cloner;
20+
}
21+
22+
@Override
23+
public AdmissionResponse mutate(AdmissionRequest admissionRequest) {
24+
admissionRequest.getObject();
25+
26+
27+
return null;
28+
}
29+
30+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.mutation;
2+
3+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionReview;
4+
5+
public class MutatingAdmissionController<T> {
6+
7+
private final RequestResponseMutator requestResponseMutator;
8+
9+
public MutatingAdmissionController(Mutator<T> mutator) {
10+
this(new DefaultRequestResponseMutator<>(mutator));
11+
}
12+
13+
public MutatingAdmissionController(RequestResponseMutator requestResponseMutator) {
14+
this.requestResponseMutator = requestResponseMutator;
15+
}
16+
17+
public AdmissionReview handle(AdmissionReview admissionReview) {
18+
var response = requestResponseMutator.mutate(admissionReview.getRequest());
19+
AdmissionReview responseAdmissionReview = new AdmissionReview();
20+
responseAdmissionReview.setResponse(response);
21+
response.setUid(admissionReview.getRequest().getUid());
22+
return responseAdmissionReview;
23+
}
24+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.mutation;
2+
3+
public interface Mutator<T> {
4+
5+
T mutate(T resource);
6+
7+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.mutation;
2+
3+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionRequest;
4+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionResponse;
5+
6+
public interface RequestResponseMutator {
7+
8+
AdmissionResponse mutate(AdmissionRequest admissionRequest);
9+
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.validation;
2+
3+
import io.fabric8.kubernetes.api.model.admission.v1.AdmissionReview;
4+
5+
public class ValidatingAdmissionController {
6+
7+
public AdmissionReview handle(AdmissionReview admissionReview) {
8+
return null;
9+
}
10+
11+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package io.javaoperatorsdk.admissioncontroller.api.validation;
2+
3+
import io.javaoperatorsdk.admissioncontroller.api.AdmissionControllerException;
4+
5+
public class ValidationException extends AdmissionControllerException {
6+
7+
}

0 commit comments

Comments
 (0)