...
1
16
17 package kubeutil
18
19 import (
20 "fmt"
21
22 "k8s.io/apimachinery/pkg/runtime"
23 "k8s.io/apimachinery/pkg/runtime/schema"
24 "sigs.k8s.io/controller-runtime/pkg/client"
25 )
26
27
28
29
30 func SetGroupVersionKind(scheme *runtime.Scheme, obj client.Object) error {
31 gvks, unversioned, err := scheme.ObjectKinds(obj)
32 if err != nil {
33 return err
34 }
35 if unversioned {
36 return fmt.Errorf("ObjectKinds unexpectedly returned unversioned: %#v", unversioned)
37 }
38 if len(gvks) != 1 {
39 return fmt.Errorf("ObjectKinds unexpectedly returned zero or multiple gvks: %#v", gvks)
40 }
41 obj.GetObjectKind().SetGroupVersionKind(gvks[0])
42 return nil
43 }
44
45 func NewListObject(scheme *runtime.Scheme, gvk schema.GroupVersionKind) (client.ObjectList, error) {
46 list, err := scheme.New(gvk.GroupVersion().WithKind(gvk.Kind + "List"))
47 if err != nil {
48 return nil, err
49 }
50
51 listObj, ok := list.(client.ObjectList)
52 if !ok {
53 return nil, fmt.Errorf("list object of %v does not implement client.ObjectList", gvk)
54 }
55
56 return listObj, nil
57 }
58
View as plain text