@@ -1034,6 +1034,117 @@ func Test_providerUpgrader_ApplyCustomPlan(t *testing.T) {
1034
1034
errorMsg : "detected multiple instances of the same provider" ,
1035
1035
opts : UpgradeOptions {},
1036
1036
},
1037
+ {
1038
+ name : "fails to upgrade to current contract when violating core provider skip version rules" ,
1039
+ fields : fields {
1040
+ reader : test .NewFakeReader ().
1041
+ WithProvider ("cluster-api" , clusterctlv1 .CoreProviderType , "https://somewhere.com" ),
1042
+ repository : map [string ]repository.Repository {
1043
+ "cluster-api" : repository .NewMemoryRepository ().
1044
+ WithVersions ("v1.10.0" , "v1.11.0" , "v1.12.0" , "v1.13.0" , "v1.14.0" ).
1045
+ WithMetadata ("v1.14.0" , & clusterctlv1.Metadata {
1046
+ ReleaseSeries : []clusterctlv1.ReleaseSeries {
1047
+ {Major : 1 , Minor : 10 , Contract : test .PreviousCAPIContractNotSupported },
1048
+ {Major : 1 , Minor : 11 , Contract : test .CurrentCAPIContract },
1049
+ {Major : 1 , Minor : 12 , Contract : test .CurrentCAPIContract },
1050
+ {Major : 1 , Minor : 13 , Contract : test .CurrentCAPIContract },
1051
+ {Major : 1 , Minor : 14 , Contract : test .CurrentCAPIContract },
1052
+ },
1053
+ }),
1054
+ },
1055
+ proxy : test .NewFakeProxy ().
1056
+ WithProviderInventory ("cluster-api" , clusterctlv1 .CoreProviderType , "v1.10.0" , "cluster-api-system" ),
1057
+ },
1058
+ providersToUpgrade : []UpgradeItem {
1059
+ {
1060
+ Provider : fakeProvider ("cluster-api" , clusterctlv1 .CoreProviderType , "v1.10.0" , "cluster-api-system" ),
1061
+ NextVersion : "v1.14.0" ,
1062
+ },
1063
+ },
1064
+ wantErr : true ,
1065
+ errorMsg : "upgrade for cluster-api-system/cluster-api provider can't skip more than 3 versions" ,
1066
+ opts : UpgradeOptions {},
1067
+ },
1068
+ {
1069
+ name : "fails to upgrade to current contract when violating kubeadm bootstrap provider skip version rules" ,
1070
+ fields : fields {
1071
+ reader : test .NewFakeReader ().
1072
+ WithProvider ("cluster-api" , clusterctlv1 .CoreProviderType , "https://somewhere.com" ).
1073
+ WithProvider (config .KubeadmBootstrapProviderName , clusterctlv1 .BootstrapProviderType , "https://somewhere.com" ),
1074
+ repository : map [string ]repository.Repository {
1075
+ "cluster-api" : repository .NewMemoryRepository ().
1076
+ WithVersions ("v1.0.0" ).
1077
+ WithMetadata ("v1.0.0" , & clusterctlv1.Metadata {
1078
+ ReleaseSeries : []clusterctlv1.ReleaseSeries {
1079
+ {Major : 1 , Minor : 0 , Contract : test .CurrentCAPIContract },
1080
+ },
1081
+ }),
1082
+ "bootstrap-kubeadm" : repository .NewMemoryRepository ().
1083
+ WithVersions ("v1.10.0" , "v1.11.0" , "v1.12.0" , "v1.13.0" , "v1.14.0" ).
1084
+ WithMetadata ("v1.14.0" , & clusterctlv1.Metadata {
1085
+ ReleaseSeries : []clusterctlv1.ReleaseSeries {
1086
+ {Major : 1 , Minor : 10 , Contract : test .PreviousCAPIContractNotSupported },
1087
+ {Major : 1 , Minor : 11 , Contract : test .CurrentCAPIContract },
1088
+ {Major : 1 , Minor : 12 , Contract : test .CurrentCAPIContract },
1089
+ {Major : 1 , Minor : 13 , Contract : test .CurrentCAPIContract },
1090
+ {Major : 1 , Minor : 14 , Contract : test .CurrentCAPIContract },
1091
+ },
1092
+ }),
1093
+ },
1094
+ proxy : test .NewFakeProxy ().
1095
+ WithProviderInventory ("cluster-api" , clusterctlv1 .CoreProviderType , "v1.0.0" , "cluster-api-system" ).
1096
+ WithProviderInventory (config .KubeadmBootstrapProviderName , clusterctlv1 .BootstrapProviderType , "v1.10.0" , "cluster-api-system" ),
1097
+ },
1098
+ providersToUpgrade : []UpgradeItem {
1099
+ {
1100
+ Provider : fakeProvider (config .KubeadmBootstrapProviderName , clusterctlv1 .BootstrapProviderType , "v1.10.0" , "cluster-api-system" ),
1101
+ NextVersion : "v1.14.0" ,
1102
+ },
1103
+ },
1104
+ wantErr : true ,
1105
+ errorMsg : "upgrade for cluster-api-system/bootstrap-kubeadm provider can't skip more than 3 versions" ,
1106
+ opts : UpgradeOptions {},
1107
+ },
1108
+ {
1109
+ name : "fails to upgrade to current contract when violating kubeadm control plane provider skip version rules" ,
1110
+ fields : fields {
1111
+ reader : test .NewFakeReader ().
1112
+ WithProvider ("cluster-api" , clusterctlv1 .CoreProviderType , "https://somewhere.com" ).
1113
+ WithProvider (config .KubeadmControlPlaneProviderName , clusterctlv1 .ControlPlaneProviderType , "https://somewhere.com" ),
1114
+ repository : map [string ]repository.Repository {
1115
+ "cluster-api" : repository .NewMemoryRepository ().
1116
+ WithVersions ("v1.0.0" ).
1117
+ WithMetadata ("v1.0.0" , & clusterctlv1.Metadata {
1118
+ ReleaseSeries : []clusterctlv1.ReleaseSeries {
1119
+ {Major : 1 , Minor : 0 , Contract : test .CurrentCAPIContract },
1120
+ },
1121
+ }),
1122
+ "control-plane-kubeadm" : repository .NewMemoryRepository ().
1123
+ WithVersions ("v1.10.0" , "v1.11.0" , "v1.12.0" , "v1.13.0" , "v1.14.0" ).
1124
+ WithMetadata ("v1.14.0" , & clusterctlv1.Metadata {
1125
+ ReleaseSeries : []clusterctlv1.ReleaseSeries {
1126
+ {Major : 1 , Minor : 10 , Contract : test .PreviousCAPIContractNotSupported },
1127
+ {Major : 1 , Minor : 11 , Contract : test .CurrentCAPIContract },
1128
+ {Major : 1 , Minor : 12 , Contract : test .CurrentCAPIContract },
1129
+ {Major : 1 , Minor : 13 , Contract : test .CurrentCAPIContract },
1130
+ {Major : 1 , Minor : 14 , Contract : test .CurrentCAPIContract },
1131
+ },
1132
+ }),
1133
+ },
1134
+ proxy : test .NewFakeProxy ().
1135
+ WithProviderInventory ("cluster-api" , clusterctlv1 .CoreProviderType , "v1.0.0" , "cluster-api-system" ).
1136
+ WithProviderInventory (config .KubeadmControlPlaneProviderName , clusterctlv1 .ControlPlaneProviderType , "v1.10.0" , "cluster-api-system" ),
1137
+ },
1138
+ providersToUpgrade : []UpgradeItem {
1139
+ {
1140
+ Provider : fakeProvider (config .KubeadmControlPlaneProviderName , clusterctlv1 .ControlPlaneProviderType , "v1.10.0" , "cluster-api-system" ),
1141
+ NextVersion : "v1.14.0" ,
1142
+ },
1143
+ },
1144
+ wantErr : true ,
1145
+ errorMsg : "upgrade for cluster-api-system/control-plane-kubeadm provider can't skip more than 3 versions" ,
1146
+ opts : UpgradeOptions {},
1147
+ },
1037
1148
}
1038
1149
1039
1150
for _ , tt := range tests {
0 commit comments