Skip to content

Commit 736a04e

Browse files
committed
Add Windows Default image
1 parent 2758760 commit 736a04e

10 files changed

+61
-17
lines changed

cloud/defaults.go

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ const (
3333
const (
3434
// DefaultImageOfferID is the default Azure Marketplace offer ID
3535
DefaultImageOfferID = "capi"
36+
// DefaultWindowsImageOfferID is the default Azure Marketplace offer ID for Windows
37+
DefaultWindowsImageOfferID = "capi-windows"
3638
// DefaultImagePublisherID is the default Azure Marketplace publisher ID
3739
DefaultImagePublisherID = "cncf-upstream"
3840
// LatestVersion is the image version latest
@@ -180,17 +182,17 @@ func NATRuleID(subscriptionID, resourceGroup, loadBalancerName, natRuleName stri
180182
}
181183

182184
// GetDefaultImageSKUID gets the SKU ID of the image to use for the provided version of Kubernetes.
183-
func getDefaultImageSKUID(k8sVersion string) (string, error) {
185+
func getDefaultImageSKUID(k8sVersion, os, osVersion string) (string, error) {
184186
version, err := semver.ParseTolerant(k8sVersion)
185187
if err != nil {
186188
return "", errors.Wrapf(err, "unable to parse Kubernetes version \"%s\" in spec, expected valid SemVer string", k8sVersion)
187189
}
188-
return fmt.Sprintf("k8s-%ddot%ddot%d-ubuntu-1804", version.Major, version.Minor, version.Patch), nil
190+
return fmt.Sprintf("k8s-%ddot%ddot%d-%s-%s", version.Major, version.Minor, version.Patch, os, osVersion), nil
189191
}
190192

191193
// GetDefaultUbuntuImage returns the default image spec for Ubuntu.
192194
func GetDefaultUbuntuImage(k8sVersion string) (*infrav1.Image, error) {
193-
skuID, err := getDefaultImageSKUID(k8sVersion)
195+
skuID, err := getDefaultImageSKUID(k8sVersion, "ubuntu", "1804")
194196
if err != nil {
195197
return nil, errors.Wrapf(err, "failed to get default image")
196198
}
@@ -207,6 +209,25 @@ func GetDefaultUbuntuImage(k8sVersion string) (*infrav1.Image, error) {
207209
return defaultImage, nil
208210
}
209211

212+
// GetDefaultWindowsImage returns the default image spec for Windows.
213+
func GetDefaultWindowsImage(k8sVersion string) (*infrav1.Image, error) {
214+
skuID, err := getDefaultImageSKUID(k8sVersion, "windows", "2019")
215+
if err != nil {
216+
return nil, errors.Wrapf(err, "failed to get default image")
217+
}
218+
219+
defaultImage := &infrav1.Image{
220+
Marketplace: &infrav1.AzureMarketplaceImage{
221+
Publisher: DefaultImagePublisherID,
222+
Offer: DefaultWindowsImageOfferID,
223+
SKU: skuID,
224+
Version: LatestVersion,
225+
},
226+
}
227+
228+
return defaultImage, nil
229+
}
230+
210231
// UserAgent specifies a string to append to the agent identifier.
211232
func UserAgent() string {
212233
return fmt.Sprintf("cluster-api-provider-azure/%s", version.Get().String())

cloud/defaults_test.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,54 +27,77 @@ func TestGetDefaultImageSKUID(t *testing.T) {
2727

2828
var tests = []struct {
2929
k8sVersion string
30+
os string
31+
osVersion string
3032
expectedResult string
3133
expectedError bool
3234
}{
3335
{
3436
k8sVersion: "v1.14.9",
3537
expectedResult: "k8s-1dot14dot9-ubuntu-1804",
3638
expectedError: false,
39+
os: "ubuntu",
40+
osVersion: "1804",
3741
},
3842
{
3943
k8sVersion: "v1.14.10",
4044
expectedResult: "k8s-1dot14dot10-ubuntu-1804",
4145
expectedError: false,
46+
os: "ubuntu",
47+
osVersion: "1804",
4248
},
4349
{
4450
k8sVersion: "v1.15.6",
4551
expectedResult: "k8s-1dot15dot6-ubuntu-1804",
4652
expectedError: false,
53+
os: "ubuntu",
54+
osVersion: "1804",
4755
},
4856
{
4957
k8sVersion: "v1.15.7",
5058
expectedResult: "k8s-1dot15dot7-ubuntu-1804",
5159
expectedError: false,
60+
os: "ubuntu",
61+
osVersion: "1804",
5262
},
5363
{
5464
k8sVersion: "v1.16.3",
5565
expectedResult: "k8s-1dot16dot3-ubuntu-1804",
5666
expectedError: false,
67+
os: "ubuntu",
68+
osVersion: "1804",
5769
},
5870
{
5971
k8sVersion: "v1.16.4",
6072
expectedResult: "k8s-1dot16dot4-ubuntu-1804",
6173
expectedError: false,
74+
os: "ubuntu",
75+
osVersion: "1804",
6276
},
6377
{
6478
k8sVersion: "1.12.0",
6579
expectedResult: "k8s-1dot12dot0-ubuntu-1804",
6680
expectedError: false,
81+
os: "ubuntu",
82+
osVersion: "1804",
6783
},
6884
{
6985
k8sVersion: "1.1.notvalid.semver",
7086
expectedResult: "",
7187
expectedError: true,
7288
},
89+
{
90+
k8sVersion: "v1.19.3",
91+
expectedResult: "k8s-1dot19dot3-windows-2019",
92+
expectedError: false,
93+
os: "windows",
94+
osVersion: "2019",
95+
},
7396
}
7497

7598
for _, test := range tests {
7699
t.Run(test.k8sVersion, func(t *testing.T) {
77-
id, err := getDefaultImageSKUID(test.k8sVersion)
100+
id, err := getDefaultImageSKUID(test.k8sVersion, test.os, test.osVersion)
78101

79102
if test.expectedError {
80103
g.Expect(err).To(HaveOccurred())

cloud/scope/machine.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,12 @@ func (m *MachineScope) GetVMImage() (*infrav1.Image, error) {
450450
if m.AzureMachine.Spec.Image != nil {
451451
return m.AzureMachine.Spec.Image, nil
452452
}
453-
m.Info("No image specified for machine, using default", "machine", m.AzureMachine.GetName())
453+
454+
if m.AzureMachine.Spec.OSDisk.OSType == azure.WindowsOS {
455+
m.Info("No image specified for machine, using default Windows Image", "machine", m.AzureMachine.GetName())
456+
return azure.GetDefaultWindowsImage(to.String(m.Machine.Spec.Version))
457+
}
458+
459+
m.Info("No image specified for machine, using default Linux Image", "machine", m.AzureMachine.GetName())
454460
return azure.GetDefaultUbuntuImage(to.String(m.Machine.Spec.Version))
455461
}

cloud/scope/machinepool.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,12 @@ func (m *MachinePoolScope) GetVMImage() (*infrav1.Image, error) {
314314
if m.AzureMachinePool.Spec.Template.Image != nil {
315315
return m.AzureMachinePool.Spec.Template.Image, nil
316316
}
317+
318+
if m.AzureMachinePool.Spec.Template.OSDisk.OSType == azure.WindowsOS {
319+
m.Info("No image specified for machine, using default Windows Image", "machine", m.MachinePool.GetName())
320+
return azure.GetDefaultWindowsImage(to.String(m.MachinePool.Spec.Template.Spec.Version))
321+
}
322+
317323
m.Info("No image specified for machine, using default", "machine", m.MachinePool.GetName())
318324
return azure.GetDefaultUbuntuImage(to.String(m.MachinePool.Spec.Template.Spec.Version))
319325
}

templates/cluster-template-machinepool-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,6 @@ metadata:
224224
spec:
225225
location: ${AZURE_LOCATION}
226226
template:
227-
image:
228-
id: /subscriptions/b9d9436a-0c07-4fe8-b779-2c1030bd7997/resourceGroups/test-cluster-api-images/providers/Microsoft.Compute/images/windowstestvmimage-capz
229227
osDisk:
230228
diskSizeGB: 30
231229
managedDisk:

templates/cluster-template-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,8 +231,6 @@ metadata:
231231
spec:
232232
template:
233233
spec:
234-
image:
235-
id: /subscriptions/b9d9436a-0c07-4fe8-b779-2c1030bd7997/resourceGroups/test-cluster-api-images/providers/Microsoft.Compute/images/windowstestvmimage-capz
236234
location: ${AZURE_LOCATION}
237235
osDisk:
238236
diskSizeGB: 128

templates/flavors/machinepool-windows/machine-pool-deployment-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ metadata:
2727
spec:
2828
location: ${AZURE_LOCATION}
2929
template:
30-
image:
31-
id: /subscriptions/b9d9436a-0c07-4fe8-b779-2c1030bd7997/resourceGroups/test-cluster-api-images/providers/Microsoft.Compute/images/windowstestvmimage-capz
3230
vmSize: ${AZURE_NODE_MACHINE_TYPE}
3331
osDisk:
3432
osType: "Windows"

templates/flavors/windows/machine-deployment-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ metadata:
2929
spec:
3030
template:
3131
spec:
32-
image:
33-
id: "/subscriptions/b9d9436a-0c07-4fe8-b779-2c1030bd7997/resourceGroups/test-cluster-api-images/providers/Microsoft.Compute/images/windowstestvmimage-capz"
3432
location: ${AZURE_LOCATION}
3533
vmSize: ${AZURE_NODE_MACHINE_TYPE}
3634
osDisk:

templates/test/cluster-template-prow-machine-pool-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,6 @@ metadata:
227227
spec:
228228
location: ${AZURE_LOCATION}
229229
template:
230-
image:
231-
id: /subscriptions/b9d9436a-0c07-4fe8-b779-2c1030bd7997/resourceGroups/test-cluster-api-images/providers/Microsoft.Compute/images/windowstestvmimage-capz
232230
osDisk:
233231
diskSizeGB: 30
234232
managedDisk:

templates/test/cluster-template-prow-windows.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,6 @@ metadata:
234234
spec:
235235
template:
236236
spec:
237-
image:
238-
id: /subscriptions/b9d9436a-0c07-4fe8-b779-2c1030bd7997/resourceGroups/test-cluster-api-images/providers/Microsoft.Compute/images/windowstestvmimage-capz
239237
location: ${AZURE_LOCATION}
240238
osDisk:
241239
diskSizeGB: 128

0 commit comments

Comments
 (0)