Skip to content

Commit 17755d2

Browse files
committed
fix: use zone information from pv to construct storage class with zonal
1 parent c3985a4 commit 17755d2

6 files changed

+370
-148
lines changed

docs/migrate-premiumlrs-to-premiumv2lrs.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,6 @@ kubectl label pvc data-app-b -n team-b disk.csi.azure.com/pv2migration=true
143143

144144
# Or with zone mapping file
145145
ZONE_MAPPING_FILE=disk-zone-mapping.txt ./premium-to-premiumv2-zonal-aware-helper.sh process
146-
147-
# Process single PVC for testing
148-
./premium-to-premiumv2-zonal-aware-helper.sh process-single my-pvc my-namespace
149146
```
150147

151148
### 4.4 What the Zone Helper Creates
@@ -223,7 +220,7 @@ The script will:
223220

224221
### 4.9 Integration with Migration Scripts
225222

226-
**IMPORTANT**: Run the zone preparation **before** any migration script:
223+
**IMPORTANT**: Run the zone preparation **before** any migration script if zonal information is not present in StorageClass or PersistentVolume:
227224

228225
```bash
229226
# 1. FIRST: Label PVCs for migration
@@ -363,7 +360,7 @@ kubectl get pvc data-app-a -n team-a -o jsonpath='{.metadata.annotations.disk\.c
363360

364361
Change to repository root or `hack/` directory.
365362

366-
**Zone preparation (MANDATORY FIRST STEP)**:
363+
**Zone preparation (MANDATORY FIRST STEP IF ZONAL INFORMATION NOT AVAILABLE IN SC/PV)**:
367364
```bash
368365
cd hack
369366
# Run zone preparation for all labeled PVCs
@@ -703,7 +700,7 @@ Summary:
703700
# Label a target PVC
704701
kubectl label pvc data-app-a -n team-a disk.csi.azure.com/pv2migration=true
705702
706-
# Run zone preparation (MANDATORY FIRST)
703+
# Run zone preparation (MANDATORY FIRST IF ZONAL INFORMATION NOT AVAILABLE IN PV/SC)
707704
cd hack
708705
./premium-to-premiumv2-zonal-aware-helper.sh process
709706
@@ -724,7 +721,7 @@ kubectl describe pv $(kubectl get pvc data-app-a -n team-a -o jsonpath='{.spec.v
724721
```bash
725722
kubectl label pvc data-app-b -n team-b disk.csi.azure.com/pv2migration=true
726723
727-
# Run zone preparation first
724+
# Run zone preparation first (IF ZONAL INFORMATION NOT AVAILABLE IN PV/SC)
728725
cd hack
729726
./premium-to-premiumv2-zonal-aware-helper.sh process
730727
@@ -817,7 +814,7 @@ export ZONE_SC_ANNOTATION_KEY=disk.csi.azure.com/migration-sourcesc
817814
kubectl label pvc data-app-a -n team-a disk.csi.azure.com/pv2migration=true
818815
kubectl label pvc data-app-b -n team-b disk.csi.azure.com/pv2migration=true
819816
820-
# 2. MANDATORY: Run zone-aware preparation
817+
# 2. MANDATORY: Run zone-aware preparation (IF ZONAL INFORMATION NOT AVAILABLE IN PV/SC)
821818
cd hack
822819
./premium-to-premiumv2-zonal-aware-helper.sh process | tee zone-prep-$(date +%Y%m%d-%H%M%S).log
823820

hack/lib-premiumv2-migration-common.sh

Lines changed: 135 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ ok() { echo "$(ts) [OK] $*"; }
1414
declare -A SC_SET
1515
declare -g -A SC_CACHE
1616
declare -g -A PVC_SC_CACHE
17+
declare -g -A PVCS_MIGRATION_INPROGRESS_MARKED_CACHE
18+
declare -A _UNIQUE_ZONES=()
19+
declare -g -A SNAPSHOTS_ARRAY
1720

