Capture discovery API output in test fixtures

This commit is contained in:
Jordan Liggitt 2023-05-13 11:51:40 -04:00
parent 23ea6996d2
commit 2ab6fd3590
No known key found for this signature in database
2 changed files with 31 additions and 2 deletions

View File

@ -22,6 +22,7 @@ set -o nounset
set -o pipefail
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
DISCOVERY_ROOT_DIR="${KUBE_ROOT}/api/discovery"
OPENAPI_ROOT_DIR="${KUBE_ROOT}/api/openapi-spec"
source "${KUBE_ROOT}/hack/lib/init.sh"
@ -96,6 +97,12 @@ if ! kube::util::wait_for_url "https://${API_HOST}:${API_PORT}/healthz" "apiserv
exit 1
fi
kube::log::status "Updating aggregated discovery"
rm -fr "${DISCOVERY_ROOT_DIR}"
mkdir -p "${DISCOVERY_ROOT_DIR}"
curl -kfsS -H 'Authorization: Bearer dummy_token' -H 'Accept: application/json;g=apidiscovery.k8s.io;v=v2beta1;as=APIGroupDiscoveryList' "https://${API_HOST}:${API_PORT}/apis" | jq -S . > "${DISCOVERY_ROOT_DIR}/aggregated_v2beta1.json"
kube::log::status "Updating " "${OPENAPI_ROOT_DIR} for OpenAPI v2"
rm -f "${OPENAPI_ROOT_DIR}/swagger.json"
@ -116,7 +123,7 @@ curl -w "\n" -kfsS -H 'Authorization: Bearer dummy_token' \
"https://${API_HOST}:${API_PORT}/openapi/v3" \
| jq -r '.paths | to_entries | .[].key' \
| while read -r group; do
kube::log::status "Updating OpenAPI spec for group ${group}"
kube::log::status "Updating OpenAPI spec and discovery for group ${group}"
OPENAPI_FILENAME="${group}_openapi.json"
OPENAPI_FILENAME_ESCAPED="${OPENAPI_FILENAME//\//__}"
OPENAPI_PATH="${OPENAPI_ROOT_DIR}/v3/${OPENAPI_FILENAME_ESCAPED}"
@ -124,6 +131,13 @@ curl -w "\n" -kfsS -H 'Authorization: Bearer dummy_token' \
"https://${API_HOST}:${API_PORT}/openapi/v3/{$group}" \
| jq -S '.info.version="unversioned"' \
> "$OPENAPI_PATH"
if [[ "${group}" == "api"* ]]; then
DISCOVERY_FILENAME="${group}.json"
DISCOVERY_FILENAME_ESCAPED="${DISCOVERY_FILENAME//\//__}"
DISCOVERY_PATH="${DISCOVERY_ROOT_DIR}/${DISCOVERY_FILENAME_ESCAPED}"
curl -kfsS -H 'Authorization: Bearer dummy_token' "https://${API_HOST}:${API_PORT}/{$group}" | jq -S . > "$DISCOVERY_PATH"
fi
done
kube::log::status "SUCCESS"

View File

@ -33,13 +33,17 @@ make -C "${KUBE_ROOT}" WHAT=cmd/kube-apiserver
SPECROOT="${KUBE_ROOT}/api/openapi-spec"
SPECV3PATH="${SPECROOT}/v3"
DISCOVERYROOT="${KUBE_ROOT}/api/discovery"
TMP_SPECROOT="${KUBE_ROOT}/_tmp/openapi-spec"
TMP_DISCOVERYROOT="${KUBE_ROOT}/_tmp/discovery"
_tmp="${KUBE_ROOT}/_tmp"
mkdir -p "${_tmp}"
cp -a "${SPECROOT}" "${TMP_SPECROOT}"
trap 'cp -a ${TMP_SPECROOT} ${SPECROOT}/..; rm -rf ${_tmp}' EXIT SIGINT
cp -a "${DISCOVERYROOT}" "${TMP_DISCOVERYROOT}"
trap 'cp -a ${TMP_SPECROOT} ${SPECROOT}/..; cp -a ${TMP_DISCOVERYROOT} ${DISCOVERYROOT}/..; rm -rf ${_tmp}' EXIT SIGINT
rm -r "${SPECROOT:?}"/*
rm -r "${DISCOVERYROOT:?}"/*
mkdir -p "${SPECV3PATH}"
cp "${TMP_SPECROOT}/README.md" "${SPECROOT}/README.md"
@ -55,4 +59,15 @@ else
exit 1
fi
echo "diffing ${DISCOVERYROOT} against freshly generated discovery"
ret=0
diff -Naupr "${DISCOVERYROOT}" "${TMP_DISCOVERYROOT}" || ret=$?
if [[ $ret -eq 0 ]]
then
echo "${DISCOVERYROOT} up to date."
else
echo "${DISCOVERYROOT} is out of date. Please run hack/update-openapi-spec.sh" >&2
exit 1
fi
# ex: ts=2 sw=2 et filetype=sh