@@ -22,7 +22,6 @@ import (
2222 "errors"
2323 "fmt"
2424 "os"
25- "sort"
2625 "strings"
2726 "time"
2827
@@ -807,120 +806,44 @@ func (r *KustomizationReconciler) apply(ctx context.Context,
807806 },
808807 }
809808
810- // contains only CRDs and Namespaces
811- var defStage []* unstructured.Unstructured
812-
813- // contains only Kubernetes Class types e.g.: RuntimeClass, PriorityClass,
814- // StorageClass, VolumeSnapshotClass, IngressClass, GatewayClass, ClusterClass, etc
815- var classStage []* unstructured.Unstructured
816-
817- // contains all objects except for CRDs, Namespaces and Class type objects
818- var resStage []* unstructured.Unstructured
819-
820- // contains the objects' metadata after apply
821- resultSet := ssa .NewChangeSet ()
822-
823809 for _ , u := range objects {
824810 if decryptor .IsEncryptedSecret (u ) {
825811 return false , nil ,
826812 fmt .Errorf ("%s is SOPS encrypted, configuring decryption is required for this secret to be reconciled" ,
827813 ssautil .FmtUnstructured (u ))
828814 }
829-
830- switch {
831- case ssautil .IsClusterDefinition (u ):
832- defStage = append (defStage , u )
833- case strings .HasSuffix (u .GetKind (), "Class" ):
834- classStage = append (classStage , u )
835- default :
836- resStage = append (resStage , u )
837- }
838-
839815 }
840816
817+ // contains the objects' metadata after apply
818+ resultSet := ssa .NewChangeSet ()
841819 var changeSetLog strings.Builder
842820
843- // validate, apply and wait for CRDs and Namespaces to register
844- if len (defStage ) > 0 {
845- changeSet , err := manager .ApplyAll (ctx , defStage , applyOpts )
846- if err != nil {
847- return false , nil , err
848- }
821+ if len (objects ) > 0 {
822+ changeSet , err := manager .ApplyAllStaged (ctx , objects , applyOpts )
849823
850824 if changeSet != nil && len (changeSet .Entries ) > 0 {
851825 resultSet .Append (changeSet .Entries )
852826
853- if r .GroupChangeLog {
854- log .Info ("server-side apply for cluster definitions completed" , "output" , changeSet .ToGroupedMap ())
855- } else {
856- log .Info ("server-side apply for cluster definitions completed" , "output" , changeSet .ToMap ())
857- }
827+ // filter out the objects that have not changed
858828 for _ , change := range changeSet .Entries {
859829 if HasChanged (change .Action ) {
860830 changeSetLog .WriteString (change .String () + "\n " )
861831 }
862832 }
863-
864- if err := manager .WaitForSet (changeSet .ToObjMetadataSet (), ssa.WaitOptions {
865- Interval : 2 * time .Second ,
866- Timeout : obj .GetTimeout (),
867- }); err != nil {
868- return false , nil , err
869- }
870833 }
871- }
872834
873- // validate, apply and wait for Class type objects to register
874- if len (classStage ) > 0 {
875- changeSet , err := manager .ApplyAll (ctx , classStage , applyOpts )
876- if err != nil {
877- return false , nil , err
878- }
879-
880- if changeSet != nil && len (changeSet .Entries ) > 0 {
881- resultSet .Append (changeSet .Entries )
882-
883- if r .GroupChangeLog {
884- log .Info ("server-side apply for cluster definitions completed" , "output" , changeSet .ToGroupedMap ())
885- } else {
886- log .Info ("server-side apply for cluster class types completed" , "output" , changeSet .ToMap ())
887- }
888- for _ , change := range changeSet .Entries {
889- if HasChanged (change .Action ) {
890- changeSetLog .WriteString (change .String () + "\n " )
891- }
892- }
893-
894- if err := manager .WaitForSet (changeSet .ToObjMetadataSet (), ssa.WaitOptions {
895- Interval : 2 * time .Second ,
896- Timeout : obj .GetTimeout (),
897- }); err != nil {
898- return false , nil , err
899- }
900- }
901- }
902-
903- // sort by kind, validate and apply all the others objects
904- sort .Sort (ssa .SortableUnstructureds (resStage ))
905- if len (resStage ) > 0 {
906- changeSet , err := manager .ApplyAll (ctx , resStage , applyOpts )
835+ // include the change log in the error message in case af a partial apply
907836 if err != nil {
908837 return false , nil , fmt .Errorf ("%w\n %s" , err , changeSetLog .String ())
909838 }
910839
840+ // log all applied objects
911841 if changeSet != nil && len (changeSet .Entries ) > 0 {
912- resultSet .Append (changeSet .Entries )
913-
914842 if r .GroupChangeLog {
915- log .Info ("server-side apply for cluster definitions completed" , "output" , changeSet .ToGroupedMap ())
843+ log .Info ("server-side apply completed" , "output" , changeSet .ToGroupedMap (), "revision" , revision )
916844 } else {
917845 log .Info ("server-side apply completed" , "output" , changeSet .ToMap (), "revision" , revision )
918846 }
919- for _ , change := range changeSet .Entries {
920- if HasChanged (change .Action ) {
921- changeSetLog .WriteString (change .String () + "\n " )
922- }
923- }
924847 }
925848 }
926849
0 commit comments