LABEL=$(docker exec-i"${NODE}" ctr --namespace="k8s.io" snapshots --snapshotter=stargz info "${LAYER}"\
| jq -r".Labels.\"${REMOTE_SNAPSHOT_LABEL}\"")
echo"Checking layer ${LAYER} : ${LABEL}"
if["${LABEL}"=="null"];then
echo"layer ${LAYER} isn't remote snapshot"
return 1
fi
done
if[${LAYERSNUM}-eq 0 ];then
echo"cannot get layers"
return 1
fi
return 0
}
export-f start-test
wait-for-pod(){
local POD_NAME="${1}"
if["${POD_NAME}"==""];then
return 1
fi
IDX=0
DEADLINE=120
for((;;));do
STATUS=$(kubectl get pods "${POD_NAME}"-o'jsonpath={..status.containerStatuses[0].state.running.startedAt}${..status.containerStatuses[0].state.waiting.reason}')
echo"Status: ${STATUS}"
STARTEDAT=$(echo"${STATUS}" | cut-f 1 -d'$')
if["${STARTEDAT}"!=""];then
echo"Pod created"
break
elif[${IDX}-gt${DEADLINE}];then
echo"Deadline exeeded to wait for pod creation"
return 1
fi
((IDX+=1))
sleep 1
done
return 0
}
export-f wait-for-pod
get-topmost-layer(){
local NODE="${1}"
local CONTAINER="${2}"
local TARGET_CONTAINER=
if["${NODE}"==""]||["${CONTAINER}"==""];then
return 1
fi
for((RETRY=1; RETRY<=50; RETRY++ ));do
TARGET_CONTAINER=$(docker exec-i"${NODE}" ctr --namespace="k8s.io" c ls-q labels."io.kubernetes.container.name"=="${CONTAINER}" | sed-n 1p)
if["${TARGET_CONTAINER}"!=""];then
break
fi
sleep 3
done
if["${TARGET_CONTAINER}"==""];then
return 1
fi
LAYER=$(docker exec-i"${NODE}" ctr --namespace="k8s.io" c info "${TARGET_CONTAINER}" | jq -r'.SnapshotKey')
echo"${LAYER}"
}
export-f get-topmost-layer
# --- create a basic cluster and check for lazy pulling