From db38ad4e882b36b5b7d2a310b47a149cb6571fbe Mon Sep 17 00:00:00 2001 From: Moshe Vayner Date: Thu, 2 Jul 2026 16:22:07 -0400 Subject: [PATCH 1/3] fix: update configmap deletion checks to use wildcard matching and add bash shell support in test scripts Signed-off-by: Moshe Vayner --- e2e/test/lb-created-with-invalid-ip/chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 8 +++++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- .../chainsaw-test.yaml | 5 ++++- e2e/test/lb-created-with-unreserved-ip/chainsaw-test.yaml | 5 ++++- 11 files changed, 47 insertions(+), 11 deletions(-) diff --git a/e2e/test/lb-created-with-invalid-ip/chainsaw-test.yaml b/e2e/test/lb-created-with-invalid-ip/chainsaw-test.yaml index 6d33b100..cd780f30 100644 --- a/e2e/test/lb-created-with-invalid-ip/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-invalid-ip/chainsaw-test.yaml @@ -59,7 +59,7 @@ spec: set -euo pipefail delete_cm=$(kubectl delete configmap invalid-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"invalid-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "invalid-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -80,6 +80,9 @@ spec: - name: get service ip and compare with invalid ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail invalid_ip=$(kubectl get configmap invalid-ip-config -o=jsonpath='{.data.InvalidIP}' -n $NAMESPACE) diff --git a/e2e/test/lb-created-with-reserved-ip-and-nb-id-annotations/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-and-nb-id-annotations/chainsaw-test.yaml index 50f07f74..069acba5 100644 --- a/e2e/test/lb-created-with-reserved-ip-and-nb-id-annotations/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-and-nb-id-annotations/chainsaw-test.yaml @@ -122,7 +122,7 @@ spec: fi delete_cm=$(kubectl delete configmap nb-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"nb-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "nb-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -146,6 +146,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-attached-to-nb/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-attached-to-nb/chainsaw-test.yaml index 037ca2eb..162b525c 100644 --- a/e2e/test/lb-created-with-reserved-ip-attached-to-nb/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-attached-to-nb/chainsaw-test.yaml @@ -139,7 +139,7 @@ spec: fi delete_cm=$(kubectl delete configmap nb-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"nb-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "nb-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -164,6 +164,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-change-ip-concurrently/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-change-ip-concurrently/chainsaw-test.yaml index 83658f4b..95b74ee3 100644 --- a/e2e/test/lb-created-with-reserved-ip-change-ip-concurrently/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-change-ip-concurrently/chainsaw-test.yaml @@ -124,7 +124,7 @@ spec: fi delete_cm=$(kubectl delete configmap reserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"reserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "reserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -208,6 +208,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-change-ip-unreserved/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-change-ip-unreserved/chainsaw-test.yaml index 72996586..7221825c 100644 --- a/e2e/test/lb-created-with-reserved-ip-change-ip-unreserved/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-change-ip-unreserved/chainsaw-test.yaml @@ -68,6 +68,9 @@ spec: kind: Service cleanup: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail @@ -88,7 +91,7 @@ spec: fi delete_cm=$(kubectl delete configmap reserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"reserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "reserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -158,6 +161,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-change-ip/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-change-ip/chainsaw-test.yaml index bb7e6234..5d5ace15 100644 --- a/e2e/test/lb-created-with-reserved-ip-change-ip/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-change-ip/chainsaw-test.yaml @@ -120,7 +120,7 @@ spec: fi delete_cm=$(kubectl delete configmap reserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"reserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "reserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -189,6 +189,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-linode-range/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-linode-range/chainsaw-test.yaml index a467cffb..6dd7af17 100644 --- a/e2e/test/lb-created-with-reserved-ip-linode-range/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-linode-range/chainsaw-test.yaml @@ -139,7 +139,7 @@ spec: fi delete_cm=$(kubectl delete configmap reserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"reserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "reserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -163,6 +163,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-multiple-change-ip/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-multiple-change-ip/chainsaw-test.yaml index 974950bd..266141ed 100644 --- a/e2e/test/lb-created-with-reserved-ip-multiple-change-ip/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-multiple-change-ip/chainsaw-test.yaml @@ -125,7 +125,7 @@ spec: fi delete_cm=$(kubectl delete configmap reserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"reserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "reserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -208,6 +208,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-reserved-ip-nb-range/chainsaw-test.yaml b/e2e/test/lb-created-with-reserved-ip-nb-range/chainsaw-test.yaml index 092f41bd..50848cac 100644 --- a/e2e/test/lb-created-with-reserved-ip-nb-range/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-reserved-ip-nb-range/chainsaw-test.yaml @@ -171,7 +171,7 @@ spec: fi delete_cm=$(kubectl delete configmap reserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"reserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "reserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -195,6 +195,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-specified-nb-id-reserved/chainsaw-test.yaml b/e2e/test/lb-created-with-specified-nb-id-reserved/chainsaw-test.yaml index fa0c72a7..8a1ea8c1 100644 --- a/e2e/test/lb-created-with-specified-nb-id-reserved/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-specified-nb-id-reserved/chainsaw-test.yaml @@ -122,7 +122,7 @@ spec: fi delete_cm=$(kubectl delete configmap nb-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"nb-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "nb-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -145,6 +145,9 @@ spec: - name: get service ip and compare with reserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail diff --git a/e2e/test/lb-created-with-unreserved-ip/chainsaw-test.yaml b/e2e/test/lb-created-with-unreserved-ip/chainsaw-test.yaml index 6af4524c..512394c8 100644 --- a/e2e/test/lb-created-with-unreserved-ip/chainsaw-test.yaml +++ b/e2e/test/lb-created-with-unreserved-ip/chainsaw-test.yaml @@ -60,7 +60,7 @@ spec: set -euo pipefail delete_cm=$(kubectl delete configmap unreserved-ip-config -n $NAMESPACE) - if [[ "$delete_cm" == "configmap \"unreserved-ip-config\" deleted" ]]; then + if [[ "$delete_cm" == *'configmap "unreserved-ip-config" deleted'* ]]; then echo "Configmap deleted successfully" else echo "Unable to delete the configmap: $delete_cm. Error: $delete_cm" @@ -81,6 +81,9 @@ spec: - name: get service ip and compare with unreserved ip try: - script: + shell: bash + shellArgs: + - -c content: | set -euo pipefail From 9596dfa1c6d3fc6a19260cc2269a40650d9fdaaa Mon Sep 17 00:00:00 2001 From: Moshe Vayner Date: Thu, 2 Jul 2026 17:05:50 -0400 Subject: [PATCH 2/3] [test] add `skipDelete` to avoid redundant deletion of already removed resources This will reduce some of the noisy errors in the test logs about not being able to delete something that was already removed. Signed-off-by: Moshe Vayner --- e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml | 1 + e2e/test/lb-fw-delete-acl/chainsaw-test.yaml | 2 ++ e2e/test/lb-preserve-annotation-svc-delete/chainsaw-test.yaml | 1 + e2e/test/lb-simple/chainsaw-test.yaml | 1 + e2e/test/lb-single-tls/chainsaw-test.yaml | 1 + e2e/test/lb-update-port/chainsaw-test.yaml | 2 ++ e2e/test/lb-with-ipv6-backends/chainsaw-test.yaml | 1 + 7 files changed, 9 insertions(+) diff --git a/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml b/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml index 8df9ffa4..6e5e2d8d 100644 --- a/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml +++ b/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml @@ -37,6 +37,7 @@ spec: status: (loadBalancer.ingress[0].ip != null): true - name: Create nodebalancer and create resources + skipDelete: true try: - script: shell: bash diff --git a/e2e/test/lb-fw-delete-acl/chainsaw-test.yaml b/e2e/test/lb-fw-delete-acl/chainsaw-test.yaml index 1311ed10..632a2280 100644 --- a/e2e/test/lb-fw-delete-acl/chainsaw-test.yaml +++ b/e2e/test/lb-fw-delete-acl/chainsaw-test.yaml @@ -19,6 +19,7 @@ spec: kubectl logs -n kube-system daemonsets/ccm-linode | grep "lb-fw-delete-acl" | tail -100 steps: - name: Create pods and services + skipDelete: true try: - apply: file: create-pods-services.yaml @@ -118,6 +119,7 @@ spec: ($error == null): true (contains($stdout, 'firewall detatched and deleted')): true - name: Refresh service by adding the ACL again + skipDelete: true try: - apply: file: create-pods-services.yaml diff --git a/e2e/test/lb-preserve-annotation-svc-delete/chainsaw-test.yaml b/e2e/test/lb-preserve-annotation-svc-delete/chainsaw-test.yaml index 7035dd7b..ce221e94 100644 --- a/e2e/test/lb-preserve-annotation-svc-delete/chainsaw-test.yaml +++ b/e2e/test/lb-preserve-annotation-svc-delete/chainsaw-test.yaml @@ -19,6 +19,7 @@ spec: kubectl logs -n kube-system daemonsets/ccm-linode | grep "lb-preserve-annotation-svc-delete" | tail -100 steps: - name: Create resources + skipDelete: true try: - apply: file: create-pods-services.yaml diff --git a/e2e/test/lb-simple/chainsaw-test.yaml b/e2e/test/lb-simple/chainsaw-test.yaml index c667d518..8c24f4e4 100644 --- a/e2e/test/lb-simple/chainsaw-test.yaml +++ b/e2e/test/lb-simple/chainsaw-test.yaml @@ -19,6 +19,7 @@ spec: kubectl logs -n kube-system daemonsets/ccm-linode | grep "lb-simple" | tail -100 steps: - name: Create pods and services + skipDelete: true try: - apply: file: create-pods-services.yaml diff --git a/e2e/test/lb-single-tls/chainsaw-test.yaml b/e2e/test/lb-single-tls/chainsaw-test.yaml index aa6c3642..a17551f3 100644 --- a/e2e/test/lb-single-tls/chainsaw-test.yaml +++ b/e2e/test/lb-single-tls/chainsaw-test.yaml @@ -30,6 +30,7 @@ spec: check: ($error == null): true - name: Create pods and services + skipDelete: true try: - apply: file: create-pods-services.yaml diff --git a/e2e/test/lb-update-port/chainsaw-test.yaml b/e2e/test/lb-update-port/chainsaw-test.yaml index fa459693..107ef22a 100644 --- a/e2e/test/lb-update-port/chainsaw-test.yaml +++ b/e2e/test/lb-update-port/chainsaw-test.yaml @@ -19,6 +19,7 @@ spec: kubectl logs -n kube-system daemonsets/ccm-linode | grep "lb-update-port" | tail -100 steps: - name: Create pods and services + skipDelete: true try: - apply: file: create-pods-services.yaml @@ -82,6 +83,7 @@ spec: ($error == null): true (contains($stdout, 'all pods responded')): true - name: Update service + skipDelete: true try: - apply: file: update-port-service.yaml diff --git a/e2e/test/lb-with-ipv6-backends/chainsaw-test.yaml b/e2e/test/lb-with-ipv6-backends/chainsaw-test.yaml index dd50f0d7..071d1b3b 100644 --- a/e2e/test/lb-with-ipv6-backends/chainsaw-test.yaml +++ b/e2e/test/lb-with-ipv6-backends/chainsaw-test.yaml @@ -18,6 +18,7 @@ spec: kubectl logs -n kube-system daemonsets/ccm-linode | grep "lb-with-ipv6-backends" | tail -100 steps: - name: Create pods and service + skipDelete: true try: - apply: file: create-pods-services.yaml From 71852f17af920a5a60b0acee1afadec1d0b01600 Mon Sep 17 00:00:00 2001 From: Moshe Vayner Date: Thu, 2 Jul 2026 17:07:09 -0400 Subject: [PATCH 3/3] [test] add assertion to check load balancer IP assignment in chainsaw-test.yaml Right now the test has a race condition because it tries to validate the loadbalancer before it has an IP assigned. This should fix it. Signed-off-by: Moshe Vayner --- e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml | 1 - .../chainsaw-test.yaml | 10 ++++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml b/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml index 6e5e2d8d..8df9ffa4 100644 --- a/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml +++ b/e2e/test/lb-delete-svc-no-nb/chainsaw-test.yaml @@ -37,7 +37,6 @@ spec: status: (loadBalancer.ingress[0].ip != null): true - name: Create nodebalancer and create resources - skipDelete: true try: - script: shell: bash diff --git a/e2e/test/lb-with-proxyprotocol-default-annotation/chainsaw-test.yaml b/e2e/test/lb-with-proxyprotocol-default-annotation/chainsaw-test.yaml index 96a6d39f..12f9d522 100644 --- a/e2e/test/lb-with-proxyprotocol-default-annotation/chainsaw-test.yaml +++ b/e2e/test/lb-with-proxyprotocol-default-annotation/chainsaw-test.yaml @@ -39,6 +39,16 @@ spec: name: svc-test (subsets[0].addresses != null): true (subsets[0].ports != null): true + - name: Check that loadbalancer ip is assigned + try: + - assert: + resource: + apiVersion: v1 + kind: Service + metadata: + name: svc-test + status: + (loadBalancer.ingress[0].ip != null): true - name: Add ProxyProtocol v2 using deprecated annotation try: - script: