|
14 | 14 |
|
15 | 15 | package testhelpers
|
16 | 16 |
|
17 |
| -import ( |
18 |
| - "fmt" |
19 |
| - "strings" |
20 |
| - |
21 |
| - "github.com/GoogleContainerTools/kpt/porch/functions/pkg/yo" |
22 |
| -) |
23 |
| - |
24 |
| -type ResourceList struct { |
25 |
| - doc *yo.Doc |
26 |
| - kubeObjects []*yo.KubeObject |
27 |
| -} |
28 |
| - |
29 |
| -func NewResourceList(s string) (*ResourceList, error) { |
30 |
| - doc, err := yo.Parse([]byte(s)) |
31 |
| - if err != nil { |
32 |
| - return nil, fmt.Errorf("failed to parse: %w", err) |
33 |
| - } |
34 |
| - kubeObjects := yo.ExtractKubeObjects(doc) |
35 |
| - |
36 |
| - return &ResourceList{ |
37 |
| - doc: doc, |
38 |
| - kubeObjects: kubeObjects, |
39 |
| - }, nil |
40 |
| -} |
41 |
| - |
42 |
| -func (r *ResourceList) Debug() string { |
43 |
| - var info []string |
44 |
| - for _, obj := range r.kubeObjects { |
45 |
| - info = append(info, fmt.Sprintf("%s::%s/%s", obj.GetKind(), obj.GetNamespace(), obj.GetName())) |
46 |
| - } |
47 |
| - return strings.Join(info, ";") |
48 |
| - // b, err := r.doc.ToYAML() |
49 |
| - // if err != nil { |
50 |
| - // return fmt.Sprintf("<ToYAML failed: %v>", err) |
51 |
| - // } |
52 |
| - // return string(b) |
53 |
| -} |
54 |
| - |
55 |
| -func (r *ResourceList) KubernetesObjects() *KubeObjectList { |
56 |
| - return &KubeObjectList{ |
57 |
| - objects: r.kubeObjects, |
58 |
| - } |
59 |
| -} |
60 |
| - |
61 |
| -func (r *ResourceList) AddKubeObject(apiVersion, kind string) (*yo.KubeObject, error) { |
62 |
| - objects := r.doc.Objects() |
63 |
| - |
64 |
| - if len(objects) != 1 { |
65 |
| - return nil, fmt.Errorf("expected exactly one ResourceList object") |
66 |
| - } |
67 |
| - rl := yo.AsKubeObject(objects[0]) |
68 |
| - if rl.GetKind() != "ResourceList" { |
69 |
| - return nil, fmt.Errorf("expected object to be of kind ResourceList") |
70 |
| - } |
71 |
| - if rl.GetAPIVersion() != "config.kubernetes.io/v1alpha1" { |
72 |
| - return nil, fmt.Errorf("expected object to be of apiVersion config.kubernetes.io/v1alpha1") |
73 |
| - } |
74 |
| - |
75 |
| - obj := yo.NewMap() |
76 |
| - ko := yo.AsKubeObject(obj) |
77 |
| - ko.SetAPIVersion(apiVersion) |
78 |
| - ko.SetKind(kind) |
79 |
| - |
80 |
| - items := rl.UpsertSlice("items") |
81 |
| - |
82 |
| - items.Add(ko.Node()) |
83 |
| - |
84 |
| - return ko, nil |
85 |
| -} |
86 |
| - |
87 |
| -func (r *ResourceList) Encode() ([]byte, error) { |
88 |
| - return r.doc.ToYAML() |
89 |
| -} |
90 |
| - |
91 |
| -func (r *ResourceList) Decode(b []byte) error { |
92 |
| - rl, err := NewResourceList(string(b)) |
93 |
| - if err != nil { |
94 |
| - return err |
95 |
| - } |
96 |
| - *r = *rl |
97 |
| - return nil |
98 |
| -} |
99 |
| - |
100 |
| -type KubeObjectList struct { |
101 |
| - objects []*yo.KubeObject |
102 |
| -} |
103 |
| - |
104 |
| -func (l *KubeObjectList) OfKind(apiVersion, kind string) *KubeObjectList { |
105 |
| - ret := &KubeObjectList{} |
106 |
| - for _, obj := range l.objects { |
107 |
| - if obj.GetAPIVersion() == apiVersion && obj.GetKind() == kind { |
108 |
| - ret.objects = append(ret.objects, obj) |
109 |
| - } |
110 |
| - } |
111 |
| - return ret |
112 |
| -} |
113 |
| - |
114 |
| -func (l *KubeObjectList) ExactlyOne() (*yo.KubeObject, error) { |
115 |
| - if len(l.objects) == 0 { |
116 |
| - return nil, fmt.Errorf("found no matching objects, expected exactly one") |
117 |
| - } |
118 |
| - if len(l.objects) > 1 { |
119 |
| - return nil, fmt.Errorf("found multiple (%d) matching objects, expected exactly one", len(l.objects)) |
120 |
| - } |
121 |
| - return l.objects[0], nil |
122 |
| -} |
123 |
| - |
124 |
| -func (l *KubeObjectList) ForEach(fn func(*yo.KubeObject) error) error { |
125 |
| - for _, obj := range l.objects { |
126 |
| - if err := fn(obj); err != nil { |
127 |
| - return err |
128 |
| - } |
129 |
| - } |
130 |
| - return nil |
131 |
| -} |
| 17 | +// import ( |
| 18 | +// "fmt" |
| 19 | +// "strings" |
| 20 | +// // "github.com/GoogleContainerTools/kpt/porch/functions/pkg/yo" |
| 21 | +// ) |
| 22 | + |
| 23 | +// type ResourceList struct { |
| 24 | +// doc *yo.Doc |
| 25 | +// kubeObjects []*yo.KubeObject |
| 26 | +// } |
| 27 | + |
| 28 | +// func NewResourceList(s string) (*ResourceList, error) { |
| 29 | +// doc, err := fn.ParseKubeObjects([]byte(s)) |
| 30 | +// if err != nil { |
| 31 | +// return nil, fmt.Errorf("failed to parse: %w", err) |
| 32 | +// } |
| 33 | +// kubeObjects := yo.ExtractKubeObjects(doc) |
| 34 | + |
| 35 | +// return &ResourceList{ |
| 36 | +// doc: doc, |
| 37 | +// kubeObjects: kubeObjects, |
| 38 | +// }, nil |
| 39 | +// } |
| 40 | + |
| 41 | +// func (r *ResourceList) Debug() string { |
| 42 | +// var info []string |
| 43 | +// for _, obj := range r.kubeObjects { |
| 44 | +// info = append(info, fmt.Sprintf("%s::%s/%s", obj.GetKind(), obj.GetNamespace(), obj.GetName())) |
| 45 | +// } |
| 46 | +// return strings.Join(info, ";") |
| 47 | +// // b, err := r.doc.ToYAML() |
| 48 | +// // if err != nil { |
| 49 | +// // return fmt.Sprintf("<ToYAML failed: %v>", err) |
| 50 | +// // } |
| 51 | +// // return string(b) |
| 52 | +// } |
| 53 | + |
| 54 | +// func (r *ResourceList) KubernetesObjects() *KubeObjectList { |
| 55 | +// return &KubeObjectList{ |
| 56 | +// objects: r.kubeObjects, |
| 57 | +// } |
| 58 | +// } |
| 59 | + |
| 60 | +// func (r *ResourceList) AddKubeObject(apiVersion, kind string) (*yo.KubeObject, error) { |
| 61 | +// objects := r.doc.Objects() |
| 62 | + |
| 63 | +// if len(objects) != 1 { |
| 64 | +// return nil, fmt.Errorf("expected exactly one ResourceList object") |
| 65 | +// } |
| 66 | +// rl := yo.AsKubeObject(objects[0]) |
| 67 | +// if rl.GetKind() != "ResourceList" { |
| 68 | +// return nil, fmt.Errorf("expected object to be of kind ResourceList") |
| 69 | +// } |
| 70 | +// if rl.GetAPIVersion() != "config.kubernetes.io/v1alpha1" { |
| 71 | +// return nil, fmt.Errorf("expected object to be of apiVersion config.kubernetes.io/v1alpha1") |
| 72 | +// } |
| 73 | + |
| 74 | +// obj := yo.NewMap() |
| 75 | +// ko := yo.AsKubeObject(obj) |
| 76 | +// ko.SetAPIVersion(apiVersion) |
| 77 | +// ko.SetKind(kind) |
| 78 | + |
| 79 | +// items := rl.UpsertSlice("items") |
| 80 | + |
| 81 | +// items.Add(ko.Node()) |
| 82 | + |
| 83 | +// return ko, nil |
| 84 | +// } |
| 85 | + |
| 86 | +// func (r *ResourceList) Encode() ([]byte, error) { |
| 87 | +// return r.doc.ToYAML() |
| 88 | +// } |
| 89 | + |
| 90 | +// func (r *ResourceList) Decode(b []byte) error { |
| 91 | +// rl, err := NewResourceList(string(b)) |
| 92 | +// if err != nil { |
| 93 | +// return err |
| 94 | +// } |
| 95 | +// *r = *rl |
| 96 | +// return nil |
| 97 | +// } |
| 98 | + |
| 99 | +// type KubeObjectList struct { |
| 100 | +// objects []*yo.KubeObject |
| 101 | +// } |
| 102 | + |
| 103 | +// func (l *KubeObjectList) OfKind(apiVersion, kind string) *KubeObjectList { |
| 104 | +// ret := &KubeObjectList{} |
| 105 | +// for _, obj := range l.objects { |
| 106 | +// if obj.GetAPIVersion() == apiVersion && obj.GetKind() == kind { |
| 107 | +// ret.objects = append(ret.objects, obj) |
| 108 | +// } |
| 109 | +// } |
| 110 | +// return ret |
| 111 | +// } |
| 112 | + |
| 113 | +// func (l *KubeObjectList) ExactlyOne() (*yo.KubeObject, error) { |
| 114 | +// if len(l.objects) == 0 { |
| 115 | +// return nil, fmt.Errorf("found no matching objects, expected exactly one") |
| 116 | +// } |
| 117 | +// if len(l.objects) > 1 { |
| 118 | +// return nil, fmt.Errorf("found multiple (%d) matching objects, expected exactly one", len(l.objects)) |
| 119 | +// } |
| 120 | +// return l.objects[0], nil |
| 121 | +// } |
| 122 | + |
| 123 | +// func (l *KubeObjectList) ForEach(fn func(*yo.KubeObject) error) error { |
| 124 | +// for _, obj := range l.objects { |
| 125 | +// if err := fn(obj); err != nil { |
| 126 | +// return err |
| 127 | +// } |
| 128 | +// } |
| 129 | +// return nil |
| 130 | +// } |
0 commit comments