Skip to content

Instantly share code, notes, and snippets.

@mdrakiburrahman
Created July 1, 2024 20:39
Show Gist options
  • Save mdrakiburrahman/e14d8d4ae50cc0891591d23f4ce1f13d to your computer and use it in GitHub Desktop.
Save mdrakiburrahman/e14d8d4ae50cc0891591d23f4ce1f13d to your computer and use it in GitHub Desktop.
IFS='|' read -ra JAR_ARRAY <<<"$SYNAPSE_WORKSPACE_PACKAGE_UPLOAD_PIPE_DELIMITED"
for JAR in "${JAR_ARRAY[@]}"; do
export PACKAGE_NAME=$(echo "${JAR}" | awk -F'/' '{print $NF}')
echo "Checking if package ${PACKAGE_NAME} exists in ${SYNAPSE_WORKSPACE_NAME}"
export PACKAGE_ID_EXISTING=$(az synapse workspace-package show --workspace-name "$SYNAPSE_WORKSPACE_NAME" --name "$PACKAGE_NAME" --query "id" -o tsv)
export PACKAGE_EXISTS=false
if [ -z "$PACKAGE_ID_EXISTING" ]; then
echo "Package ${PACKAGE_NAME} does not exist in ${SYNAPSE_WORKSPACE_NAME}."
else
echo "Package ${PACKAGE_NAME} exists in ${SYNAPSE_WORKSPACE_NAME}."
PACKAGE_EXISTS=true
fi
if [ "$PACKAGE_EXISTS" = true ] && [ "$FORCE_PACKAGE_UPLOAD" = "1" ]; then
POOLS=$(az synapse spark pool list --workspace-name "$SYNAPSE_WORKSPACE_NAME" --resource-group "$SYNAPSE_WORKSPACE_RG" --subscription "$SYNAPSE_WORKSPACE_SUB_ID" | jq -c '.[]')
for POOL in $POOLS; do
POOL_NAME=$(echo $POOL | jq -r '.name')
POOL_LIBS=$(echo $POOL | jq -c '.customLibraries[]')
echo "Checking pool $POOL_NAME for package $PACKAGE_NAME"
for LIB in $POOL_LIBS; do
LIB_NAME=$(echo $LIB | jq -r '.name')
if [ "$LIB_NAME" == "$PACKAGE_NAME" ]; then
echo "Removing package $PACKAGE_NAME from pool $POOL_NAME"
az synapse spark pool update --name "$POOL_NAME" --workspace-name "$SYNAPSE_WORKSPACE_NAME" --resource-group "$SYNAPSE_WORKSPACE_RG" --subscription "$SYNAPSE_WORKSPACE_SUB_ID" --package-action Remove --package "$PACKAGE_NAME"
fi
done
done
echo "Attempting to force delete existing package ${PACKAGE_NAME} in ${SYNAPSE_WORKSPACE_NAME}"
az synapse workspace-package delete --workspace-name ${SYNAPSE_WORKSPACE_NAME} --name ${PACKAGE_NAME} --yes
echo "Force deleted package ${PACKAGE_NAME} in ${SYNAPSE_WORKSPACE_NAME}."
elif [ "$PACKAGE_EXISTS" = true ] && [ "$FORCE_PACKAGE_UPLOAD" != "1" ]; then
echo "Skipping package upload for ${PACKAGE_NAME} in ${SYNAPSE_WORKSPACE_NAME} since it already exists and FORCE_PACKAGE_UPLOAD is '${FORCE_PACKAGE_UPLOAD}'"
continue
fi
echo "Start creating Synapse ${SYNAPSE_WORKSPACE_NAME} Workspace Package ${PACKAGE_NAME} for ${JAR}."
az synapse workspace-package upload --workspace-name "${SYNAPSE_WORKSPACE_NAME}" --package "${JAR}"
echo "Finished creating Synapse ${SYNAPSE_WORKSPACE_NAME} Workspace Package ${PACKAGE_NAME} for ${JAR}."
IFS='|' read -ra POOL_ARRAY <<<"$SYNAPSE_WORKSPACE_PACKAGE_SPARK_POOL_PIPE_DELIMITED"
for POOL in "${POOL_ARRAY[@]}"; do
echo "Adding package ${PACKAGE_NAME} to pool ${POOL} in ${SYNAPSE_WORKSPACE_NAME}"
az synapse spark pool update --name "$POOL_NAME" --workspace-name "$SYNAPSE_WORKSPACE_NAME" --resource-group "$SYNAPSE_WORKSPACE_RG" --subscription "$SYNAPSE_WORKSPACE_SUB_ID" --package-action Add --package "$PACKAGE_NAME"
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment