Avoid returning nil responseKind in v1beta1 aggregated discovery

Kubernetes-commit: 1876ddf71497bad349f7c4df24c2e22356d3bad9
This commit is contained in:
Jordan Liggitt 2023-08-08 14:25:56 -04:00 committed by Kubernetes Publisher
parent cc544e7bf1
commit 1edd7d6157
2 changed files with 34 additions and 0 deletions

View File

@ -127,6 +127,9 @@ func ConvertGroupVersionIntoToDiscovery(list []metav1.APIResource) ([]apidiscove
apiResourceList = append(apiResourceList, apidiscoveryv2beta1.APIResourceDiscovery{
Resource: split[0],
Scope: scope,
// avoid nil panics in v0.26.0-v0.26.3 client-go clients
// see https://github.com/kubernetes/kubernetes/issues/118361
ResponseKind: &metav1.GroupVersionKind{},
})
parentidx = len(apiResourceList) - 1
parentResources[split[0]] = parentidx
@ -140,6 +143,9 @@ func ConvertGroupVersionIntoToDiscovery(list []metav1.APIResource) ([]apidiscove
subresource := apidiscoveryv2beta1.APISubresourceDiscovery{
Subresource: split[1],
Verbs: r.Verbs,
// avoid nil panics in v0.26.0-v0.26.3 client-go clients
// see https://github.com/kubernetes/kubernetes/issues/118361
ResponseKind: &metav1.GroupVersionKind{},
}
if r.Kind != "" {
subresource.ResponseKind = &metav1.GroupVersionKind{

View File

@ -302,6 +302,8 @@ func TestConvertAPIResourceToDiscovery(t *testing.T) {
{
Resource: "cronjobs",
Scope: apidiscoveryv2beta1.ScopeNamespace,
// populated to avoid nil panics
ResponseKind: &metav1.GroupVersionKind{},
Subresources: []apidiscoveryv2beta1.APISubresourceDiscovery{{
Subresource: "status",
ResponseKind: &metav1.GroupVersionKind{
@ -314,6 +316,32 @@ func TestConvertAPIResourceToDiscovery(t *testing.T) {
},
},
},
{
name: "Test with subresource with missing kind",
resources: []metav1.APIResource{
{
Name: "cronjobs/status",
Namespaced: true,
Group: "batch",
Version: "v1",
Verbs: []string{"create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"},
},
},
wantAPIResourceDiscovery: []apidiscoveryv2beta1.APIResourceDiscovery{
{
Resource: "cronjobs",
Scope: apidiscoveryv2beta1.ScopeNamespace,
// populated to avoid nil panics
ResponseKind: &metav1.GroupVersionKind{},
Subresources: []apidiscoveryv2beta1.APISubresourceDiscovery{{
Subresource: "status",
// populated to avoid nil panics
ResponseKind: &metav1.GroupVersionKind{},
Verbs: []string{"create", "delete", "deletecollection", "get", "list", "patch", "update", "watch"},
}},
},
},
},
{
name: "Test with mismatch parent and subresource scope",
resources: []metav1.APIResource{