@@ -22,6 +22,8 @@ import (
22
22
"path/filepath"
23
23
"strings"
24
24
25
+ "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
26
+
25
27
"k8s.io/apimachinery/pkg/api/errors"
26
28
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27
29
"k8s.io/apimachinery/pkg/runtime"
@@ -130,6 +132,13 @@ func (r *Reconciler) reconcileExists(ctx context.Context, name types.NamespacedN
130
132
}
131
133
}()
132
134
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
+
133
142
err = r .injectOwnerRef (ctx , instance , objects )
134
143
if err != nil {
135
144
return reconcile.Result {}, err
@@ -403,3 +412,37 @@ func (r *Reconciler) IsKustomizeOptionUsed() bool {
403
412
func (r * Reconciler ) SetSink (sink Sink ) {
404
413
r .options .sink = sink
405
414
}
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