From 32bac8ad76a2708db50bd84e5d3aeeb92e8618ad Mon Sep 17 00:00:00 2001
From: Todd Loisel <2481693+tloisel1@users.noreply.github.com>
Date: Fri, 19 Jul 2024 10:42:01 -0400
Subject: [PATCH] Update logic for detecting taint updates to include taint
 effect

---
 .../java/gyro/aws/eks/EksNodegroupResource.java   | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/main/java/gyro/aws/eks/EksNodegroupResource.java b/src/main/java/gyro/aws/eks/EksNodegroupResource.java
index b76c0a3d9..ebd140dde 100644
--- a/src/main/java/gyro/aws/eks/EksNodegroupResource.java
+++ b/src/main/java/gyro/aws/eks/EksNodegroupResource.java
@@ -534,14 +534,15 @@ public void update(
             Set<Taint> taintsToRemove = new HashSet<>(currentTaints);
             taintsToRemove.removeAll(taints);
 
-            // Taint key cannot be in both added and removed, this means it's an update, so remove from remove set.
-            Set<String> taintKeysToAddOrUpdate = taintsToAddOrUpdate.stream()
-                    .map(Taint::key)
-                    .collect(Collectors.toSet());
+            // Detect true updates.
+            // taint key and effect is the same, but the value is different.
             Set<Taint> taintsToUpdate = new HashSet<>();
-            for (Taint taint : taintsToRemove) {
-                if (taintKeysToAddOrUpdate.contains(taint.key())) {
-                    taintsToUpdate.add(taint);
+            for (Taint taintToBeRemoved : taintsToRemove) {
+                for (Taint taintToBeAdded : taintsToAddOrUpdate) {
+                    if (taintToBeRemoved.key().equals(taintToBeAdded.key()) &&
+                            taintToBeRemoved.effect().equals(taintToBeAdded.effect())) {
+                        taintsToUpdate.add(taintToBeRemoved);
+                    }
                 }
             }
             taintsToRemove.removeAll(taintsToUpdate);