1
1
package io .javaoperatorsdk .admissioncontroller .mutation ;
2
2
3
- import java .nio .charset .StandardCharsets ;
4
- import java .util .Base64 ;
5
-
6
3
import io .fabric8 .kubernetes .api .model .KubernetesResource ;
7
4
import io .fabric8 .kubernetes .api .model .admission .v1 .AdmissionRequest ;
8
5
import io .fabric8 .kubernetes .api .model .admission .v1 .AdmissionResponse ;
9
- import io .fabric8 .zjsonpatch .JsonDiff ;
10
6
import io .javaoperatorsdk .admissioncontroller .AdmissionUtils ;
11
7
import io .javaoperatorsdk .admissioncontroller .NotAllowedException ;
12
8
import io .javaoperatorsdk .admissioncontroller .Operation ;
13
9
import io .javaoperatorsdk .admissioncontroller .RequestHandler ;
14
10
import io .javaoperatorsdk .admissioncontroller .clone .Cloner ;
15
11
import io .javaoperatorsdk .admissioncontroller .clone .ObjectMapperCloner ;
16
12
17
- import com .fasterxml .jackson .databind .ObjectMapper ;
18
-
13
+ import static io .javaoperatorsdk .admissioncontroller .AdmissionUtils .admissionResponseFromMutation ;
19
14
import static io .javaoperatorsdk .admissioncontroller .AdmissionUtils .getTargetResource ;
20
15
21
16
public class DefaultRequestMutator <T extends KubernetesResource > implements RequestHandler {
22
17
23
- public static final String JSON_PATCH = "JSONPatch" ;
24
- private final ObjectMapper mapper = new ObjectMapper ();
25
-
26
18
private final Mutator <T > mutator ;
27
19
private final Cloner <T > cloner ;
28
20
@@ -43,26 +35,11 @@ public AdmissionResponse handle(AdmissionRequest admissionRequest) {
43
35
AdmissionResponse admissionResponse ;
44
36
try {
45
37
var mutatedResource = mutator .mutate (clonedResource , operation );
46
- admissionResponse = createAdmissionResponseFromMutation (originalResource , mutatedResource );
38
+ admissionResponse = admissionResponseFromMutation (originalResource , mutatedResource );
47
39
} catch (NotAllowedException e ) {
48
40
admissionResponse = AdmissionUtils .notAllowedExceptionToAdmissionResponse (e );
49
41
}
50
42
return admissionResponse ;
51
43
}
52
44
53
- private AdmissionResponse createAdmissionResponseFromMutation (T originalResource ,
54
- T mutatedResource ) {
55
- AdmissionResponse admissionResponse = new AdmissionResponse ();
56
- admissionResponse .setAllowed (true );
57
- admissionResponse .setPatchType (JSON_PATCH );
58
- var originalResNode = mapper .valueToTree (originalResource );
59
- var mutatedResNode = mapper .valueToTree (mutatedResource );
60
-
61
- var diff = JsonDiff .asJson (originalResNode , mutatedResNode );
62
- String base64Diff =
63
- Base64 .getEncoder ().encodeToString (diff .textValue ().getBytes (StandardCharsets .UTF_8 ));
64
- admissionResponse .setPatch (base64Diff );
65
- return admissionResponse ;
66
- }
67
-
68
45
}
0 commit comments