2
2
3
3
import com .github .containersolutions .operator .api .ResourceController ;
4
4
import io .fabric8 .kubernetes .client .CustomResource ;
5
- import io .fabric8 .kubernetes .client .CustomResourceDoneable ;
6
- import io .fabric8 .kubernetes .client .CustomResourceList ;
7
5
import io .fabric8 .kubernetes .client .Watcher ;
8
6
import io .fabric8 .kubernetes .client .dsl .internal .CustomResourceOperationsImpl ;
9
7
import org .slf4j .Logger ;
15
13
/**
16
14
* Dispatches events to the Controller and handles Finalizers for a single type of Custom Resource.
17
15
*/
18
- public class EventDispatcher < R extends CustomResource > {
16
+ public class EventDispatcher {
19
17
20
18
private final static Logger log = LoggerFactory .getLogger (EventDispatcher .class );
21
19
22
- private final ResourceController < R > controller ;
23
- private final CustomResourceOperationsImpl < R , CustomResourceList < R >, CustomResourceDoneable < R >> resourceOperation ;
20
+ private final ResourceController controller ;
21
+ private final CustomResourceOperationsImpl resourceOperation ;
24
22
private final String resourceDefaultFinalizer ;
25
23
26
- public EventDispatcher (ResourceController < R > controller ,
27
- CustomResourceOperationsImpl < R , CustomResourceList < R >, CustomResourceDoneable < R >> resourceOperation ,
24
+ public EventDispatcher (ResourceController controller ,
25
+ CustomResourceOperationsImpl resourceOperation ,
28
26
String defaultFinalizer
29
27
) {
30
28
this .controller = controller ;
31
29
this .resourceOperation = resourceOperation ;
32
30
this .resourceDefaultFinalizer = defaultFinalizer ;
33
31
}
34
32
35
- public void handleEvent (Watcher .Action action , R resource ) {
33
+ public void handleEvent (Watcher .Action action , CustomResource resource ) {
36
34
log .info ("Handling event {} for resource {}" , action , resource .getMetadata ());
37
35
if (action == Watcher .Action .MODIFIED || action == Watcher .Action .ADDED ) {
38
36
// Its interesting problem if we should call delete if received event after object is marked for deletion
@@ -47,12 +45,12 @@ public void handleEvent(Watcher.Action action, R resource) {
47
45
removeDefaultFinalizer (resource );
48
46
}
49
47
} else {
50
- Optional <R > updateResult = controller .createOrUpdateResource (resource );
48
+ Optional <CustomResource > updateResult = controller .createOrUpdateResource (resource );
51
49
if (updateResult .isPresent ()) {
52
50
log .debug ("Updating resource: {} with version: {}" , resource .getMetadata ().getName (),
53
51
resource .getMetadata ().getResourceVersion ());
54
52
log .trace ("Resource before update: {}" , resource );
55
- R updatedResource = updateResult .get ();
53
+ CustomResource updatedResource = updateResult .get ();
56
54
addFinalizerIfNotPresent (updatedResource );
57
55
replace (updatedResource );
58
56
log .trace ("Resource after update: {}" , resource );
@@ -75,25 +73,25 @@ public void handleEvent(Watcher.Action action, R resource) {
75
73
}
76
74
}
77
75
78
- private boolean hasDefaultFinalizer (R resource ) {
76
+ private boolean hasDefaultFinalizer (CustomResource resource ) {
79
77
if (resource .getMetadata ().getFinalizers () != null ) {
80
78
return resource .getMetadata ().getFinalizers ().contains (resourceDefaultFinalizer );
81
79
}
82
80
return false ;
83
81
}
84
82
85
- private void removeDefaultFinalizer (R resource ) {
83
+ private void removeDefaultFinalizer (CustomResource resource ) {
86
84
resource .getMetadata ().getFinalizers ().remove (resourceDefaultFinalizer );
87
85
log .debug ("Removed finalizer. Trying to replace resource {}, version: {}" , resource .getMetadata ().getName (), resource .getMetadata ().getResourceVersion ());
88
86
resourceOperation .lockResourceVersion (resource .getMetadata ().getResourceVersion ()).replace (resource );
89
87
}
90
88
91
- private void replace (R resource ) {
89
+ private void replace (CustomResource resource ) {
92
90
log .debug ("Trying to replace resource {}, version: {}" , resource .getMetadata ().getName (), resource .getMetadata ().getResourceVersion ());
93
91
resourceOperation .lockResourceVersion (resource .getMetadata ().getResourceVersion ()).replace (resource );
94
92
}
95
93
96
- private void addFinalizerIfNotPresent (R resource ) {
94
+ private void addFinalizerIfNotPresent (CustomResource resource ) {
97
95
if (!hasDefaultFinalizer (resource ) && !markedForDeletion (resource )) {
98
96
log .info ("Adding default finalizer to {}" , resource .getMetadata ());
99
97
if (resource .getMetadata ().getFinalizers () == null ) {
@@ -103,7 +101,7 @@ private void addFinalizerIfNotPresent(R resource) {
103
101
}
104
102
}
105
103
106
- private boolean markedForDeletion (R resource ) {
104
+ private boolean markedForDeletion (CustomResource resource ) {
107
105
return resource .getMetadata ().getDeletionTimestamp () != null && !resource .getMetadata ().getDeletionTimestamp ().isEmpty ();
108
106
}
109
107
}
0 commit comments