@@ -687,7 +687,7 @@ var _ = Describe("Update", func() {
687687
688688})
689689
690- var _ = Describe ("Update - Namespace Config Immutability " , func () {
690+ var _ = Describe ("Update - Namespace Config Updates " , func () {
691691 var (
692692 addonManager * addon.Manager
693693 mockProvider * mockprovider.MockProvider
@@ -707,21 +707,9 @@ var _ = Describe("Update - Namespace Config Immutability", func() {
707707 mockProvider = mockprovider .NewMockProvider ()
708708 fakeStackManager = new (fakes.FakeStackManager )
709709
710- fakeStackManager .CreateStackStub = func (_ context.Context , _ string , rs builder.ResourceSetReader , _ map [string ]string , _ map [string ]string , errs chan error ) error {
711- go func () {
712- errs <- nil
713- }()
714- Expect (rs ).To (BeAssignableToTypeOf (& builder.IAMRoleResourceSet {}))
715- rs .(* builder.IAMRoleResourceSet ).OutputRole = "new-service-account-role-arn"
716- return nil
717- }
718-
719710 oidc := makeOIDCManager ()
720711
721- mockProvider .MockEKS ().On ("DescribeAddonVersions" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
722- Expect (args ).To (HaveLen (2 ))
723- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonVersionsInput {}))
724- }).Return (& awseks.DescribeAddonVersionsOutput {
712+ mockProvider .MockEKS ().On ("DescribeAddonVersions" , mock .Anything , mock .Anything ).Return (& awseks.DescribeAddonVersionsOutput {
725713 Addons : []ekstypes.AddonInfo {
726714 {
727715 AddonName : aws .String ("my-addon" ),
@@ -742,178 +730,20 @@ var _ = Describe("Update - Namespace Config Immutability", func() {
742730 Expect (err ).NotTo (HaveOccurred ())
743731 })
744732
745- Context ("namespace config immutability " , func () {
733+ Context ("namespace config updates " , func () {
746734 var podIdentityIAMUpdater mocks.PodIdentityIAMUpdater
747735
748- When ("attempting to modify namespace config" , func () {
749- It ("returns an error when trying to change namespace config" , func () {
750- // Mock DescribeAddon to return an addon with existing namespace config
751- mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
752- Expect (args ).To (HaveLen (2 ))
753- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonInput {}))
754- }).Return (& awseks.DescribeAddonOutput {
755- Addon : & ekstypes.Addon {
756- AddonName : aws .String ("my-addon" ),
757- AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
758- Status : "created" ,
759- NamespaceConfig : & ekstypes.AddonNamespaceConfigResponse {
760- Namespace : aws .String ("existing-namespace" ),
761- },
762- },
763- }, nil ).Once ()
764-
765- err := addonManager .Update (context .Background (), & api.Addon {
766- Name : "my-addon" ,
767- Version : "v1.0.0-eksbuild.2" ,
768- NamespaceConfig : & api.AddonNamespaceConfig {
769- Namespace : "new-namespace" ,
770- },
771- }, & podIdentityIAMUpdater , 0 )
772-
773- Expect (err ).To (HaveOccurred ())
774- Expect (err ).To (MatchError (ContainSubstring ("namespace configuration cannot be modified after addon creation" )))
775- Expect (err ).To (MatchError (ContainSubstring ("existing: \" existing-namespace\" , requested: \" new-namespace\" " )))
776- })
777-
778- It ("returns an error when trying to add namespace config to addon without one" , func () {
779- // Mock DescribeAddon to return an addon without namespace config
780- mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
781- Expect (args ).To (HaveLen (2 ))
782- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonInput {}))
783- }).Return (& awseks.DescribeAddonOutput {
784- Addon : & ekstypes.Addon {
785- AddonName : aws .String ("my-addon" ),
786- AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
787- Status : "created" ,
788- NamespaceConfig : nil , // No existing namespace config
789- },
790- }, nil ).Once ()
791-
792- err := addonManager .Update (context .Background (), & api.Addon {
793- Name : "my-addon" ,
794- Version : "v1.0.0-eksbuild.2" ,
795- NamespaceConfig : & api.AddonNamespaceConfig {
796- Namespace : "new-namespace" ,
797- },
798- }, & podIdentityIAMUpdater , 0 )
799-
800- Expect (err ).To (HaveOccurred ())
801- Expect (err ).To (MatchError (ContainSubstring ("namespace configuration cannot be modified after addon creation" )))
802- Expect (err ).To (MatchError (ContainSubstring ("existing: <none>, requested: \" new-namespace\" " )))
803- })
804-
805- It ("returns an error when trying to remove namespace config from addon with one" , func () {
736+ When ("updating addon with different namespace config" , func () {
737+ It ("succeeds without validation error" , func () {
806738 // Mock DescribeAddon to return an addon with existing namespace config
807- mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
808- Expect (args ).To (HaveLen (2 ))
809- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonInput {}))
810- }).Return (& awseks.DescribeAddonOutput {
811- Addon : & ekstypes.Addon {
812- AddonName : aws .String ("my-addon" ),
813- AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
814- Status : "created" ,
815- NamespaceConfig : & ekstypes.AddonNamespaceConfigResponse {
816- Namespace : aws .String ("existing-namespace" ),
817- },
818- },
819- }, nil ).Once ()
820-
821- err := addonManager .Update (context .Background (), & api.Addon {
822- Name : "my-addon" ,
823- Version : "v1.0.0-eksbuild.2" ,
824- NamespaceConfig : nil , // Trying to remove namespace config
825- }, & podIdentityIAMUpdater , 0 )
826-
827- Expect (err ).To (HaveOccurred ())
828- Expect (err ).To (MatchError (ContainSubstring ("namespace configuration cannot be modified after addon creation" )))
829- Expect (err ).To (MatchError (ContainSubstring ("existing: \" existing-namespace\" , requested: <none>" )))
830- })
831- })
832-
833- When ("namespace config is unchanged" , func () {
834- It ("succeeds when namespace config is identical" , func () {
835- // Mock DescribeAddon to return an addon with existing namespace config
836- mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
837- Expect (args ).To (HaveLen (2 ))
838- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonInput {}))
839- }).Return (& awseks.DescribeAddonOutput {
739+ mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Return (& awseks.DescribeAddonOutput {
840740 Addon : & ekstypes.Addon {
841741 AddonName : aws .String ("my-addon" ),
842742 AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
843743 ServiceAccountRoleArn : aws .String ("original-arn" ),
844744 Status : "created" ,
845745 NamespaceConfig : & ekstypes.AddonNamespaceConfigResponse {
846- Namespace : aws .String ("same-namespace" ),
847- },
848- },
849- }, nil ).Once ()
850-
851- mockProvider .MockEKS ().On ("UpdateAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
852- Expect (args ).To (HaveLen (2 ))
853- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.UpdateAddonInput {}))
854- updateAddonInput = args [1 ].(* awseks.UpdateAddonInput )
855- }).Return (& awseks.UpdateAddonOutput {}, nil ).Once ()
856-
857- err := addonManager .Update (context .Background (), & api.Addon {
858- Name : "my-addon" ,
859- Version : "v1.0.0-eksbuild.2" ,
860- NamespaceConfig : & api.AddonNamespaceConfig {
861- Namespace : "same-namespace" ,
862- },
863- }, & podIdentityIAMUpdater , 0 )
864-
865- Expect (err ).NotTo (HaveOccurred ())
866- Expect (* updateAddonInput .ClusterName ).To (Equal ("my-cluster" ))
867- Expect (* updateAddonInput .AddonName ).To (Equal ("my-addon" ))
868- Expect (* updateAddonInput .AddonVersion ).To (Equal ("v1.0.0-eksbuild.2" ))
869- })
870-
871- It ("succeeds when both namespace configs are nil" , func () {
872- // Mock DescribeAddon to return an addon without namespace config
873- mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
874- Expect (args ).To (HaveLen (2 ))
875- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonInput {}))
876- }).Return (& awseks.DescribeAddonOutput {
877- Addon : & ekstypes.Addon {
878- AddonName : aws .String ("my-addon" ),
879- AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
880- ServiceAccountRoleArn : aws .String ("original-arn" ),
881- Status : "created" ,
882- NamespaceConfig : nil , // No existing namespace config
883- },
884- }, nil ).Once ()
885-
886- mockProvider .MockEKS ().On ("UpdateAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
887- Expect (args ).To (HaveLen (2 ))
888- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.UpdateAddonInput {}))
889- updateAddonInput = args [1 ].(* awseks.UpdateAddonInput )
890- }).Return (& awseks.UpdateAddonOutput {}, nil ).Once ()
891-
892- err := addonManager .Update (context .Background (), & api.Addon {
893- Name : "my-addon" ,
894- Version : "v1.0.0-eksbuild.2" ,
895- NamespaceConfig : nil , // No new namespace config either
896- }, & podIdentityIAMUpdater , 0 )
897-
898- Expect (err ).NotTo (HaveOccurred ())
899- Expect (* updateAddonInput .ClusterName ).To (Equal ("my-cluster" ))
900- Expect (* updateAddonInput .AddonName ).To (Equal ("my-addon" ))
901- Expect (* updateAddonInput .AddonVersion ).To (Equal ("v1.0.0-eksbuild.2" ))
902- })
903-
904- It ("succeeds when both namespace configs have empty namespace" , func () {
905- // Mock DescribeAddon to return an addon with empty namespace config
906- mockProvider .MockEKS ().On ("DescribeAddon" , mock .Anything , mock .Anything ).Run (func (args mock.Arguments ) {
907- Expect (args ).To (HaveLen (2 ))
908- Expect (args [1 ]).To (BeAssignableToTypeOf (& awseks.DescribeAddonInput {}))
909- }).Return (& awseks.DescribeAddonOutput {
910- Addon : & ekstypes.Addon {
911- AddonName : aws .String ("my-addon" ),
912- AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
913- ServiceAccountRoleArn : aws .String ("original-arn" ),
914- Status : "created" ,
915- NamespaceConfig : & ekstypes.AddonNamespaceConfigResponse {
916- Namespace : aws .String ("" ), // Empty namespace
746+ Namespace : aws .String ("existing-namespace" ),
917747 },
918748 },
919749 }, nil ).Once ()
@@ -928,10 +758,11 @@ var _ = Describe("Update - Namespace Config Immutability", func() {
928758 Name : "my-addon" ,
929759 Version : "v1.0.0-eksbuild.2" ,
930760 NamespaceConfig : & api.AddonNamespaceConfig {
931- Namespace : "" , // Empty namespace
761+ Namespace : "new-namespace" ,
932762 },
933763 }, & podIdentityIAMUpdater , 0 )
934764
765+ // Should succeed without namespace config immutability error
935766 Expect (err ).NotTo (HaveOccurred ())
936767 Expect (* updateAddonInput .ClusterName ).To (Equal ("my-cluster" ))
937768 Expect (* updateAddonInput .AddonName ).To (Equal ("my-addon" ))
0 commit comments