Skip to content

Commit d8f3ce5

Browse files
authored
Merge pull request #103 from SomtochiAma/handle-list-kind
Adds function for parsing list
2 parents 2282c1b + 4cda847 commit d8f3ce5

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

pkg/patterns/declarative/reconciler.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import (
2222
"path/filepath"
2323
"strings"
2424

25+
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
26+
2527
"k8s.io/apimachinery/pkg/api/errors"
2628
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2729
"k8s.io/apimachinery/pkg/runtime"
@@ -130,6 +132,13 @@ func (r *Reconciler) reconcileExists(ctx context.Context, name types.NamespacedN
130132
}
131133
}()
132134

135+
objects, err = parseListKind(objects)
136+
137+
if err != nil {
138+
log.Error(err, "Parsing list kind")
139+
return reconcile.Result{}, fmt.Errorf("error parsing list kind: %v", err)
140+
}
141+
133142
err = r.injectOwnerRef(ctx, instance, objects)
134143
if err != nil {
135144
return reconcile.Result{}, err
@@ -403,3 +412,37 @@ func (r *Reconciler) IsKustomizeOptionUsed() bool {
403412
func (r *Reconciler) SetSink(sink Sink) {
404413
r.options.sink = sink
405414
}
415+
416+
func parseListKind(infos *manifest.Objects) (*manifest.Objects, error) {
417+
var out []*manifest.Object
418+
419+
for _, item := range infos.Items {
420+
if item.Group == "v1" && item.Kind == "List" {
421+
itemObj := item.UnstructuredObject()
422+
423+
err := itemObj.EachListItem(func(obj runtime.Object) error {
424+
itemUnstructured := obj.(*unstructured.Unstructured)
425+
newObj, err := manifest.NewObject(itemUnstructured)
426+
if err != nil {
427+
return err
428+
}
429+
out = append(out, newObj)
430+
return nil
431+
})
432+
433+
if err != nil {
434+
return nil, err
435+
}
436+
} else {
437+
out = append(out, item)
438+
}
439+
}
440+
441+
ret := manifest.Objects{
442+
Items: out,
443+
Blobs: infos.Blobs,
444+
Path: infos.Path,
445+
}
446+
447+
return &ret, nil
448+
}

0 commit comments

Comments
 (0)