12
12
import java .util .Optional ;
13
13
import java .util .Set ;
14
14
import java .util .TreeMap ;
15
- import java .util .Optional ;
16
- import java .util .Set ;
17
- import java .util .SortedMap ;
18
- import java .util .TreeMap ;
19
15
20
16
import org .slf4j .Logger ;
21
17
import org .slf4j .LoggerFactory ;
32
28
import io .javaoperatorsdk .operator .api .reconciler .Context ;
33
29
import io .javaoperatorsdk .operator .processing .LoggingUtils ;
34
30
35
- import static io .javaoperatorsdk .operator .processing .dependent .kubernetes .ResourceRequirementsSanitizer .sanitizeResourceRequirements ;
36
-
37
31
import com .github .difflib .DiffUtils ;
38
32
import com .github .difflib .UnifiedDiffUtils ;
39
33
34
+ import static io .javaoperatorsdk .operator .processing .dependent .kubernetes .ResourceRequirementsSanitizer .sanitizeResourceRequirements ;
35
+
40
36
/**
41
37
* Matches the actual state on the server vs the desired state. Based on the managedFields of SSA.
42
38
* <p>
@@ -112,15 +108,13 @@ public boolean matches(R actual, R desired, Context<?> context) {
112
108
removeIrrelevantValues (desiredMap );
113
109
114
110
var matches = prunedActual .equals (desiredMap );
115
-
116
111
if (!matches && log .isDebugEnabled () && LoggingUtils .isNotSensitiveResource (desired )) {
117
112
var diff = getDiff (prunedActual , desiredMap , objectMapper );
118
113
log .debug (
119
- "Diff between actual and desired state for resource: {} with name: {} in namespace: {} is: \n {}" ,
114
+ "Diff between actual and desired state for resource: {} with name: {} in namespace: {} is:\n {}" ,
120
115
actual .getKind (), actual .getMetadata ().getName (), actual .getMetadata ().getNamespace (),
121
116
diff );
122
117
}
123
-
124
118
return matches ;
125
119
}
126
120
@@ -129,24 +123,23 @@ private String getDiff(Map<String, Object> prunedActualMap, Map<String, Object>
129
123
var actualYaml = serialization .asYaml (sortMap (prunedActualMap ));
130
124
var desiredYaml = serialization .asYaml (sortMap (desiredMap ));
131
125
if (log .isTraceEnabled ()) {
132
- log .trace ("Pruned actual resource: \n {} \n desired resource: \n {} " , actualYaml ,
133
- desiredYaml );
126
+ log .trace ("Pruned actual resource:\n {} \n desired resource:\n {} " , actualYaml , desiredYaml );
134
127
}
135
128
136
129
var patch = DiffUtils .diff (actualYaml .lines ().toList (), desiredYaml .lines ().toList ());
137
- List < String > unifiedDiff =
130
+ var unifiedDiff =
138
131
UnifiedDiffUtils .generateUnifiedDiff ("" , "" , actualYaml .lines ().toList (), patch , 1 );
139
132
return String .join ("\n " , unifiedDiff );
140
133
}
141
134
142
135
@ SuppressWarnings ("unchecked" )
143
136
Map <String , Object > sortMap (Map <String , Object > map ) {
144
- List < String > sortedKeys = new ArrayList <>(map .keySet ());
137
+ var sortedKeys = new ArrayList <>(map .keySet ());
145
138
Collections .sort (sortedKeys );
146
139
147
- Map < String , Object > sortedMap = new LinkedHashMap <>();
148
- for (String key : sortedKeys ) {
149
- Object value = map .get (key );
140
+ var sortedMap = new LinkedHashMap <String , Object >();
141
+ for (var key : sortedKeys ) {
142
+ var value = map .get (key );
150
143
if (value instanceof Map ) {
151
144
sortedMap .put (key , sortMap ((Map <String , Object >) value ));
152
145
} else if (value instanceof List ) {
@@ -160,8 +153,8 @@ Map<String, Object> sortMap(Map<String, Object> map) {
160
153
161
154
@ SuppressWarnings ("unchecked" )
162
155
List <Object > sortListItems (List <Object > list ) {
163
- List < Object > sortedList = new ArrayList <>();
164
- for (Object item : list ) {
156
+ var sortedList = new ArrayList <>();
157
+ for (var item : list ) {
165
158
if (item instanceof Map ) {
166
159
sortedList .add (sortMap ((Map <String , Object >) item ));
167
160
} else if (item instanceof List ) {
@@ -177,9 +170,10 @@ List<Object> sortListItems(List<Object> list) {
177
170
* Correct for known issue with SSA
178
171
*/
179
172
private void sanitizeState (R actual , R desired , Map <String , Object > actualMap ) {
180
- if (actual instanceof StatefulSet ) {
181
- var actualSpec = (((StatefulSet ) actual )).getSpec ();
182
- var desiredSpec = (((StatefulSet ) desired )).getSpec ();
173
+ if (actual instanceof StatefulSet actualStatefulSet
174
+ && desired instanceof StatefulSet desiredStatefulSet ) {
175
+ var actualSpec = actualStatefulSet .getSpec ();
176
+ var desiredSpec = desiredStatefulSet .getSpec ();
183
177
int claims = desiredSpec .getVolumeClaimTemplates ().size ();
184
178
if (claims == actualSpec .getVolumeClaimTemplates ().size ()) {
185
179
for (int i = 0 ; i < claims ; i ++) {
@@ -197,18 +191,21 @@ private void sanitizeState(R actual, R desired, Map<String, Object> actualMap) {
197
191
}
198
192
}
199
193
sanitizeResourceRequirements (actualMap , actualSpec .getTemplate (), desiredSpec .getTemplate ());
200
- } else if (actual instanceof Deployment ) {
194
+ } else if (actual instanceof Deployment actualDeployment
195
+ && desired instanceof Deployment desiredDeployment ) {
201
196
sanitizeResourceRequirements (actualMap ,
202
- ((Deployment ) actual ).getSpec ().getTemplate (),
203
- ((Deployment ) desired ).getSpec ().getTemplate ());
204
- } else if (actual instanceof ReplicaSet ) {
197
+ actualDeployment .getSpec ().getTemplate (),
198
+ desiredDeployment .getSpec ().getTemplate ());
199
+ } else if (actual instanceof ReplicaSet actualReplicaSet
200
+ && desired instanceof ReplicaSet desiredReplicaSet ) {
205
201
sanitizeResourceRequirements (actualMap ,
206
- ((ReplicaSet ) actual ).getSpec ().getTemplate (),
207
- ((ReplicaSet ) desired ).getSpec ().getTemplate ());
208
- } else if (actual instanceof DaemonSet ) {
202
+ actualReplicaSet .getSpec ().getTemplate (),
203
+ desiredReplicaSet .getSpec ().getTemplate ());
204
+ } else if (actual instanceof DaemonSet actualDaemonSet
205
+ && desired instanceof DaemonSet desiredDaemonSet ) {
209
206
sanitizeResourceRequirements (actualMap ,
210
- (( DaemonSet ) actual ) .getSpec ().getTemplate (),
211
- (( DaemonSet ) desired ) .getSpec ().getTemplate ());
207
+ actualDaemonSet .getSpec ().getTemplate (),
208
+ desiredDaemonSet .getSpec ().getTemplate ());
212
209
}
213
210
}
214
211
@@ -393,7 +390,7 @@ private static Map.Entry<Integer, Map<String, Object>> selectListEntryBasedOnKey
393
390
}
394
391
}
395
392
if (possibleTargets .isEmpty ()) {
396
- throw new IllegalStateException ("Cannot find list element for key: " + key + ", in map: "
393
+ throw new IllegalStateException ("Cannot find list element for key: " + key + " in map: "
397
394
+ values .stream ().map (Map ::keySet ).toList ());
398
395
}
399
396
if (possibleTargets .size () > 1 ) {
0 commit comments