diff --git a/test/cmd/get.sh b/test/cmd/get.sh index 3350572c4b7..71d60892a54 100755 --- a/test/cmd/get.sh +++ b/test/cmd/get.sh @@ -420,17 +420,74 @@ run_deprecated_api_tests() { set -o nounset set -o errexit - create_and_use_new_namespace kube::log::status "Testing deprecated APIs" + # Create deprecated CRD + kubectl "${kube_flags_with_token[@]:?}" create -f - << __EOF__ +{ + "kind": "CustomResourceDefinition", + "apiVersion": "apiextensions.k8s.io/v1", + "metadata": { + "name": "deprecated.example.com" + }, + "spec": { + "group": "example.com", + "scope": "Namespaced", + "names": { + "plural": "deprecated", + "kind": "DeprecatedKind" + }, + "versions": [ + { + "name": "v1", + "served": true, + "storage": true, + "schema": { + "openAPIV3Schema": { + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" + } + } + }, + { + "name": "v1beta1", + "deprecated": true, + "served": true, + "storage": false, + "schema": { + "openAPIV3Schema": { + "x-kubernetes-preserve-unknown-fields": true, + "type": "object" + } + } + } + ] + } +} +__EOF__ + + # Ensure the API server has recognized and started serving the associated CR API + local tries=5 + for i in $(seq 1 $tries); do + local output + output=$(kubectl "${kube_flags[@]:?}" api-resources --api-group example.com -oname) + if kube::test::if_has_string "$output" deprecated.example.com; then + break + fi + echo "${i}: Waiting for CR API to be available" + sleep "$i" + done + # Test deprecated API request output - # TODO(liggitt): switch this to a custom deprecated resource once CRDs support marking versions as deprecated - output_message=$(kubectl get podsecuritypolicies.v1beta1.policy 2>&1 "${kube_flags[@]}") - kube::test::if_has_string "${output_message}" 'PodSecurityPolicy is deprecated' - output_message=$(! kubectl get podsecuritypolicies.v1beta1.policy --warnings-as-errors 2>&1 "${kube_flags[@]}") - kube::test::if_has_string "${output_message}" 'PodSecurityPolicy is deprecated' + output_message=$(kubectl get deprecated.v1beta1.example.com 2>&1 "${kube_flags[@]}") + kube::test::if_has_string "${output_message}" 'example.com/v1beta1 DeprecatedKind is deprecated' + output_message=$(! kubectl get deprecated.v1beta1.example.com --warnings-as-errors 2>&1 "${kube_flags[@]}") + kube::test::if_has_string "${output_message}" 'example.com/v1beta1 DeprecatedKind is deprecated' kube::test::if_has_string "${output_message}" 'error: 1 warning received' + # Delete deprecated CRD + kubectl delete "${kube_flags[@]}" crd deprecated.example.com + set +o nounset set +o errexit } diff --git a/test/cmd/legacy-script.sh b/test/cmd/legacy-script.sh index 806c40a3d1e..40a02920fb4 100755 --- a/test/cmd/legacy-script.sh +++ b/test/cmd/legacy-script.sh @@ -90,7 +90,6 @@ nodes="nodes" persistentvolumeclaims="persistentvolumeclaims" persistentvolumes="persistentvolumes" pods="pods" -podsecuritypolicies="podsecuritypolicies" podtemplates="podtemplates" replicasets="replicasets" replicationcontrollers="replicationcontrollers" @@ -934,7 +933,7 @@ runTests() { # Kubectl deprecated APIs # ############################ - if kube::test::if_supports_resource "${podsecuritypolicies}" ; then + if kube::test::if_supports_resource "${customresourcedefinitions}" ; then record_command run_deprecated_api_tests fi