...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package k8s
16
17 import (
18 "context"
19 "fmt"
20
21 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
22 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
23 "k8s.io/apimachinery/pkg/labels"
24 "sigs.k8s.io/controller-runtime/pkg/client"
25 )
26
27
28
29
30
31
32
33 func ListCRDs(ctx context.Context, kubeClient client.Client, pageToken string) (crds []v1.CustomResourceDefinition, nextPageToken string, err error) {
34 list := v1.CustomResourceDefinitionList{}
35 labelSelector, err := labels.Parse(KCCSystemLabelSelectorRaw)
36 if err != nil {
37 return nil, "", fmt.Errorf("error parsing '%v' as a label selector: %v", KCCSystemLabelSelectorRaw, err)
38 }
39 opts := &client.ListOptions{
40 Limit: 100,
41 Raw: &metav1.ListOptions{},
42 LabelSelector: labelSelector,
43 Continue: pageToken,
44 }
45 if err := kubeClient.List(ctx, &list, opts); err != nil {
46 return nil, "", fmt.Errorf("error listing CRDs: %w", err)
47 }
48
49 for _, crd := range list.Items {
50 if _, ok := IgnoredCRDList[crd.Name]; ok {
51 continue
52 }
53 crds = append(crds, crd)
54 }
55 return crds, list.GetContinue(), nil
56 }
57
View as plain text