~ knotless Search/
↑↓ move↵ open⇧↵ all results
0
0
main
28 lines · 716 B Raw History
package kube

import (
	"context"

	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func ListPage[T any](ctx context.Context, r Resource, opts metav1.ListOptions) ([]T, metav1.ListMeta, error) {
	ri, err := r.iface()
	if err != nil {
		return nil, metav1.ListMeta{}, err
	}
	l, err := ri.List(ctx, opts)
	if err != nil {
		return nil, metav1.ListMeta{}, err
	}
	out := make([]T, 0, len(l.Items))
	for i := range l.Items {
		v, err := Decode[T](l.Items[i].Object)
		if err != nil {
			return nil, metav1.ListMeta{}, err
		}
		out = append(out, *v)
	}
	meta := metav1.ListMeta{ResourceVersion: l.GetResourceVersion(), Continue: l.GetContinue(), RemainingItemCount: l.GetRemainingItemCount()}
	return out, meta, nil
}