#!/bin/sh # MSRC-100765 Ambari UI patch (headnode-only, idempotent) set -eu NODE="$(hostname -s 2>/dev/null || hostname)" # Only on headnodes case "$NODE" in hn[0-9]*) ;; *) logger "MSRC-100765: skipping non-headnode ($NODE)" exit 0 ;; esac MARKER="/var/tmp/msrc_100765_ui_patch_done" if [ -f "$MARKER" ]; then logger "MSRC-100765: already applied (marker exists: $MARKER). Exiting." exit 0 fi BASE_DIR="/tmp/patch-AmbariUiMsrc-100765" STAGE_DIR="$BASE_DIR/stage" BKP_DIR="$BASE_DIR/bkpFiles" TARBALL="$BASE_DIR/ambari_ui_patch_5files.tar.gz" PATCH_URL="https://hdiconfigactions.blob.core.windows.net/ambari-patch-100765/ambari_ui_patch_5files.tar.gz" AMBARI_WEB_APPJS="/usr/lib/ambari-server/web/javascripts/app.js" ADMIN_VIEW_DIR="/var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.3}" ADMIN_MAINJS="$ADMIN_VIEW_DIR/scripts/main.js" ADMIN_CLUSTER_HTML="$ADMIN_VIEW_DIR/views/clusters/clusterInformation.html" ADMIN_RC_EDIT_HTML="$ADMIN_VIEW_DIR/views/remoteClusters/editRemoteClusterPage.html" ADMIN_RC_PAGE_HTML="$ADMIN_VIEW_DIR/views/remoteClusters/remoteClusterPage.html" if [ ! -d "$ADMIN_VIEW_DIR" ]; then logger "MSRC-100765: Admin View dir not found ($ADMIN_VIEW_DIR). Exiting." exit 1 fi mkdir -p "$BASE_DIR" "$STAGE_DIR" "$BKP_DIR" logger "MSRC-100765: downloading tarball" wget -O "$TARBALL" "$PATCH_URL" logger "MSRC-100765: extracting tarball" rm -rf "$STAGE_DIR" mkdir -p "$STAGE_DIR" tar -xzf "$TARBALL" -C "$STAGE_DIR" logger "MSRC-100765: taking backups (best effort)" cp -n "$AMBARI_WEB_APPJS" "$BKP_DIR/app.js.orig" 2>/dev/null || true cp -n "$ADMIN_MAINJS" "$BKP_DIR/main.js.orig" 2>/dev/null || true cp -n "$ADMIN_CLUSTER_HTML" "$BKP_DIR/clusterInformation.html.orig" 2>/dev/null || true cp -n "$ADMIN_RC_EDIT_HTML" "$BKP_DIR/editRemoteClusterPage.html.orig" 2>/dev/null || true cp -n "$ADMIN_RC_PAGE_HTML" "$BKP_DIR/remoteClusterPage.html.orig" 2>/dev/null || true logger "MSRC-100765: copying patched files (5 only)" cp -f "$STAGE_DIR/usr/lib/ambari-server/web/javascripts/app.js" \ "$AMBARI_WEB_APPJS" cp -f "$STAGE_DIR/var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.3}/scripts/main.js" \ "$ADMIN_MAINJS" cp -f "$STAGE_DIR/var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.3}/views/clusters/clusterInformation.html" \ "$ADMIN_CLUSTER_HTML" cp -f "$STAGE_DIR/var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.3}/views/remoteClusters/editRemoteClusterPage.html" \ "$ADMIN_RC_EDIT_HTML" cp -f "$STAGE_DIR/var/lib/ambari-server/resources/views/work/ADMIN_VIEW{2.7.3}/views/remoteClusters/remoteClusterPage.html" \ "$ADMIN_RC_PAGE_HTML" # Mark done before restart date -u +"%Y-%m-%dT%H:%M:%SZ patched on $NODE" > "$MARKER" logger "MSRC-100765: completed on $NODE" exit 0