Skip to content

Commit 48c16aa

Browse files
authored
Update compatbility matrix for 4.20 (#3299)
* Update compatbility matrix for 4.20 * Update RHELVersionsAccepted
1 parent 35d2f89 commit 48c16aa

File tree

2 files changed

+99
-57
lines changed

2 files changed

+99
-57
lines changed

pkg/compatibility/compatibility.go

Lines changed: 65 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,14 @@ import (
2626
)
2727

2828
/* Notes for this package
29-
* Refer to this document for more information about OCP compatibility: https://access.redhat.com/support/policy/updates/openshift
30-
29+
* Refer to these documents for more information about OCP compatibility:
30+
* - OCP Lifecycle Policy: https://access.redhat.com/support/policy/updates/openshift
31+
* - RHEL Versions in RHCOS/OCP: https://access.redhat.com/articles/6907891
32+
*
33+
* IMPORTANT: The RHELVersionsAccepted field refers to RHEL versions supported for WORKER NODES,
34+
* not the RHEL version used internally by RHCOS. Worker nodes can run standard RHEL while
35+
* control plane nodes must run RHCOS. See release notes comments below for worker node compatibility.
36+
*
3137
* This module will help compare the running OCP version against a matrix of end of life dates.
3238
*/
3339

@@ -56,136 +62,147 @@ var (
5662
// update documentation.
5763

5864
// Full Support
65+
"4.20": {
66+
GADate: time.Date(2025, 10, 21, 0, 0, 0, 0, time.UTC), // October 21, 2025 (estimated)
67+
FSEDate: time.Date(2026, 1, 21, 0, 0, 0, 0, time.UTC), // January 21, 2026 (90 days after next release, estimated)
68+
MSEDate: time.Date(2027, 4, 21, 0, 0, 0, 0, time.UTC), // April 21, 2027 (18 months from GA)
69+
// Note: Dates are estimated based on typical 4-month release cadence. Update when official dates available.
70+
71+
// OS Compatibility (for worker nodes)
72+
MinRHCOSVersion: "4.20",
73+
RHELVersionsAccepted: []string{"8.10", "9.4"}, // TBD - estimated based on typical support
74+
},
5975
"4.19": {
6076
GADate: time.Date(2025, 6, 17, 0, 0, 0, 0, time.UTC), // June 17, 2025
6177
FSEDate: time.Date(2025, 9, 17, 0, 0, 0, 0, time.UTC), // September 17, 2025
6278
MSEDate: time.Date(2026, 12, 17, 0, 0, 0, 0, time.UTC), // December 17, 2026
63-
// Note: FSEDate (Release of 4.20 + 3 months) is currently a "guess". Update when available.
6479

65-
// OS Compatibility
80+
// OS Compatibility (for worker nodes)
6681
MinRHCOSVersion: "4.19",
67-
RHELVersionsAccepted: []string{"8.4", "8.5"},
82+
RHELVersionsAccepted: []string{"8.10", "9.4"}, // TBD - estimated based on typical support
6883
},
84+
85+
// Maintenance Support
6986
"4.18": {
7087
GADate: time.Date(2025, 2, 25, 0, 0, 0, 0, time.UTC), // February 25, 2025
7188
FSEDate: time.Date(2025, 9, 17, 0, 0, 0, 0, time.UTC), // September 17, 2025
7289
MSEDate: time.Date(2028, 2, 25, 0, 0, 0, 0, time.UTC), // February 25, 2028 // This is the end of "Term 2" extended update support.
7390

74-
// OS Compatibility
91+
// OS Compatibility (for worker nodes)
7592
MinRHCOSVersion: "4.18",
76-
RHELVersionsAccepted: []string{"8.4", "8.5"},
93+
RHELVersionsAccepted: []string{"8.10", "9.4"}, // TBD - estimated based on typical support
7794
},
78-
79-
// Maintenance Support
8095
"4.17": {
8196
GADate: time.Date(2024, 10, 1, 0, 0, 0, 0, time.UTC), // October 1, 2024
8297
FSEDate: time.Date(2025, 4, 27, 0, 0, 0, 0, time.UTC), // April 27, 2025
8398
MSEDate: time.Date(2026, 4, 1, 0, 0, 0, 0, time.UTC), // April 1, 2026 - This is the end of "Term 2" extended update support.
8499

85-
// OS Compatibility
100+
// OS Compatibility (for worker nodes)
86101
MinRHCOSVersion: "4.17",
87-
RHELVersionsAccepted: []string{"8.4", "8.5"},
102+
RHELVersionsAccepted: []string{"8.10", "9.2"}, // TBD - estimated based on typical support
88103
},
89104
"4.16": {
90105
GADate: time.Date(2024, 6, 27, 0, 0, 0, 0, time.UTC), // June 27, 2024
91106
FSEDate: time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC), // January 1, 2025
92107
MSEDate: time.Date(2027, 6, 27, 0, 0, 0, 0, time.UTC), // June 27, 2027 - This is the end of "Term 2" extended update support.
93108

94-
// OS Compatibility
109+
// OS Compatibility (for worker nodes)
95110
MinRHCOSVersion: "4.16",
96-
RHELVersionsAccepted: []string{"8.4", "8.5"},
111+
RHELVersionsAccepted: []string{"8.8", "9.2"}, // TBD - estimated based on typical support
97112
},
98-
"4.15": {
99-
GADate: time.Date(2024, 2, 27, 0, 0, 0, 0, time.UTC), // February 27, 2024
100-
FSEDate: time.Date(2025, 9, 27, 0, 0, 0, 0, time.UTC), // September 27, 2025
101-
MSEDate: time.Date(2025, 8, 27, 0, 0, 0, 0, time.UTC), // August 27, 2025
102113

103-
// OS Compatibility
104-
MinRHCOSVersion: "4.15",
105-
RHELVersionsAccepted: []string{"8.4", "8.5"},
106-
},
107-
// End of life
114+
// Extended Update Support (EUS) - EUS releases receive additional 6-18 months beyond standard maintenance
108115
"4.14": {
109116
GADate: time.Date(2023, 10, 31, 0, 0, 0, 0, time.UTC), // October 31, 2023
110117
FSEDate: time.Date(2024, 5, 27, 0, 0, 0, 0, time.UTC), // May 27, 2024
111118
MSEDate: time.Date(2026, 10, 31, 0, 0, 0, 0, time.UTC), // October 31, 2026 - This is the end of "Term 2" extended update support.
112119

113-
// OS Compatibility
120+
// OS Compatibility (for worker nodes)
114121
MinRHCOSVersion: "4.14",
115-
RHELVersionsAccepted: []string{"8.4", "8.5"},
116-
},
117-
"4.13": {
118-
GADate: time.Date(2023, 5, 17, 0, 0, 0, 0, time.UTC), // May 17, 2023
119-
FSEDate: time.Date(2024, 1, 31, 0, 0, 0, 0, time.UTC), // January 31, 2024
120-
MSEDate: time.Date(2024, 11, 17, 0, 0, 0, 0, time.UTC), // November 17, 2024
121-
122-
// OS Compatibility
123-
MinRHCOSVersion: "4.13",
124-
RHELVersionsAccepted: []string{"8.4", "8.5"},
122+
RHELVersionsAccepted: []string{"8.6", "9.0"}, // TBD - estimated based on typical support
125123
},
126124
"4.12": {
127125
GADate: time.Date(2023, 1, 17, 0, 0, 0, 0, time.UTC), // January 17, 2023
128126
FSEDate: time.Date(2023, 8, 17, 0, 0, 0, 0, time.UTC), // August 17, 2023
129-
MSEDate: time.Date(2024, 7, 17, 0, 0, 0, 0, time.UTC), // July 17, 2024
127+
MSEDate: time.Date(2026, 1, 17, 0, 0, 0, 0, time.UTC), // January 17, 2026 - This is the end of "Term 2" extended update support.
130128

131-
// OS Compatibility
129+
// OS Compatibility (for worker nodes)
132130
MinRHCOSVersion: "4.12",
133-
RHELVersionsAccepted: []string{"8.4", "8.5"},
131+
RHELVersionsAccepted: []string{"8.4", "8.5"}, // TBD - needs verification from release notes
132+
},
133+
134+
// End of life
135+
"4.15": {
136+
GADate: time.Date(2024, 2, 27, 0, 0, 0, 0, time.UTC), // February 27, 2024
137+
FSEDate: time.Date(2025, 9, 27, 0, 0, 0, 0, time.UTC), // September 27, 2025
138+
MSEDate: time.Date(2025, 8, 27, 0, 0, 0, 0, time.UTC), // August 27, 2025
139+
140+
// OS Compatibility (for worker nodes)
141+
MinRHCOSVersion: "4.15",
142+
RHELVersionsAccepted: []string{"8.6", "9.0"}, // TBD - estimated based on typical support
134143
},
144+
"4.13": {
145+
GADate: time.Date(2023, 5, 17, 0, 0, 0, 0, time.UTC), // May 17, 2023
146+
FSEDate: time.Date(2024, 1, 31, 0, 0, 0, 0, time.UTC), // January 31, 2024
147+
MSEDate: time.Date(2024, 11, 17, 0, 0, 0, 0, time.UTC), // November 17, 2024
135148

149+
// OS Compatibility (for worker nodes)
150+
MinRHCOSVersion: "4.13",
151+
RHELVersionsAccepted: []string{"8.6", "9.0"}, // TBD - estimated based on typical support
152+
},
136153
"4.11": {
137154
GADate: time.Date(2022, 8, 10, 0, 0, 0, 0, time.UTC), // August 10, 2022
138155
FSEDate: time.Date(2023, 4, 17, 0, 0, 0, 0, time.UTC), // April 17, 2023
139156
MSEDate: time.Date(2024, 2, 10, 0, 0, 0, 0, time.UTC), // February 10, 2024
140157

141-
// OS Compatibility
158+
// OS Compatibility (for worker nodes)
142159
MinRHCOSVersion: "4.11",
143-
RHELVersionsAccepted: []string{"8.4", "8.5"},
160+
RHELVersionsAccepted: []string{"8.4", "8.5"}, // See release notes at line 382
144161
},
145162
"4.10": {
146163
GADate: time.Date(2022, 3, 10, 0, 0, 0, 0, time.UTC), // March 10, 2022
147164
FSEDate: time.Date(2022, 11, 10, 0, 0, 0, 0, time.UTC), // November 10, 2022
148165
MSEDate: time.Date(2023, 9, 10, 0, 0, 0, 0, time.UTC), // September 10, 2023
149166

150-
// OS Compatibility
167+
// OS Compatibility (for worker nodes)
151168
MinRHCOSVersion: "4.10",
152-
RHELVersionsAccepted: []string{"8.4", "8.5"},
169+
RHELVersionsAccepted: []string{"8.4", "8.5"}, // See release notes at line 386
153170
},
154171
"4.9": {
155172
GADate: time.Date(2021, 10, 18, 0, 0, 0, 0, time.UTC), // October 18, 2021
156173
FSEDate: time.Date(2022, 6, 10, 0, 0, 0, 0, time.UTC), // June 10, 2022
157174
MSEDate: time.Date(2023, 4, 18, 0, 0, 0, 0, time.UTC), // April 18, 2023
158175

159-
// OS Compatibility
176+
// OS Compatibility (for worker nodes)
160177
MinRHCOSVersion: "4.9",
161-
RHELVersionsAccepted: []string{"7.9", "8.4"},
178+
RHELVersionsAccepted: []string{"7.9", "8.4"}, // See release notes at line 390
162179
},
163180
"4.8": {
164181
GADate: time.Date(2021, 7, 27, 0, 0, 0, 0, time.UTC), // July 27, 2021
165182
FSEDate: time.Date(2022, 1, 27, 0, 0, 0, 0, time.UTC), // January 27, 2022
166183
MSEDate: time.Date(2023, 1, 27, 0, 0, 0, 0, time.UTC), // January 27, 2023
167184

168-
// OS Compatibility
185+
// OS Compatibility (for worker nodes)
169186
MinRHCOSVersion: "4.8",
170-
RHELVersionsAccepted: []string{"7.9"},
187+
RHELVersionsAccepted: []string{"7.9"}, // RHEL 7.9 or later - See release notes at line 394
171188
},
172189
"4.7": {
173190
GADate: time.Date(2021, 2, 24, 0, 0, 0, 0, time.UTC), // February 24, 2021
174191
FSEDate: time.Date(2021, 10, 27, 0, 0, 0, 0, time.UTC), // October 27, 2021
175192
MSEDate: time.Date(2022, 8, 24, 0, 0, 0, 0, time.UTC), // August 24, 2022
176193

177-
// OS Compatibility
194+
// OS Compatibility (for worker nodes)
178195
MinRHCOSVersion: "4.7",
179-
RHELVersionsAccepted: []string{"7.9"},
196+
RHELVersionsAccepted: []string{"7.9"}, // RHEL 7.9 or later - See release notes at line 398
180197
},
181198
"4.6": {
182199
GADate: time.Date(2020, 10, 27, 0, 0, 0, 0, time.UTC), // October 27, 2020
183200
FSEDate: time.Date(2021, 3, 24, 0, 0, 0, 0, time.UTC), // March 24, 2021
184201
MSEDate: time.Date(2021, 10, 18, 0, 0, 0, 0, time.UTC), // October 18, 2022
185202

186-
// OS Compatibility
203+
// OS Compatibility (for worker nodes)
187204
MinRHCOSVersion: "4.6",
188-
RHELVersionsAccepted: []string{"7.9"},
205+
RHELVersionsAccepted: []string{"7.9"}, // RHEL 7.9 or later - See release notes at line 402
189206
},
190207
"4.5": {
191208
GADate: time.Date(2020, 7, 13, 0, 0, 0, 0, time.UTC), // July 13, 2020

pkg/compatibility/compatibility_test.go

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -96,40 +96,40 @@ func TestIsRHELCompatible(t *testing.T) {
9696
testOCPVersion string
9797
expectedOutput bool
9898
}{
99-
{ // Test Case #1 - OCP 4.10 only accepts RHEL Versions 8.4 and 8.5, fail
99+
{ // Test Case #1 - OCP 4.10 only accepts RHEL 8.4, fail
100100
testOCPVersion: "4.10",
101101
testMachineVersion: "7.9",
102102
expectedOutput: false,
103103
},
104-
{ // Test Case #2 - OCP 4.10 only accepts RHEL Versions 8.4 and 8.5, pass
104+
{ // Test Case #2 - OCP 4.10 only accepts RHEL 8.4, pass
105105
testOCPVersion: "4.10",
106106
testMachineVersion: "8.4",
107107
expectedOutput: true,
108108
},
109-
{ // Test Case #3 - OCP 4.10 only accepts RHEL Versions 8.4 and 8.5, pass
109+
{ // Test Case #3 - OCP 4.10 accepts RHEL 8.4 and 8.5, pass
110110
testOCPVersion: "4.10",
111111
testMachineVersion: "8.5",
112112
expectedOutput: true,
113113
},
114-
{ // Test Case #4 - OCP 4.8 accepts RHEL versions >= 7.9, pass
114+
{ // Test Case #4 - OCP 4.8 accepts RHEL >= 7.9, pass
115115
testOCPVersion: "4.8",
116116
testMachineVersion: "8.5",
117117
expectedOutput: true,
118118
},
119-
{ // Test Case #5 - OCP 4.8 accepts RHEL versions >= 7.9, pass
119+
{ // Test Case #5 - OCP 4.8 accepts RHEL >= 7.9, pass
120120
testOCPVersion: "4.8",
121121
testMachineVersion: "7.9",
122122
expectedOutput: true,
123123
},
124-
{ // Test Case #6 - OCP 4.8 accepts RHEL versions >= 7.9, fail
124+
{ // Test Case #6 - OCP 4.8 accepts RHEL >= 7.9, fail
125125
testOCPVersion: "4.8",
126126
testMachineVersion: "7.8",
127127
expectedOutput: false,
128128
},
129-
{ // Test Case #7 - OCP 4.1 accepts RHEL versions >= 7.6, fail
129+
{ // Test Case #7 - OCP 4.8 accepts RHEL >= 7.9, pass
130130
testOCPVersion: "4.8",
131-
testMachineVersion: "7.8",
132-
expectedOutput: false,
131+
testMachineVersion: "8.4",
132+
expectedOutput: true,
133133
},
134134
{ // Test Case #8 - OCP version empty, fail
135135
testOCPVersion: "",
@@ -141,6 +141,31 @@ func TestIsRHELCompatible(t *testing.T) {
141141
testMachineVersion: "",
142142
expectedOutput: false,
143143
},
144+
{ // Test Case #10 - OCP 4.9 accepts RHEL 7.9, pass
145+
testOCPVersion: "4.9",
146+
testMachineVersion: "7.9",
147+
expectedOutput: true,
148+
},
149+
{ // Test Case #11 - OCP 4.9 accepts RHEL 8.4, pass
150+
testOCPVersion: "4.9",
151+
testMachineVersion: "8.4",
152+
expectedOutput: true,
153+
},
154+
{ // Test Case #12 - OCP 4.16 accepts RHEL 8.8 and 9.2, fail with 9.4
155+
testOCPVersion: "4.16",
156+
testMachineVersion: "9.4",
157+
expectedOutput: false,
158+
},
159+
{ // Test Case #13 - OCP 4.16 accepts RHEL 8.8 and 9.2, pass with 9.2
160+
testOCPVersion: "4.16",
161+
testMachineVersion: "9.2",
162+
expectedOutput: true,
163+
},
164+
{ // Test Case #14 - OCP 4.16 does not accept RHEL 8.4, fail
165+
testOCPVersion: "4.16",
166+
testMachineVersion: "8.4",
167+
expectedOutput: false,
168+
},
144169
}
145170

146171
for _, tc := range testCases {

0 commit comments

Comments
 (0)