charts/airflow-dags/templates/dag-manifest-job.yaml (102 lines of code) (raw):

{{- if .Values.airflow.manifestdag.enabled -}} {{- range $index, $item := .Values.airflow.manifestdag.items }} apiVersion: batch/v1 kind: Job metadata: name: {{ $.Release.Name }}-file-upload-{{ $index }} namespace: {{ $.Release.Namespace }} spec: ttlSecondsAfterFinished: 300 template: spec: serviceAccountName: workload-identity-sa volumes: - name: script configMap: name: file-upload-script-{{ $.Release.Name }} defaultMode: 0500 - name: share-storage persistentVolumeClaim: claimName: {{ $item.pvc }} initContainers: - name: file-upload image: mcr.microsoft.com/cbl-mariner/base/core:2.0 command: ["/bin/sh"] args: - -c - | tdnf install -y curl tar zip && \ /script/init.sh volumeMounts: - name: script mountPath: "/script" - name: share-storage mountPath: "/share" env: - name: URL value: {{ $item.url | quote }} - name: SHARE value: {{ $item.name | quote }} - name: COMPRESS value: {{ $item.compress | default false | quote }} - name: FILE value: {{ $item.folder | quote }} containers: - name: completion image: istio/base command: ["/bin/sleep", "30"] volumeMounts: - name: script mountPath: "/script" restartPolicy: Never --- {{- end }} apiVersion: v1 kind: ConfigMap metadata: name: file-upload-script-{{ .Release.Name }} namespace: {{ .Release.Namespace }} data: init.sh: | #!/bin/bash set -e url_basename=$(basename ${URL}) echo "Derived filename from URL: ${url_basename}" echo "Downloading file from ${URL} to ${url_basename}" retry_count=0 max_retries=3 while [ $retry_count -lt $max_retries ]; do if curl -kso ${url_basename} ${URL}; then break else retry_count=$((retry_count + 1)) echo "Attempt $retry_count failed. Retrying in 5 seconds..." >&2 sleep 5 fi done if [ $retry_count -eq $max_retries ]; then echo "Error: Failed to download file from ${URL} after $max_retries attempts." >&2 exit 1 fi if [[ ${URL} == *.tar.gz ]]; then echo "Processing tar.gz archive..." mkdir -p extracted_files tar -xzf ${url_basename} --strip-components=1 -C extracted_files if [[ ${COMPRESS} == "true" ]]; then echo "Creating zip archive..." rm ${url_basename} zip_filename="${url_basename%.tar.gz}.zip" original_dir=$(pwd) cd extracted_files/${FILE} zip -r ${original_dir}/${zip_filename} * cd ${original_dir} cp ${zip_filename} /share/ echo "Zip file ${zip_filename} copied to share." else echo "Copying extracted files..." cp -r extracted_files/${FILE} /share/ fi else echo "Copying single file..." cp ${FILE} /share/ fi {{- end }}