1
1
package io .javaoperatorsdk .operator .sample .cacheprune ;
2
2
3
+ import java .util .HashMap ;
4
+ import java .util .Map ;
5
+ import java .util .concurrent .atomic .AtomicInteger ;
6
+
3
7
import io .fabric8 .kubernetes .api .model .ConfigMap ;
4
8
import io .fabric8 .kubernetes .api .model .ObjectMeta ;
5
9
import io .fabric8 .kubernetes .client .KubernetesClient ;
10
+ import io .fabric8 .kubernetes .client .dsl .base .PatchContext ;
11
+ import io .fabric8 .kubernetes .client .dsl .base .PatchType ;
12
+ import io .javaoperatorsdk .operator .api .config .ConfigurationServiceProvider ;
6
13
import io .javaoperatorsdk .operator .api .config .informer .InformerConfiguration ;
7
14
import io .javaoperatorsdk .operator .api .reconciler .*;
8
15
import io .javaoperatorsdk .operator .junit .KubernetesClientAware ;
9
- import io .javaoperatorsdk .operator .processing .event .ResourceID ;
10
16
import io .javaoperatorsdk .operator .processing .event .source .EventSource ;
11
17
import io .javaoperatorsdk .operator .processing .event .source .informer .InformerEventSource ;
12
- import io .javaoperatorsdk .operator .support .TestExecutionInfoProvider ;
13
-
14
- import java .util .HashMap ;
15
- import java .util .Map ;
16
- import java .util .Set ;
17
- import java .util .concurrent .atomic .AtomicInteger ;
18
18
19
19
@ ControllerConfiguration
20
+ // @ControllerConfiguration(itemStore = LabelRemovingItemStore.class)
20
21
public class CachePruneReconciler
21
- implements Reconciler <CachePruneCustomResource >, EventSourceInitializer <CachePruneCustomResource >,
22
- Cleaner <CachePruneCustomResource >, KubernetesClientAware {
22
+ implements Reconciler <CachePruneCustomResource >,
23
+ EventSourceInitializer <CachePruneCustomResource >,
24
+ Cleaner <CachePruneCustomResource >, KubernetesClientAware {
23
25
26
+ public static final String DATA_KEY = "data" ;
24
27
private final AtomicInteger numberOfExecutions = new AtomicInteger (0 );
25
28
private KubernetesClient client ;
26
29
@@ -30,10 +33,21 @@ public UpdateControl<CachePruneCustomResource> reconcile(
30
33
Context <CachePruneCustomResource > context ) {
31
34
numberOfExecutions .addAndGet (1 );
32
35
33
-
34
-
35
-
36
- return UpdateControl .noUpdate ();
36
+ var configMap = context .getSecondaryResource (ConfigMap .class );
37
+ configMap .ifPresentOrElse (cm -> {
38
+ if (!cm .getData ().get (DATA_KEY )
39
+ .equals (resource .getSpec ().getData ())) {
40
+ var cloned = ConfigurationServiceProvider .instance ().getResourceCloner ().clone (cm );
41
+ cloned .getData ().put (DATA_KEY , resource .getSpec ().getData ());
42
+ var res = client .configMaps ().resource (cm )
43
+ .patch (PatchContext .of (PatchType .SERVER_SIDE_APPLY ), cloned );
44
+ System .out .println (res );
45
+ }
46
+ }, () -> client .configMaps ().resource (configMap (resource )).create ());
47
+
48
+ resource .setStatus (new CachePruneStatus ());
49
+ resource .getStatus ().setCreated (true );
50
+ return UpdateControl .patchStatus (resource );
37
51
}
38
52
39
53
@@ -44,22 +58,22 @@ public int getNumberOfExecutions() {
44
58
@ Override
45
59
public Map <String , EventSource > prepareEventSources (
46
60
EventSourceContext <CachePruneCustomResource > context ) {
47
-
48
61
InformerEventSource <ConfigMap , CachePruneCustomResource > configMapEventSource =
49
- new InformerEventSource <ConfigMap , CachePruneCustomResource >(InformerConfiguration .from (ConfigMap .class ,context ).build (),
50
- context );
62
+ new InformerEventSource <>(InformerConfiguration .from (ConfigMap .class , context )
63
+ // .withItemStore(new LabelRemovingItemStore<>())
64
+ .build (),
65
+ context );
51
66
return EventSourceInitializer .nameEventSources (configMapEventSource );
52
67
}
53
68
54
- ConfigMap configMap (String name , CachePruneCustomResource resource ) {
69
+ ConfigMap configMap (CachePruneCustomResource resource ) {
55
70
ConfigMap configMap = new ConfigMap ();
56
71
configMap .setMetadata (new ObjectMeta ());
57
- configMap .getMetadata ().setName (name );
72
+ configMap .getMetadata ().setName (resource . getMetadata (). getName () );
58
73
configMap .getMetadata ().setNamespace (resource .getMetadata ().getNamespace ());
59
- configMap .setData (new HashMap <>());
60
- configMap .getData ().put (name , name );
74
+ configMap .setData (Map .of (DATA_KEY , resource .getSpec ().getData ()));
61
75
HashMap <String , String > labels = new HashMap <>();
62
- labels .put ("multisecondary " , "true " );
76
+ labels .put ("mylabel " , "val " );
63
77
configMap .getMetadata ().setLabels (labels );
64
78
configMap .addOwnerReference (resource );
65
79
return configMap ;
@@ -76,7 +90,8 @@ public void setKubernetesClient(KubernetesClient kubernetesClient) {
76
90
}
77
91
78
92
@ Override
79
- public DeleteControl cleanup (CachePruneCustomResource resource , Context <CachePruneCustomResource > context ) {
80
- return null ;
93
+ public DeleteControl cleanup (CachePruneCustomResource resource ,
94
+ Context <CachePruneCustomResource > context ) {
95
+ return DeleteControl .defaultDelete ();
81
96
}
82
97
}
0 commit comments