1212 ttlSecondsAfterFinished : {{ .Values.global.nexusSnapshotTTL }}
1313 template :
1414 spec :
15+ backoffLimit : 0
1516 serviceAccountName : ods-edit
1617 containers :
1718 - name : snapshot-creator
@@ -20,27 +21,42 @@ spec:
2021 - /bin/sh
2122 - -c
2223 - |
24+ # compute snapshot name so we can check it later
25+ SNAP_NAME="{{ .Values.global.appName }}-snapshot.$(date +%Y-%m-%d.%H-%M-%S)"
2326 cat <<EOF | oc apply -f -
2427 apiVersion: snapshot.storage.k8s.io/v1
2528 kind: VolumeSnapshot
2629 metadata:
27- name: {{ .Values.global.appName }}-snapshot.$(date +%Y-%m-%d.%H-%M-%S)
30+ name: $SNAP_NAME
2831 namespace: {{ .Values.global.odsNamespace }}
2932 spec:
3033 volumeSnapshotClassName: {{ .Values.global.nexusSnapshotClass }}
3134 source:
3235 persistentVolumeClaimName: {{ .Values.global.nexusStorageName }}
3336 EOF
34- # Cleanup snapshots older than the TTL
35- oc get volumesnapshots --namespace {{ .Values.global.odsNamespace }} \
36- --no-headers -o custom-columns=NAME:.metadata.name,CREATED:.metadata.creationTimestamp | \
37- while read name created; do
38- if [[ $(date -d "$created" +%s) -lt $(date -d "-{{ .Values.global.nexusSnapshotTTL }} seconds" +%s) ]]; then
39- oc delete volumesnapshot "$name" --namespace {{ .Values.global.odsNamespace }}
40- fi
41- done
37+
38+ # Wait for the VolumeSnapshot to become Ready (configurable timeout)
39+ TIMEOUT={{ .Values.global.nexusSnapshotCheckTimeout }}
40+ INTERVAL=30
41+ elapsed=0
42+ TIMED_OUT=0
43+ echo "Waiting for VolumeSnapshot $SNAP_NAME to be ready (timeout: $TIMEOUT seconds)..."
44+ until [ $elapsed -ge $TIMEOUT ]; do
45+ ready=$(oc get volumesnapshot "$SNAP_NAME" -n {{ .Values.global.odsNamespace }} -o jsonpath='{.status.readyToUse}' 2>/dev/null || echo "false")
46+ if [ "$ready" = "true" ]; then
47+ echo "VolumeSnapshot $SNAP_NAME is ready"
48+ break
49+ fi
50+ sleep $INTERVAL
51+ elapsed=$((elapsed + INTERVAL))
52+ echo " ... waited $elapsed seconds out of $TIMEOUT seconds"
53+ done
54+ if [ $elapsed -ge $TIMEOUT ]; then
55+ echo "Timeout waiting for VolumeSnapshot $SNAP_NAME to be ready" >&2
56+ exit 1
57+ fi
4258 resources : {}
4359 imagePullPolicy : IfNotPresent
44- restartPolicy : OnFailure
60+ restartPolicy : Never
4561 successfulJobsHistoryLimit : 30
4662 failedJobsHistoryLimit : 30
0 commit comments