@@ -434,20 +434,35 @@ func (a *Agent) getAvailableResources(ctx context.Context, gvr schema.GroupVersi
434434 return res , err
435435}
436436
437- // getAvailableAPIs retrieves a list of available APIs for a given group and version.
437+ // getAvailableAPIs retrieves discovery data for a given group and version.
438438// If group and version are empty, all available APIs are returned.
439439// If group is empty and version is not, all APIs for the given version are returned.
440- // If group and version are not empty, all APIs for the given group and version are returned.
440+ // If group is not empty and version is empty, metadata for the given API group is returned.
441+ // If group and version are both set, all APIs for the given group and version are returned.
441442//
442443// It does not yet support the new aggregated API.
443444func (a * Agent ) getAvailableAPIs (ctx context.Context , group , version string ) (* unstructured.Unstructured , error ) {
444445 groupVersion := fmt .Sprintf ("%s/%s" , group , version )
445446 var groupList * v1.APIGroupList
447+ var groupInfo * v1.APIGroup
446448 var resourceList * v1.APIResourceList
447449 var err error
448450
449451 if group == "" && version == "" {
450452 groupList , err = a .kubeClient .Clientset .Discovery ().ServerGroups ()
453+ } else if group != "" && version == "" {
454+ groupList , err = a .kubeClient .Clientset .Discovery ().ServerGroups ()
455+ if err == nil {
456+ for i := range groupList .Groups {
457+ if groupList .Groups [i ].Name == group {
458+ groupInfo = & groupList .Groups [i ]
459+ break
460+ }
461+ }
462+ if groupInfo == nil {
463+ err = fmt .Errorf ("api group %s not found" , group )
464+ }
465+ }
451466 } else if group == "" && version != "" {
452467 resourceList , err = a .kubeClient .Clientset .Discovery ().ServerResourcesForGroupVersion (version )
453468 } else {
@@ -458,7 +473,9 @@ func (a *Agent) getAvailableAPIs(ctx context.Context, group, version string) (*u
458473 }
459474
460475 var obj map [string ]any
461- if groupList != nil {
476+ if groupInfo != nil {
477+ obj , err = runtime .DefaultUnstructuredConverter .ToUnstructured (groupInfo )
478+ } else if groupList != nil {
462479 obj , err = runtime .DefaultUnstructuredConverter .ToUnstructured (groupList )
463480 } else if resourceList != nil {
464481 obj , err = runtime .DefaultUnstructuredConverter .ToUnstructured (resourceList )
0 commit comments