@@ -665,6 +665,235 @@ var _ = Describe("Classifier Deployer", func() {
665665 return true
666666 }, timeout , pollingInterval ).Should (BeTrue ())
667667 })
668+
669+ It ("getSveltosAgentPatches reads post render patches from ConfigMap" , func () {
670+ cmYAML := `apiVersion: v1
671+ data:
672+ deployment-patch: |-
673+ patch: |-
674+ - op: replace
675+ path: /spec/template/spec/containers/0/resources/requests/cpu
676+ value: 500m
677+ - op: replace
678+ path: /spec/template/spec/containers/0/resources/requests/memory
679+ value: 512Mi
680+ - op: replace
681+ path: /spec/template/spec/containers/0/resources/limits/cpu
682+ value: 500m
683+ - op: replace
684+ path: /spec/template/spec/containers/0/resources/limits/memory
685+ value: 1024Mi
686+ target:
687+ kind: Deployment
688+ name: sveltos-agent-manager
689+ namespace: projectsveltos
690+ clusterrole-patch: |-
691+ patch: |-
692+ - op: remove
693+ path: /rules
694+ target:
695+ kind: ClusterRole
696+ name: sveltos-agent-manager-role
697+ kind: ConfigMap
698+ metadata:
699+ name: sveltos-agent-config
700+ namespace: projectsveltos`
701+
702+ cm , err := deployer .GetUnstructured ([]byte (cmYAML ), logger )
703+ Expect (err ).To (BeNil ())
704+
705+ initObjects := []client.Object {}
706+ for i := range cm {
707+ initObjects = append (initObjects , cm [i ])
708+ }
709+
710+ c := fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (initObjects ... ).Build ()
711+
712+ controllers .SetSveltosAgentConfigMap ("sveltos-agent-config" )
713+ patches , err := controllers .GetSveltosAgentPatches (context .TODO (), c , logger )
714+ Expect (err ).To (BeNil ())
715+ Expect (len (patches )).To (Equal (2 ))
716+ controllers .SetSveltosAgentConfigMap ("" )
717+
718+ verifyPatches (patches )
719+ })
720+
721+ It ("getSveltosApplierPatches reads post render patches from ConfigMap" , func () {
722+ cmYAML := `apiVersion: v1
723+ data:
724+ deployment-patch: |-
725+ patch: |-
726+ - op: replace
727+ path: /spec/template/spec/containers/0/resources/requests/cpu
728+ value: 500m
729+ - op: replace
730+ path: /spec/template/spec/containers/0/resources/requests/memory
731+ value: 512Mi
732+ target:
733+ kind: Deployment
734+ name: sveltos-applier-manager
735+ namespace: projectsveltos
736+ clusterrole-patch: |-
737+ patch: |-
738+ - op: remove
739+ path: /rules
740+ target:
741+ kind: ClusterRole
742+ name: sveltos-applier-manager-role
743+ kind: ConfigMap
744+ metadata:
745+ name: sveltos-applier-config
746+ namespace: projectsveltos`
747+
748+ cm , err := deployer .GetUnstructured ([]byte (cmYAML ), logger )
749+ Expect (err ).To (BeNil ())
750+
751+ initObjects := []client.Object {}
752+ for i := range cm {
753+ initObjects = append (initObjects , cm [i ])
754+ }
755+
756+ c := fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (initObjects ... ).Build ()
757+
758+ controllers .SetSveltosApplierConfigMap ("sveltos-applier-config" )
759+ patches , err := controllers .GetSveltosApplierPatches (context .TODO (), c , logger )
760+ Expect (err ).To (BeNil ())
761+ Expect (len (patches )).To (Equal (2 ))
762+ controllers .SetSveltosApplierConfigMap ("" )
763+
764+ verifyPatches (patches )
765+ })
766+
767+ It ("getSveltosAgentPatches with Strategic Merge Patch" , func () {
768+ cmYAML := `apiVersion: v1
769+ data:
770+ deployment-spec-patch: |-
771+ patch: |-
772+ apiVersion: apps/v1
773+ kind: Deployment
774+ metadata:
775+ name: "sveltos-ag*"
776+ spec:
777+ template:
778+ spec:
779+ containers:
780+ - name: manager
781+ resources:
782+ requests:
783+ memory: 256Mi
784+ target:
785+ kind: Deployment
786+ group: apps
787+ name: "sveltos-ag*"
788+ kind: ConfigMap
789+ metadata:
790+ name: sveltos-agent-config
791+ namespace: projectsveltos`
792+
793+ cm , err := deployer .GetUnstructured ([]byte (cmYAML ), logger )
794+ Expect (err ).To (BeNil ())
795+
796+ initObjects := []client.Object {}
797+ for i := range cm {
798+ initObjects = append (initObjects , cm [i ])
799+ }
800+
801+ c := fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (initObjects ... ).Build ()
802+
803+ controllers .SetSveltosAgentConfigMap ("sveltos-agent-config" )
804+ patches , err := controllers .GetSveltosAgentPatches (context .TODO (), c , logger )
805+ Expect (err ).To (BeNil ())
806+ Expect (len (patches )).To (Equal (1 ))
807+ Expect (patches [0 ].Target .Kind ).To (Equal ("Deployment" ))
808+ Expect (patches [0 ].Patch ).ToNot (BeEmpty ())
809+ controllers .SetSveltosAgentConfigMap ("" )
810+ })
811+
812+ It ("getSveltosAgentPatches reads old post render patches from ConfigMap" , func () {
813+ cmYAML := `apiVersion: v1
814+ data:
815+ deployment-patch: |-
816+ image-patch: |-
817+ - op: replace
818+ path: /spec/template/spec/containers/0/image
819+ value: registry.ciroos.ai/samay/third-party-images/projectsveltos/sveltos-agent:f2d27fef1-251024102029-amd64
820+ - op: add
821+ path: /spec/template/spec/imagePullSecrets
822+ value:
823+ - name: regcred
824+ - op: replace
825+ path: /spec/template/spec/containers/0/resources/requests/cpu
826+ value: 500m
827+ - op: replace
828+ path: /spec/template/spec/containers/0/resources/requests/memory
829+ value: 512Mi
830+ - op: replace
831+ path: /spec/template/spec/containers/0/resources/limits/cpu
832+ value: 500m
833+ - op: replace
834+ path: /spec/template/spec/containers/0/resources/limits/memory
835+ value: 1024Mi
836+ kind: ConfigMap
837+ metadata:
838+ name: sveltos-agent-config-old
839+ namespace: projectsveltos`
840+
841+ cm , err := deployer .GetUnstructured ([]byte (cmYAML ), logger )
842+ Expect (err ).To (BeNil ())
843+
844+ initObjects := []client.Object {}
845+ for i := range cm {
846+ initObjects = append (initObjects , cm [i ])
847+ }
848+
849+ c := fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (initObjects ... ).Build ()
850+
851+ controllers .SetSveltosAgentConfigMap ("sveltos-agent-config-old" )
852+ patches , err := controllers .GetSveltosAgentPatches (context .TODO (), c , logger )
853+ Expect (err ).To (BeNil ())
854+ Expect (len (patches )).To (Equal (1 ))
855+ controllers .SetSveltosAgentConfigMap ("" )
856+ })
857+
858+ It ("getSveltosAgentPatches with old Strategic Merge Patch" , func () {
859+ cmYAML := `apiVersion: v1
860+ data:
861+ patch: |-
862+ apiVersion: apps/v1
863+ kind: Deployment
864+ metadata:
865+ name: "sveltos-ag*"
866+ spec:
867+ template:
868+ spec:
869+ containers:
870+ - name: manager
871+ resources:
872+ requests:
873+ memory: 256Mi
874+ kind: ConfigMap
875+ metadata:
876+ name: sveltos-agent-config-old
877+ namespace: projectsveltos`
878+
879+ cm , err := deployer .GetUnstructured ([]byte (cmYAML ), logger )
880+ Expect (err ).To (BeNil ())
881+
882+ initObjects := []client.Object {}
883+ for i := range cm {
884+ initObjects = append (initObjects , cm [i ])
885+ }
886+
887+ c := fake .NewClientBuilder ().WithScheme (scheme ).WithObjects (initObjects ... ).Build ()
888+
889+ controllers .SetSveltosAgentConfigMap ("sveltos-agent-config-old" )
890+ patches , err := controllers .GetSveltosAgentPatches (context .TODO (), c , logger )
891+ Expect (err ).To (BeNil ())
892+ Expect (len (patches )).To (Equal (1 ))
893+ Expect (patches [0 ].Target .Kind ).To (Equal ("Deployment" ))
894+ Expect (patches [0 ].Patch ).ToNot (BeEmpty ())
895+ controllers .SetSveltosAgentConfigMap ("" )
896+ })
668897})
669898
670899func prepareCluster () * clusterv1.Cluster {
@@ -775,3 +1004,21 @@ func verifyLabels(currentLabels, expectedLabels map[string]string) bool {
7751004
7761005 return true
7771006}
1007+
1008+ func verifyPatches (patches []libsveltosv1beta1.Patch ) {
1009+ found := false
1010+ for i := range patches {
1011+ if patches [i ].Target .Kind == "Deployment" {
1012+ found = true
1013+ }
1014+ }
1015+ Expect (found ).To (BeTrue ())
1016+
1017+ found = false
1018+ for i := range patches {
1019+ if patches [i ].Target .Kind == "ClusterRole" {
1020+ found = true
1021+ }
1022+ }
1023+ Expect (found ).To (BeTrue ())
1024+ }
0 commit comments