@@ -328,6 +328,8 @@ public NextAction onSuccess(Packet packet, CallResponse<V1ConfigMap> callRespons
328
328
return doNext (replaceConfigMap (getNext ()), packet );
329
329
} else if (mustPatchCurrentMap (existingMap )) {
330
330
return doNext (patchCurrentMap (existingMap , getNext ()), packet );
331
+ } else if (mustPatchImageHashInMap (existingMap , packet )) {
332
+ return doNext (patchImageHashInCurrentMap (existingMap , packet , getNext ()), packet );
331
333
} else {
332
334
logConfigMapExists ();
333
335
recordCurrentMap (packet , existingMap );
@@ -354,6 +356,11 @@ private boolean mustPatchCurrentMap(V1ConfigMap currentMap) {
354
356
return KubernetesUtils .isMissingValues (getMapLabels (currentMap ), getLabels ());
355
357
}
356
358
359
+ private boolean mustPatchImageHashInMap (V1ConfigMap currentMap , Packet packet ) {
360
+ return (currentMap .getData () != null ) && Optional .ofNullable ((String )packet .get (DOMAIN_INPUTS_HASH ))
361
+ .map (hash -> !hash .equals (currentMap .getData ().get (DOMAIN_INPUTS_HASH ))).orElse (false );
362
+ }
363
+
357
364
private Map <String , String > getMapLabels (@ NotNull V1ConfigMap map ) {
358
365
return Optional .ofNullable (map .getMetadata ()).map (V1ObjectMeta ::getLabels ).orElseGet (Collections ::emptyMap );
359
366
}
@@ -374,6 +381,17 @@ private Step patchCurrentMap(V1ConfigMap currentMap, Step next) {
374
381
new V1Patch (patchBuilder .build ().toString ()), createPatchResponseStep (next ));
375
382
}
376
383
384
+ private Step patchImageHashInCurrentMap (V1ConfigMap currentMap , Packet packet , Step next ) {
385
+ JsonPatchBuilder patchBuilder = Json .createPatchBuilder ();
386
+
387
+ patchBuilder .add ("/data/" + DOMAIN_INPUTS_HASH , (String )packet .get (DOMAIN_INPUTS_HASH ));
388
+
389
+ return new CallBuilder ()
390
+ .patchConfigMapAsync (name , namespace ,
391
+ getDomainUidLabel (Optional .of (currentMap ).map (V1ConfigMap ::getMetadata ).orElse (null )),
392
+ new V1Patch (patchBuilder .build ().toString ()), createPatchResponseStep (next ));
393
+ }
394
+
377
395
private boolean labelsNotDefined (V1ConfigMap currentMap ) {
378
396
return Objects .requireNonNull (currentMap .getMetadata ()).getLabels () == null ;
379
397
}
@@ -476,6 +494,7 @@ public NextAction apply(Packet packet) {
476
494
if (loader .isTopologyNotValid ()) {
477
495
return doNext (reportTopologyErrorsAndStop (), packet );
478
496
} else if (loader .getDomainConfig () == null ) {
497
+ loader .updateImageHashInPacket ();
479
498
return doNext (loader .createIntrospectionVersionUpdateStep (), packet );
480
499
} else {
481
500
LOGGER .fine (MessageKeys .WLS_CONFIGURATION_READ , timeSinceJobStart (packet ), loader .getDomainConfig ());
@@ -554,6 +573,10 @@ private void updatePacket() {
554
573
copyToPacketAndFileIfPresent (DOMAIN_INPUTS_HASH , getModelInImageSpecHash ());
555
574
}
556
575
576
+ private void updateImageHashInPacket () {
577
+ copyToPacketAndFileIfPresent (DOMAIN_INPUTS_HASH , getModelInImageSpecHash ());
578
+ }
579
+
557
580
private Step createIntrospectionVersionUpdateStep () {
558
581
return DomainValidationSteps .createValidateDomainTopologyStep (
559
582
createIntrospectorConfigMapContext ().patchOnly ().verifyConfigMap (conflictStep .getNext ()));
0 commit comments