1821
# ----------- Common configurations -----------
1922
MIG_SUFFIX="${MIG_SUFFIX:-csi}"
@@ -29,6 +32,7 @@ POLL_INTERVAL="${POLL_INTERVAL:-120}"
2932
WAIT_FOR_WORKLOAD="${WAIT_FOR_WORKLOAD:-true}"
3033
MIGRATION_FORCE_INPROGRESS_AFTER_MINUTES="${MIGRATION_FORCE_INPROGRESS_AFTER_MINUTES:-3}"
3134
ONE_SC_FOR_MULTIPLE_ZONES="${ONE_SC_FOR_MULTIPLE_ZONES:-true}"
35+
SINGLE_ZONE_USE_GENERIC_PV2_SC="${SINGLE_ZONE_USE_GENERIC_PV2_SC:-true}"
3236

3337
# In-place rollback keys
3438
ROLLBACK_PVC_YAML_ANN="${ROLLBACK_PVC_YAML_ANN:-disk.csi.azure.com/rollback-pvc-yaml}"
@@ -64,7 +68,14 @@ MIGRATION_INPROGRESS_LABEL_KEY="${MIGRATION_INPROGRESS_LABEL_KEY:-disk.csi.azure
6468
MIGRATION_INPROGRESS_LABEL_VALUE="${MIGRATION_INPROGRESS_LABEL_VALUE:-true}"
6569
ZONE_SC_ANNOTATION_KEY="${ZONE_SC_ANNOTATION_KEY:-disk.csi.azure.com/migration-sourcesc}"
6670

71+
# ------------ State ----------
6772
LAST_RUN_WITHOUT_ERREXIT_RC=0
73+
GENERIC_PV2_SC_MODE=0
74+
75+
is_direct_exec() {
76+
# realpath + -ef handles symlinks and differing relative paths
77+
[[ "$(realpath "${BASH_SOURCE[0]}")" -ef "$(realpath "$0")" ]]
78+
}
6879

6980
audit_add() {
7081
[[ "$AUDIT_ENABLE" != "true" ]] && return 0
@@ -268,20 +279,49 @@ ensure_reclaim_policy_retain() {
268279
fi
269280
}
270281

282+
mark_source_in_progress() {
283+
local pvc_ns="$1" pvc="$2"
284+
285+
if [[ -n ${PVCS_MIGRATION_INPROGRESS_MARKED_CACHE["$pvc_ns/$pvc"]:-} ]]; then
286+
return 0
287+
fi
288+
289+
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_INPROGRESS_LABEL_KEY}=${MIGRATION_INPROGRESS_LABEL_VALUE}" --overwrite >/dev/null
290+
291+
if [[ $? -eq 0 ]]; then
292+
PVCS_MIGRATION_INPROGRESS_MARKED_CACHE["$pvc_ns/$pvc"]=1
293+
fi
294+
295+
audit_add "PersistentVolumeClaim" "$pvc" "$pvc_ns" "label" \
296+
"kubectl label pvc $pvc -n $pvc_ns ${MIGRATION_INPROGRESS_LABEL_KEY}-" \
297+
"in-progress=${MIGRATION_INPROGRESS_LABEL_VALUE}"
298+
299+
}
300+
271301
mark_source_done() {
272302
local pvc_ns="$1" pvc="$2"
273-
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_DONE_LABEL_KEY}=${MIGRATION_DONE_LABEL_VALUE}" --overwrite
303+
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_DONE_LABEL_KEY}=${MIGRATION_DONE_LABEL_VALUE}" --overwrite >/dev/null
274304
audit_add "PersistentVolumeClaim" "$pvc" "$pvc_ns" "label" \
275305
"kubectl label pvc $pvc -n $pvc_ns ${MIGRATION_DONE_LABEL_KEY}-" \
276306
"done=${MIGRATION_DONE_LABEL_VALUE}"
307+
308+
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_INPROGRESS_LABEL_KEY}-" --overwrite >/dev/null
309+
audit_add "PersistentVolumeClaim" "$pvc" "$pvc_ns" "label-remove" \
310+
"kubectl label pvc $pvc -n $pvc_ns ${MIGRATION_INPROGRESS_LABEL_KEY}-" \
311+
"remove in-progress label"
277312
}
278313

