@@ -687,7 +687,7 @@ var _ = Describe("Update", func() {
687
687
688
688
})
689
689
690
- var _ = Describe ("Update - Namespace Config Immutability " , func () {
690
+ var _ = Describe ("Update - Namespace Config Updates " , func () {
691
691
var (
692
692
addonManager * addon.Manager
693
693
mockProvider * mockprovider.MockProvider
@@ -707,21 +707,9 @@ var _ = Describe("Update - Namespace Config Immutability", func() {
707
707
mockProvider = mockprovider .NewMockProvider ()
708
708
fakeStackManager = new (fakes.FakeStackManager )
709
709
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
-
719
710
oidc := makeOIDCManager ()
720
711
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 {
725
713
Addons : []ekstypes.AddonInfo {
726
714
{
727
715
AddonName : aws .String ("my-addon" ),
@@ -742,178 +730,20 @@ var _ = Describe("Update - Namespace Config Immutability", func() {
742
730
Expect (err ).NotTo (HaveOccurred ())
743
731
})
744
732
745
- Context ("namespace config immutability " , func () {
733
+ Context ("namespace config updates " , func () {
746
734
var podIdentityIAMUpdater mocks.PodIdentityIAMUpdater
747
735
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 () {
806
738
// 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 {
840
740
Addon : & ekstypes.Addon {
841
741
AddonName : aws .String ("my-addon" ),
842
742
AddonVersion : aws .String ("v1.0.0-eksbuild.2" ),
843
743
ServiceAccountRoleArn : aws .String ("original-arn" ),
844
744
Status : "created" ,
845
745
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" ),
917
747
},
918
748
},
919
749
}, nil ).Once ()
@@ -928,10 +758,11 @@ var _ = Describe("Update - Namespace Config Immutability", func() {
928
758
Name : "my-addon" ,
929
759
Version : "v1.0.0-eksbuild.2" ,
930
760
NamespaceConfig : & api.AddonNamespaceConfig {
931
- Namespace : "" , // Empty namespace
761
+ Namespace : "new-namespace" ,
932
762
},
933
763
}, & podIdentityIAMUpdater , 0 )
934
764
765
+ // Should succeed without namespace config immutability error
935
766
Expect (err ).NotTo (HaveOccurred ())
936
767
Expect (* updateAddonInput .ClusterName ).To (Equal ("my-cluster" ))
937
768
Expect (* updateAddonInput .AddonName ).To (Equal ("my-addon" ))
0 commit comments