@@ -485,8 +485,6 @@ func (p *PhaseReconciler) ApplyFromCache(ctx context.Context) (*Result, error) {
485485
486486 log .Info ("Applying provider configuration from cache" )
487487
488- errs := []error {}
489-
490488 mr := configclient .NewMemoryReader ()
491489
492490 if err := mr .Init (ctx , "" ); err != nil {
@@ -498,64 +496,56 @@ func (p *PhaseReconciler) ApplyFromCache(ctx context.Context) (*Result, error) {
498496 return & Result {}, err
499497 }
500498
501- for _ , manifest := range secret .Data {
502- if secret .GetAnnotations ()[operatorv1 .CompressedAnnotation ] == operatorv1 .TrueValue {
503- break
504- }
499+ compressed := secret .GetAnnotations ()[operatorv1 .CompressedAnnotation ] == operatorv1 .TrueValue
505500
506- manifests := []unstructured.Unstructured {}
501+ if err := p .applyManifestsFromData (ctx , secret .Data , compressed ); err != nil {
502+ log .Error (err , "failed to apply objects from cache" )
507503
508- err := json .Unmarshal (manifest , & manifests )
509- if err != nil {
510- log .Error (err , "failed to convert yaml to unstructured" )
504+ return & Result {}, err
505+ }
511506
512- return & Result {}, err
513- }
507+ log .Info ("Applied all objects from cache" )
514508
515- for _ , manifest := range manifests {
516- if err := p .ctrlClient .Patch (ctx , & manifest , client .Apply , client .ForceOwnership , client .FieldOwner (cacheOwner )); err != nil {
517- errs = append (errs , err )
518- }
519- }
520- }
509+ return & Result {Completed : true }, nil
510+ }
521511
522- for _ , binaryManifest := range secret . Data {
523- if secret . GetAnnotations ()[ operatorv1 . CompressedAnnotation ] != operatorv1 . TrueValue {
524- break
525- }
512+ // applyManifestsFromData unmarshals and applies manifests via server-side apply.
513+ // If compressed is true, each data value is decompressed before processing.
514+ func ( p * PhaseReconciler ) applyManifestsFromData ( ctx context. Context , data map [ string ][] byte , compressed bool ) error {
515+ log := log . FromContext ( ctx )
526516
527- manifest , err := decompressData (binaryManifest )
528- if err != nil {
529- log .Error (err , "failed to decompress yaml" )
517+ var errs []error
518+
519+ for _ , raw := range data {
520+ manifest := raw
521+
522+ if compressed {
523+ var err error
530524
531- return & Result {}, err
525+ manifest , err = decompressData (raw )
526+ if err != nil {
527+ log .Error (err , "failed to decompress yaml" )
528+
529+ return err
530+ }
532531 }
533532
534- manifests := []unstructured.Unstructured {}
533+ var manifests []unstructured.Unstructured
535534
536- err = json .Unmarshal (manifest , & manifests )
537- if err != nil {
535+ if err := json .Unmarshal (manifest , & manifests ); err != nil {
538536 log .Error (err , "failed to convert yaml to unstructured" )
539537
540- return & Result {}, err
538+ return err
541539 }
542540
543- for _ , manifest := range manifests {
544- if err := p .ctrlClient .Patch (ctx , & manifest , client .Apply , client .ForceOwnership , client .FieldOwner (cacheOwner )); err != nil {
541+ for i := range manifests {
542+ if err := p .ctrlClient .Patch (ctx , & manifests [ i ] , client .Apply , client .ForceOwnership , client .FieldOwner (cacheOwner )); err != nil {
545543 errs = append (errs , err )
546544 }
547545 }
548546 }
549547
550- if err := kerrors .NewAggregate (errs ); err != nil {
551- log .Error (err , "failed to apply objects from cache" )
552-
553- return & Result {}, err
554- }
555-
556- log .Info ("Applied all objects from cache" )
557-
558- return & Result {Completed : true }, nil
548+ return kerrors .NewAggregate (errs )
559549}
560550
561551// setCacheHash calculates current provider and secret hash, and updates it on the secret.
0 commit comments