Skip to content

Commit 3b28324

Browse files
authored
Merge pull request #2357 from k8s-infra-cherrypick-robot/cherry-pick-2302-to-release-1.3
[release-1.3] Use new naming scheme for SKUs and versions
2 parents 39440d6 + be787b5 commit 3b28324

File tree

14 files changed

+1113
-376
lines changed

14 files changed

+1113
-376
lines changed

azure/defaults.go

Lines changed: 0 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ import (
2222

2323
"github.com/Azure/go-autorest/autorest"
2424
"github.com/Azure/go-autorest/autorest/azure"
25-
"github.com/blang/semver"
26-
"github.com/pkg/errors"
27-
infrav1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1"
2825
"sigs.k8s.io/cluster-api-provider-azure/util/tele"
2926
"sigs.k8s.io/cluster-api-provider-azure/version"
3027
)
@@ -282,88 +279,6 @@ func AvailabilitySetID(subscriptionID, resourceGroup, availabilitySetName string
282279
return fmt.Sprintf("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Compute/availabilitySets/%s", subscriptionID, resourceGroup, availabilitySetName)
283280
}
284281

285-
// GetDefaultImageSKUID gets the SKU ID of the image to use for the provided version of Kubernetes.
286-
// note: osAndVersion is expected to be in the format of {os}-{version} (ex: unbuntu-2004 or windows-2022)
287-
func getDefaultImageSKUID(k8sVersion, osAndVersion string) (string, error) {
288-
version, err := semver.ParseTolerant(k8sVersion)
289-
if err != nil {
290-
return "", errors.Wrapf(err, "unable to parse Kubernetes version \"%s\" in spec, expected valid SemVer string", k8sVersion)
291-
}
292-
return fmt.Sprintf("k8s-%ddot%ddot%d-%s", version.Major, version.Minor, version.Patch, osAndVersion), nil
293-
}
294-
295-
// GetDefaultUbuntuImage returns the default image spec for Ubuntu.
296-
func GetDefaultUbuntuImage(k8sVersion string) (*infrav1.Image, error) {
297-
v, err := semver.ParseTolerant(k8sVersion)
298-
if err != nil {
299-
return nil, errors.Wrapf(err, "unable to parse Kubernetes version \"%s\"", k8sVersion)
300-
}
301-
// Default to Ubuntu 20.04 LTS, except for k8s versions which have only 18.04 reference images.
302-
osVersion := "2004"
303-
if (v.Major == 1 && v.Minor == 21 && v.Patch < 2) ||
304-
(v.Major == 1 && v.Minor == 20 && v.Patch < 8) ||
305-
(v.Major == 1 && v.Minor == 19 && v.Patch < 12) ||
306-
(v.Major == 1 && v.Minor == 18 && v.Patch < 20) ||
307-
(v.Major == 1 && v.Minor < 18) {
308-
osVersion = "1804"
309-
}
310-
311-
skuID, err := getDefaultImageSKUID(k8sVersion, fmt.Sprintf("ubuntu-%s", osVersion))
312-
if err != nil {
313-
return nil, errors.Wrap(err, "failed to get default image")
314-
}
315-
316-
defaultImage := &infrav1.Image{
317-
Marketplace: &infrav1.AzureMarketplaceImage{
318-
Publisher: DefaultImagePublisherID,
319-
Offer: DefaultImageOfferID,
320-
SKU: skuID,
321-
Version: LatestVersion,
322-
},
323-
}
324-
325-
return defaultImage, nil
326-
}
327-
328-
// GetDefaultWindowsImage returns the default image spec for Windows.
329-
func GetDefaultWindowsImage(k8sVersion, runtime, osAndVersion string) (*infrav1.Image, error) {
330-
v122 := semver.MustParse("1.22.0")
331-
v, err := semver.ParseTolerant(k8sVersion)
332-
if err != nil {
333-
return nil, errors.Wrapf(err, "unable to parse Kubernetes version \"%s\"", k8sVersion)
334-
}
335-
336-
// If containerd is specified we don't currently support less than 1.22
337-
if v.LE(v122) && runtime == "containerd" {
338-
return nil, errors.New("containerd image only supported in 1.22+")
339-
}
340-
341-
if osAndVersion == "" {
342-
osAndVersion = DefaultWindowsOsAndVersion
343-
}
344-
345-
skuID, err := getDefaultImageSKUID(k8sVersion, osAndVersion)
346-
if err != nil {
347-
return nil, errors.Wrap(err, "failed to get default image")
348-
}
349-
350-
// Starting with 1.22 we default to containerd for Windows unless the runtime flag is set.
351-
if v.GTE(v122) && runtime != "dockershim" {
352-
skuID += "-containerd"
353-
}
354-
355-
defaultImage := &infrav1.Image{
356-
Marketplace: &infrav1.AzureMarketplaceImage{
357-
Publisher: DefaultImagePublisherID,
358-
Offer: DefaultWindowsImageOfferID,
359-
SKU: skuID,
360-
Version: LatestVersion,
361-
},
362-
}
363-
364-
return defaultImage, nil
365-
}
366-
367282
// GetBootstrappingVMExtension returns the CAPZ Bootstrapping VM extension.
368283
// The CAPZ Bootstrapping extension is a simple clone of https://github.com/Azure/custom-script-extension-linux for Linux or
369284
// https://docs.microsoft.com/en-us/azure/virtual-machines/extensions/custom-script-windows for Windows.