279-
remove_migration_done_label() {
314+
mark_source_notdone() {
280315
local pvc_ns="$1" pvc="$2"
281-
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_DONE_LABEL_KEY}-" --overwrite
316+
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_DONE_LABEL_KEY}=${MIGRATION_DONE_LABEL_VALUE_FALSE}" --overwrite >/dev/null
317+
audit_add "PersistentVolumeClaim" "$pvc" "$pvc_ns" "label" \
318+
"kubectl label pvc $pvc -n $pvc_ns ${MIGRATION_DONE_LABEL_KEY}-" \
319+
"done=${MIGRATION_DONE_LABEL_VALUE_FALSE}"
320+
321+
kcmd label pvc "$pvc" -n "$pvc_ns" "${MIGRATION_INPROGRESS_LABEL_KEY}-" --overwrite >/dev/null
282322
audit_add "PersistentVolumeClaim" "$pvc" "$pvc_ns" "label-remove" \
283-
"kubectl label pvc $pvc -n $pvc_ns ${MIGRATION_DONE_LABEL_KEY}=" \
284-
"remove done label"
323+
"kubectl label pvc $pvc -n $pvc_ns ${MIGRATION_INPROGRESS_LABEL_KEY}-" \
324+
"remove in-progress label"
285325
}
286326

