From 2ab6fd3590ba96100b0a127e7bb30df4ab865eb5 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Sat, 13 May 2023 11:51:40 -0400 Subject: [PATCH] Capture discovery API output in test fixtures --- hack/update-openapi-spec.sh | 16 +++++++++++++++- hack/verify-openapi-spec.sh | 17 ++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/hack/update-openapi-spec.sh b/hack/update-openapi-spec.sh index 19cb8b6dcb4..5bd7c182efb 100755 --- a/hack/update-openapi-spec.sh +++ b/hack/update-openapi-spec.sh @@ -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" diff --git a/hack/verify-openapi-spec.sh b/hack/verify-openapi-spec.sh index 0fa05455dfe..cfb582bb845 100755 --- a/hack/verify-openapi-spec.sh +++ b/hack/verify-openapi-spec.sh @@ -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