azure/defaults_test.go

Lines changed: 0 additions & 251 deletions
Original file line numberDiff line numberDiff line change
@@ -29,108 +29,6 @@ import (
2929
"sigs.k8s.io/cluster-api-provider-azure/util/tele"
3030
)
3131

32-
func TestGetDefaultImageSKUID(t *testing.T) {
33-
g := NewWithT(t)
34-
35-
var tests = []struct {
36-
k8sVersion string
37-
osAndVersion string
38-
expectedResult string
39-
expectedError bool
40-
}{
41-
{
42-
k8sVersion: "v1.14.9",
43-
expectedResult: "k8s-1dot14dot9-ubuntu-1804",
44-
expectedError: false,
45-
osAndVersion: "ubuntu-1804",
46-
},
47-
{
48-
k8sVersion: "v1.14.10",
49-
expectedResult: "k8s-1dot14dot10-ubuntu-1804",
50-
expectedError: false,
51-
osAndVersion: "ubuntu-1804",
52-
},
53-
{
54-
k8sVersion: "v1.15.6",
55-
expectedResult: "k8s-1dot15dot6-ubuntu-1804",
56-
expectedError: false,
57-
osAndVersion: "ubuntu-1804",
58-
},
59-
{
60-
k8sVersion: "v1.15.7",
61-
expectedResult: "k8s-1dot15dot7-ubuntu-1804",
62-
expectedError: false,
63-
osAndVersion: "ubuntu-1804",
64-
},
65-
{
66-
k8sVersion: "v1.16.3",
67-
expectedResult: "k8s-1dot16dot3-ubuntu-1804",
68-
expectedError: false,
69-
osAndVersion: "ubuntu-1804",
70-
},
71-
{
72-
k8sVersion: "v1.16.4",
73-
expectedResult: "k8s-1dot16dot4-ubuntu-1804",
74-
expectedError: false,
75-
osAndVersion: "ubuntu-1804",
76-
},
77-
{
78-
k8sVersion: "1.12.0",
79-
expectedResult: "k8s-1dot12dot0-ubuntu-1804",
80-
expectedError: false,
81-
osAndVersion: "ubuntu-1804",
82-
},
83-
{
84-
k8sVersion: "1.1.notvalid.semver",
85-
expectedResult: "",
86-
expectedError: true,
87-
},
88-
{
89-
k8sVersion: "v1.19.3",
90-
expectedResult: "k8s-1dot19dot3-windows-2019",
91-
expectedError: false,
92-
osAndVersion: "windows-2019",
93-
},
94-
{
95-
k8sVersion: "v1.20.8",
96-
expectedResult: "k8s-1dot20dot8-windows-2019",
97-
expectedError: false,
98-
osAndVersion: "windows-2019",
99-
},
100-
{
101-
k8sVersion: "v1.21.2",
102-
expectedResult: "k8s-1dot21dot2-windows-2019",
103-
expectedError: false,
104-
osAndVersion: "windows-2019",
105-
},
106-
{
107-
k8sVersion: "v1.20.8",
108-
expectedResult: "k8s-1dot20dot8-ubuntu-2004",
109-
expectedError: false,
110-
osAndVersion: "ubuntu-2004",
111-
},
112-
{
113-
k8sVersion: "v1.21.2",
114-
expectedResult: "k8s-1dot21dot2-ubuntu-2004",
115-
expectedError: false,
116-
osAndVersion: "ubuntu-2004",
117-
},
118-
}
119-
120-
for _, test := range tests {
121-
t.Run(test.k8sVersion, func(t *testing.T) {
122-
id, err := getDefaultImageSKUID(test.k8sVersion, test.osAndVersion)
123-
124-
if test.expectedError {
125-
g.Expect(err).To(HaveOccurred())
126-
} else {
127-
g.Expect(err).NotTo(HaveOccurred())
128-
}
129-
g.Expect(id).To(Equal(test.expectedResult))
130-
})
131-
}
132-
}
133-
13432
func TestAutoRestClientAppendUserAgent(t *testing.T) {
13533
g := NewWithT(t)
13634
userAgent := "cluster-api-provider-azure/2.29.2"
@@ -170,64 +68,6 @@ func TestAutoRestClientAppendUserAgent(t *testing.T) {
17068
}
17169
}
17270