287327
wait_pvc_bound() {
@@ -417,11 +457,31 @@ backup_pvc() {
417457
fi
418458
}
419459

460+
is_pvc_created_by_migration_tool() {
461+
local pvc="$1" ns="$2"
462+
createdby=$(kcmd get pvc "$pvc" -n "$ns" -o go-template="{{ index .metadata.labels \"${CREATED_BY_LABEL_KEY}\" }}" 2>/dev/null || true)
463+
if [[ $createdby == "$MIGRATION_TOOL_ID" ]]; then
464+
echo "true"
465+
else
466+
echo "false"
467+
fi
468+
}
469+
470+
is_pvc_in_migration() {
471+
local pvc="$1" ns="$2"
472+
inprog=$(kcmd get pvc "$pvc" -n "$ns" -o go-template="{{ index .metadata.labels \"${MIGRATION_INPROGRESS_LABEL_KEY}\" }}" 2>/dev/null || true)
473+
if [[ $inprog == "true" ]]; then
474+
echo "true"
475+
else
476+
echo "false"
477+
fi
478+
}
479+
420480
get_srcsc_of_sc() {
421481
local sci="$1"
422482

423-
# if one sc for multiple zones is false, return the original sc name
424-
# else if one sc for multiple zones are used, use the zonal annotation based sc name
483+
# if one sc for multiple zones are used, use the incoming storage class which is intermediate based on zone
484+
# else if one sc for multiple zones is false, return the sc name and not source sc [which means one storage class per zone & dont need naming in storage class]
425485
if [[ "$ONE_SC_FOR_MULTIPLE_ZONES" == "true" ]]; then
426486
printf '%s' "$sci"
427487
return 0
@@ -500,7 +560,7 @@ create_csi_pv_pvc() {
500560
audit_add "PersistentVolumeClaim" "$csi_pvc" "$ns" "delete" "N/A" "inplace=true reason=preexisting"
501561
return 1
502562
fi
503-
audit_add "PersistentVolumeClaim" "$csi_pvc" "$ns" "delete" "N/A" "inplace=true reason=preexisting"
563+
audit_add "PersistentVolumeClaim" "$csi_pvc" "$ns" "delete" "kubectl create -f <(echo \"$encoded_spec\" | base64 --decode) " "inplace=true reason=replace"
504564

505565
if ! kcmd patch pv "$pv" -p '{"spec":{"claimRef":null}}' >/dev/null 2>&1; then
506566
warn "Clear claimRef failed for PV $pv"
@@ -637,7 +697,7 @@ create_pvc_from_snapshot() {
637697
audit_add "PersistentVolumeClaim" "$pvc" "$ns" "delete-failed" "N/A" "inplace=true reason=preexisting"
638698
return 1
639699
fi
640-
audit_add "PersistentVolumeClaim" "$pvc" "$ns" "delete" "N/A" "inplace=true reason=preexisting"
700+
audit_add "PersistentVolumeClaim" "$pvc" "$ns" "delete" "kubectl create -f <(echo \"$encoded_spec\" | base64 --decode) " "inplace=true reason=preexisting"
641701

642702
if ! kcmd patch pv "$pv" -p '{"spec":{"claimRef":null}}' >/dev/null 2>&1; then
643703
warn "Clear claimRef failed for PV $pv"
@@ -678,12 +738,8 @@ EOF
678738
audit_add "PersistentVolumeClaim" "$destpvc" "$ns" "create-failed" "N/A" "inplace=$inplace sc=$sc reason=applyFailure"
679739
return 1
680740
else
741+
audit_add "PersistentVolumeClaim" "$destpvc" "$ns" "create" "kubectl delete pvc $destpvc -n $ns" "inplace=$inplace sc=${sc} snapshot=${snapshot}"
681742
audit_add "PersistentVolumeClaim" "$destpvc" "$ns" "create" "kubectl delete pvc $destpvc -n $ns" "sc=${sc} snapshot=${snapshot}"
682-
if $inplace; then
683-
# remove ROLLBACK_PVC_YAML_ANN annotation from pvc
684-
kcmd annotate pvc "$destpvc" -n "$ns" "${ROLLBACK_PVC_YAML_ANN}-" --overwrite >/dev/null 2>&1 || true
685-
kcmd annotate pvc "$destpvc" -n "$ns" "${ROLLBACK_ORIG_PV_ANN}-" --overwrite >/dev/null 2>&1 || true
686-
fi
687743
fi
688744

689745
if wait_pvc_bound "$ns" "$destpvc" "$BIND_TIMEOUT_SECONDS"; then
@@ -1030,6 +1086,40 @@ extract_event_reason() {
10301086
end'
10311087
}
10321088

1089+
detect_generic_pv2_mode() {
1090+
if [[ "${#MIG_PVCS[@]}" -gt 0 ]]; then
1091+
for pvc_entry in "${MIG_PVCS[@]}"; do
1092+
local _ns="${pvc_entry%%|*}"
1093+
local _name="${pvc_entry##*|}"
1094+
local _pv="$(kcmd get pvc "$_name" -n "$_ns" -o jsonpath='{.spec.volumeName}' 2>/dev/null || true)"
1095+
[[ -z "$_pv" ]] && continue
1096+
local _zone="$(extract_zone_from_pv_nodeaffinity "$_pv" || true)"
1097+
if [[ -n "$_zone" ]]; then
1098+
_UNIQUE_ZONES["$_zone"]=1
1099+
fi
1100+
1101+
is_created_by_migrator=$(is_pvc_in_migration "$_name" "$_ns")
1102+
if [[ $is_created_by_migrator == "true" ]]; then
1103+
info "skipping detect_generic_pv2_mode as the migration have already kicked in"
1104+
return
1105+
fi
1106+
1107+
is_migration=$(is_pvc_created_by_migration_tool "$_name" "$_ns")
1108+
if [[ $is_migration == "true" ]]; then
1109+
info "skipping detect_generic_pv2_mode as there are pvcs created by migration tool"
1110+
return
1111+
fi
1112+
done
1113+
fi
1114+
local _unique_zone_count="${#_UNIQUE_ZONES[@]}"
1115+
if [[ "$_unique_zone_count" == "1" && "$SINGLE_ZONE_USE_GENERIC_PV2_SC" == "true" ]]; then
1116+
info "Single zone detected across all PVCs; will use generic pv2 naming (<origSC>-pv2) instead of zone suffix."
1117+
GENERIC_PV2_SC_MODE=1
1118+
else
1119+
GENERIC_PV2_SC_MODE=0
1120+
fi
1121+
}
1122+
10331123
populate_pvcs() {
10341124
if [[ -z "$NAMESPACE" ]]; then
10351125
mapfile -t MIG_PVCS < <(kcmd get pvc --all-namespaces -l "$MIGRATION_LABEL" -o jsonpath='{range .items[*]}{.metadata.namespace}{"|"}{.metadata.name}{"\n"}{end}')
@@ -1085,7 +1175,8 @@ create_unique_storage_classes() {
10851175
[[ -n "$sc" ]] && SC_SET["$sc"]=1
10861176
done
10871177
SOURCE_SCS=("${!SC_SET[@]}")
1088-
info "Source StorageClasses: ${SOURCE_SCS[*]}"
1178+
info "Source StorageClasses:"
1179+
printf ' %s\n' "${SOURCE_SCS[@]}"
10891180
create_variants_for_sources "${SOURCE_SCS[@]}"
10901181
}
10911182

@@ -1275,20 +1366,11 @@ EOF
12751366
audit_add "VolumeSnapshot" "$snap" "$ns" "create" "kubectl delete volumesnapshot $snap -n $ns" "$extra"
12761367
fi
12771368

1278-
# Wait up to 3 minutes (36 * 5s) – same as dual
1279-
for _ in {1..36}; do
1280-
local ready
1281-
ready=$(kcmd get volumesnapshot "$snap" -n "$ns" -o jsonpath='{.status.readyToUse}' 2>/dev/null || true)
1282-
[[ "$ready" == "true" ]] && { ok "Snapshot $ns/$snap ready"; return 0; }
1283-
sleep 5
1284-
done
1285-
audit_add "VolumeSnapshot" "$snap" "$ns" "not-ready" "N/A" "sourcePVC=$source_pvc recreate=$recreated reason=timeout"
1286-
warn "Snapshot $ns/$snap not ready after timeout"
1287-
return 1
1369+
SNAPSHOTS_ARRAY+=("$ns|$snap|$source_pvc")
12881370
}
12891371

12901372
# --- Snapshot routines ---
1291-
ensure_snapshot() {
1373+
create_snapshot() {
12921374
local snap=$1 source_pvc="$2" ns="$3" pv="$4"
12931375
set +e
12941376
ensure_volume_snapshot "$ns" "$source_pvc" "$snap"
@@ -1297,6 +1379,33 @@ ensure_snapshot() {
12971379
return $rc
12981380
}
12991381

1382+
wait_for_snapshots_ready() {
1383+
info "Waiting for all snapshots to be ready..."
1384+
SOURCE_SNAPSHOTS=("${!SNAPSHOTS_ARRAY[@]}")
1385+
info "Source Snapshots:"
1386+
printf ' %s\n' "${SOURCE_SNAPSHOTS[@]}"
1387+
1388+
for ns_snap in "${SOURCE_SNAPSHOTS[@]}"; do
1389+
IFS='|' read -r ns snap source_pvc <<< "$ns_snap"
1390+
local ready
1391+
1392+
info "Waiting for snapshot $ns/$snap to be ready..."
1393+
# Wait up to 3 minutes (36 * 5s) – same as dual
1394+
for _ in {1..36}; do
1395+
ready=$(kcmd get volumesnapshot "$snap" -n "$ns" -o jsonpath='{.status.readyToUse}' 2>/dev/null || true)
1396+
[[ "$ready" == "true" ]] && { break; }
1397+
sleep 5
1398+
done
1399+
if [[ "$ready" == "true" ]]; then
1400+
ok "Snapshot $ns/$snap ready";
1401+
continue
1402+
fi
1403+
audit_add "VolumeSnapshot" "$snap" "$ns" "not-ready" "N/A" "sourcePVC=$source_pvc reason=timeout"
1404+
warn "Snapshot $ns/$snap not ready after timeout"
1405+
return 1
1406+
done
1407+
}
1408+
13001409
print_migration_cleanup_report() {
13011410
local mode="${MODE:-dual}"
13021411
local success_header_printed=false

hack/premium-to-premiumv2-migrator-dualpvc.sh

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,12 @@ safe_array_len() {
3838
eval "echo \${#${name}[@]}"
3939
}
4040

41+
# Zonal-aware helper lib
4142
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
42-
. "${SCRIPT_DIR}/lib-premiumv2-migration-common.sh"
43+
ZONAL_HELPER_LIB="${SCRIPT_DIR}/premium-to-premiumv2-zonal-aware-helper.sh"
44+
[[ -f "$ZONAL_HELPER_LIB" ]] || { echo "[ERROR] Missing lib: $ZONAL_HELPER_LIB" >&2; exit 1; }
45+
# shellcheck disable=SC1090
46+
. "$ZONAL_HELPER_LIB"
4347

4448
# Run RBAC preflight (mode=dual)
4549
MODE=$MODE migration_rbac_check || { err "Aborting due to insufficient permissions."; exit 1; }
@@ -52,7 +56,7 @@ info "Max PVCs: $MAX_PVCS MIG_SUFFIX=$MIG_SUFFIX WAIT_FOR_WORKLOAD=$WAIT_FOR_W
5256
ensure_snapshot_class # from common lib
5357

5458
# ---------------- Discover Tagged PVCs ----------------
55-
populate_pvcs
59+
MODE=$MODE process_pvcs_for_zone_preparation
5660

5761
# --- Conflict / prerequisite logic reused only here (kept local) ---
5862
ensure_no_foreign_conflicts() {
@@ -141,6 +145,7 @@ run_prerequisites_and_conflicts
141145
create_unique_storage_classes
142146

143147
# ------------- Main Migration Loop -------------
148+
declare -A PVC_SNAPSHOTS
144149
for ENTRY in "${MIG_PVCS[@]}"; do
145150
pvc_ns="${ENTRY%%|*}"
146151
pvc="${ENTRY##*|}"
@@ -189,9 +194,23 @@ for ENTRY in "${MIG_PVCS[@]}"; do
189194
snapshot_source_pvc="$pvc"
190195
fi
191196

192-
pv2_pvc="$(name_pv2_pvc "$pvc")"
193197
snapshot="$(name_snapshot "$pv")"
194-
ensure_snapshot "$snapshot" "$snapshot_source_pvc" "$pvc_ns" "$pv" || { warn "Snapshot failed $pvc_ns/$pvc"; continue; }
198+
create_snapshot "$snapshot" "$snapshot_source_pvc" "$pvc_ns" "$pv" || { warn "Snapshot failed $pvc_ns/$pvc"; continue; }
199+
PVC_SNAPSHOTS+=("${pvc_ns}|${snapshot}|${pvc}")
200+
done
201+
202+
wait_for_snapshots_ready
203+
204+
SOURCE_SNAPSHOTS=("${!PVC_SNAPSHOTS[@]}")
205+
for ENTRY in "${SOURCE_SNAPSHOTS[@]}"; do
206+
IFS='|' read -r pvc_ns snapshot pvc <<< "$ENTRY"
207+
pv=$(kcmd get pvc "$pvc" -n "$pvc_ns" -o jsonpath='{.spec.volumeName}' 2>/dev/null || true)
208+
size=$(kcmd get pv "$pv" -o jsonpath='{.spec.capacity.storage}' 2>/dev/null || true)
209+
mode=$(kcmd get pv "$pv" -o jsonpath='{.spec.volumeMode}' 2>/dev/null || true)
210+
sc=$(get_sc_of_pvc "$pvc" "$pvc_ns")
211+
scpv2="$(name_pv2_sc "$sc")"
212+
pv2_pvc="$(name_pv2_pvc "$pvc")"
213+
195214
run_without_errexit create_pvc_from_snapshot "$pvc" "$pvc_ns" "$pv" "$size" "$mode" "$scpv2" "$pv2_pvc" "$snapshot"
196215
case "$LAST_RUN_WITHOUT_ERREXIT_RC" in
197216
0) ;; # success
@@ -215,7 +234,7 @@ while true; do
215234
fi
216235

217236
lbl=$(kcmd get pvc "$pvc" -n "$pvc_ns" -o go-template="{{ index .metadata.labels \"${MIGRATION_DONE_LABEL_KEY}\" }}" || true)
218-
if [[ "$lbl" == "$MIGRATION_DONE_LABEL_VALUE" ]]; then
237+
if [[ "$lbl" == "$MIGRATION_DONE_LABEL_VALUE" || "$lbl" == "$MIGRATION_DONE_LABEL_VALUE_FALSE" ]]; then
219238
continue
220239
fi
221240

@@ -229,7 +248,11 @@ while true; do
229248
continue
230249
;;
231250
SKUMigrationProgress|SKUMigrationStarted)
251+
mark_source_in_progress "$pvc_ns" "$pvc"
232252
info "$reason $pvc_ns/$pv2_pvc"; ALL_DONE=false ;;
253+
ReasonSKUMigrationTimeout)
254+
mark_source_notdone "$pvc_ns" "$pvc"
255+
warn "$reason $pvc_ns/$pv2_pvc"; ALL_DONE=false ;;
233256
"")
234257
info "No migration events yet for $pvc_ns/$pv2_pvc"; ALL_DONE=false ;;
235258
esac

0 commit comments

Comments
 (0)