@@ -33,6 +33,8 @@ const (
3333const (
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.
192194func 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.
211232func UserAgent () string {
212233 return fmt .Sprintf ("cluster-api-provider-azure/%s" , version .Get ().String ())
0 commit comments