173-
func TestGetDefaultUbuntuImage(t *testing.T) {
174-
g := NewWithT(t)
175-
176-
tests := []struct {
177-
k8sVersion string
178-
expectedSKU string
179-
}{
180-
{
181-
k8sVersion: "v1.15.6",
182-
expectedSKU: "k8s-1dot15dot6-ubuntu-1804",
183-
},
184-
{
185-
k8sVersion: "v1.17.11",
186-
expectedSKU: "k8s-1dot17dot11-ubuntu-1804",
187-
},
188-
{
189-
k8sVersion: "v1.18.19",
190-
expectedSKU: "k8s-1dot18dot19-ubuntu-1804",
191-
},
192-
{
193-
k8sVersion: "v1.18.20",
194-
expectedSKU: "k8s-1dot18dot20-ubuntu-2004",
195-
},
196-
{
197-
k8sVersion: "v1.19.11",
198-
expectedSKU: "k8s-1dot19dot11-ubuntu-1804",
199-
},
200-
{
201-
k8sVersion: "v1.19.12",
202-
expectedSKU: "k8s-1dot19dot12-ubuntu-2004",
203-
},
204-
{
205-
k8sVersion: "v1.21.1",
206-
expectedSKU: "k8s-1dot21dot1-ubuntu-1804",
207-
},
208-
{
209-
k8sVersion: "v1.21.2",
210-
expectedSKU: "k8s-1dot21dot2-ubuntu-2004",
211-
},
212-
{
213-
k8sVersion: "v1.22.0",
214-
expectedSKU: "k8s-1dot22dot0-ubuntu-2004",
215-
},
216-
{
217-
k8sVersion: "v1.23.6",
218-
expectedSKU: "k8s-1dot23dot6-ubuntu-2004",
219-
},
220-
}
221-
222-
for _, test := range tests {
223-
t.Run(test.k8sVersion, func(t *testing.T) {
224-
image, err := GetDefaultUbuntuImage(test.k8sVersion)
225-
g.Expect(err).NotTo(HaveOccurred())
226-
g.Expect(image.Marketplace.SKU).To(Equal(test.expectedSKU))
227-
})
228-
}
229-
}
230-
23171
func TestMSCorrelationIDSendDecorator(t *testing.T) {
23272
g := NewWithT(t)
23373
const corrID tele.CorrID = "TestMSCorrelationIDSendDecoratorCorrID"
@@ -276,94 +116,3 @@ func TestMSCorrelationIDSendDecorator(t *testing.T) {
276116
receivedReq.Header.Get(string(tele.CorrIDKeyVal)),
277117
).To(Equal(string(corrID)))
278118
}
279-
280-
func TestGetDefaultWindowsImage(t *testing.T) {
281-
g := NewWithT(t)
282-
283-
var tests = []struct {
284-
name string
285-
k8sVersion string
286-
runtime string
287-
osVersion string
288-
expectedSKU string
289-
expectedError bool
290-
}{
291-
{
292-
name: "no k8sVersion",
293-
k8sVersion: "1.1.1.1.1.1",
294-
runtime: "",
295-
osVersion: "",
296-
expectedSKU: "",
297-
expectedError: true,
298-
},
299-
{
300-
name: "1.21.* - default runtime - default osVersion",
301-
k8sVersion: "v1.21.4",
302-
runtime: "",
303-
osVersion: "",
304-
expectedSKU: "k8s-1dot21dot4-windows-2019",
305-
expectedError: false,
306-
},
307-
{
308-
name: "1.21.* - dockershim runtime - default osVersion",
309-
k8sVersion: "v1.21.4",
310-
runtime: "dockershim",
311-
osVersion: "",
312-
expectedSKU: "k8s-1dot21dot4-windows-2019",
313-
expectedError: false,
314-
},
315-
{
316-
name: "1.21.* - containerd runtime - default osVersion",
317-
k8sVersion: "v1.21.4",
318-
runtime: "containerd",
319-
osVersion: "",
320-
expectedSKU: "",
321-
expectedError: true,
322-
},
323-
{
324-
name: "1.23.* - containerd runtime - default osVersion",
325-
k8sVersion: "v1.23.2",
326-
runtime: "containerd",
327-
osVersion: "",
328-
expectedSKU: "k8s-1dot23dot2-windows-2019-containerd",
329-
expectedError: false,
330-
},
331-
{
332-
name: "1.23.* - default runtime - 2019 osVersion",
333-
k8sVersion: "v1.23.2",
334-
runtime: "",
335-
osVersion: "windows-2019",
336-
expectedSKU: "k8s-1dot23dot2-windows-2019-containerd",
337-
expectedError: false,
338-
},
339-
{
340-
name: "1.23.* - default runtime - 2022 osVersion",
341-
k8sVersion: "v1.23.2",
342-
runtime: "",
343-
osVersion: "windows-2022",
344-
expectedSKU: "k8s-1dot23dot2-windows-2022-containerd",
345-
expectedError: false,
346-
},
347-
{
348-
name: "1.23.* - containerd runtime - 2022 osVersion",
349-
k8sVersion: "v1.23.2",
350-
runtime: "containerd",
351-
osVersion: "windows-2022",
352-
expectedSKU: "k8s-1dot23dot2-windows-2022-containerd",
353-
expectedError: false,
354-
},
355-
}
356-
357-
for _, test := range tests {
358-
t.Run(test.name, func(t *testing.T) {
359-
image, err := GetDefaultWindowsImage(test.k8sVersion, test.runtime, test.osVersion)
360-
361-
if test.expectedError {
362-
g.Expect(err).To(HaveOccurred())
363-
} else {
364-
g.Expect(err).NotTo(HaveOccurred())
365-
g.Expect(image.Marketplace.SKU).To(Equal(test.expectedSKU))
366-
}
367-
})
368-
}
369-
}

0 commit comments

Comments
 (0)