From fae1754feca56f6d7264f1ea80350806db2e9fcf Mon Sep 17 00:00:00 2001 From: reyesj2 <94730068+reyesj2@users.noreply.github.com> Date: Thu, 27 Aug 2026 12:50:32 -0500 Subject: [PATCH] clean elasticsearch transform prior to elasticsearch integration package upgrade to prevent fleet automatic rollback --- .../so-elastic-fleet-package-upgrade | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/salt/elasticfleet/tools/sbin_jinja/so-elastic-fleet-package-upgrade b/salt/elasticfleet/tools/sbin_jinja/so-elastic-fleet-package-upgrade index d645403d5..1b1b79e56 100644 --- a/salt/elasticfleet/tools/sbin_jinja/so-elastic-fleet-package-upgrade +++ b/salt/elasticfleet/tools/sbin_jinja/so-elastic-fleet-package-upgrade @@ -11,16 +11,48 @@ PKG_LOAD_FAILURES=0 PKG_LOAD_FAILURES_NAMES=() +cleanup_elasticsearch_fleet_transforms() { + local transforms transform_id attempt + + if ! transforms=$(so-elasticsearch-query "_transform/logs-elasticsearch.index_pivot-default-*" --retry 1 --retry-delay 5); then + return 0 + fi + + while IFS= read -r transform_id; do + [ -n "$transform_id" ] || continue + for attempt in {1..3}; do + if so-elasticsearch-query "_transform/$transform_id?force=true" -XDELETE --fail --retry 1 --retry-delay 5; then + break + fi + sleep 5 + done + done < <(jq -r '.transforms[]?.id' <<< "$transforms") +} + {%- for PACKAGE in SUPPORTED_PACKAGES %} if INSTALLED_VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}") && LATEST_VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}"); then if [ "$INSTALLED_VERSION" == "$LATEST_VERSION" ]; then echo "{{ PACKAGE }} integration version $INSTALLED_VERSION is already at the reported latest version $LATEST_VERSION, skipping upgrade." else +{%- if PACKAGE == 'elasticsearch' %} + cleanup_elasticsearch_fleet_transforms +{%- endif %} echo "Upgrading {{ PACKAGE }} package from $INSTALLED_VERSION to version $LATEST_VERSION..." if ! elastic_fleet_package_install "{{ PACKAGE }}" "$LATEST_VERSION"; then PKG_LOAD_FAILURES=$((PKG_LOAD_FAILURES + 1)) PKG_LOAD_FAILURES_NAMES+=("{{ PACKAGE }}") + # check that package has upgraded to the expected version after install command + elif ! LATEST_VERSION=$(elastic_fleet_package_latest_version_check "{{ PACKAGE }}"); then + echo "ERROR: Failed to get latest version information for integration {{ PACKAGE }} after upgrade attempt" + PKG_LOAD_FAILURES=$((PKG_LOAD_FAILURES + 1)) + PKG_LOAD_FAILURES_NAMES+=("{{ PACKAGE }}") + elif INSTALLED_VERSION=$(elastic_fleet_package_version_check "{{ PACKAGE }}") && [ "$INSTALLED_VERSION" == "$LATEST_VERSION" ]; then + echo "{{ PACKAGE }} integration upgraded to version $LATEST_VERSION." + else + echo "ERROR: {{ PACKAGE }} integration still at ${INSTALLED_VERSION:-unknown}; expected $LATEST_VERSION" + PKG_LOAD_FAILURES=$((PKG_LOAD_FAILURES + 1)) + PKG_LOAD_FAILURES_NAMES+=("{{ PACKAGE }}") fi fi else