@@ -68,7 +68,7 @@ func SDKToVMSS(sdkvmss armcompute.VirtualMachineScaleSet, sdkinstances []armcomp
6868 sdkvmss .Properties .VirtualMachineProfile .StorageProfile != nil &&
6969 sdkvmss .Properties .VirtualMachineProfile .StorageProfile .ImageReference != nil {
7070 imageRef := sdkvmss .Properties .VirtualMachineProfile .StorageProfile .ImageReference
71- vmss .Image = SDKImageToImage (imageRef , sdkvmss .Plan != nil )
71+ vmss .Image = SDKImageToImageWithPlan (imageRef , sdkvmss .Plan != nil , sdkvmss . Plan )
7272 }
7373
7474 return vmss
@@ -95,7 +95,7 @@ func SDKVMToVMSSVM(sdkInstance armcompute.VirtualMachine, mode infrav1.Orchestra
9595
9696 if sdkInstance .Properties .StorageProfile != nil && sdkInstance .Properties .StorageProfile .ImageReference != nil {
9797 imageRef := sdkInstance .Properties .StorageProfile .ImageReference
98- instance .Image = SDKImageToImage (imageRef , sdkInstance .Plan != nil )
98+ instance .Image = SDKImageToImageWithPlan (imageRef , sdkInstance .Plan != nil , sdkInstance . Plan )
9999 }
100100
101101 if len (sdkInstance .Zones ) > 0 {
@@ -147,7 +147,7 @@ func SDKToVMSSVM(sdkInstance armcompute.VirtualMachineScaleSetVM) *azure.VMSSVM
147147
148148 if sdkInstance .Properties .StorageProfile != nil && sdkInstance .Properties .StorageProfile .ImageReference != nil {
149149 imageRef := sdkInstance .Properties .StorageProfile .ImageReference
150- instance .Image = SDKImageToImage (imageRef , sdkInstance .Plan != nil )
150+ instance .Image = SDKImageToImageWithPlan (imageRef , sdkInstance .Plan != nil , sdkInstance . Plan )
151151 }
152152
153153 if len (sdkInstance .Zones ) > 0 {
@@ -160,21 +160,57 @@ func SDKToVMSSVM(sdkInstance armcompute.VirtualMachineScaleSetVM) *azure.VMSSVM
160160
161161// SDKImageToImage converts a SDK image reference to infrav1.Image.
162162func SDKImageToImage (sdkImageRef * armcompute.ImageReference , isThirdPartyImage bool ) infrav1.Image {
163+ return SDKImageToImageWithPlan (sdkImageRef , isThirdPartyImage , nil )
164+ }
165+
166+ // SDKImageToImageWithPlan converts a SDK image reference to infrav1.Image and carries plan metadata where applicable.
167+ func SDKImageToImageWithPlan (sdkImageRef * armcompute.ImageReference , isThirdPartyImage bool , sdkPlan * armcompute.Plan ) infrav1.Image {
163168 if sdkImageRef .ID != nil {
164- return IDImageRefToImage (* sdkImageRef .ID )
169+ return withPlan ( IDImageRefToImage (* sdkImageRef .ID ), sdkPlan )
165170 }
166171 // community gallery image
167172 if sdkImageRef .CommunityGalleryImageID != nil {
168- return cgImageRefToImage (* sdkImageRef .CommunityGalleryImageID )
173+ return withPlan ( cgImageRefToImage (* sdkImageRef .CommunityGalleryImageID ), sdkPlan )
169174 }
170175 // shared gallery image
171176 if sdkImageRef .SharedGalleryImageID != nil {
172- return sgImageRefToImage (* sdkImageRef .SharedGalleryImageID )
177+ return withPlan ( sgImageRefToImage (* sdkImageRef .SharedGalleryImageID ), sdkPlan )
173178 }
174179 // marketplace image
175180 return mpImageRefToImage (sdkImageRef , isThirdPartyImage )
176181}
177182
183+ func withPlan (image infrav1.Image , sdkPlan * armcompute.Plan ) infrav1.Image {
184+ if sdkPlan == nil {
185+ return image
186+ }
187+
188+ publisher := ptr .Deref (sdkPlan .Publisher , "" )
189+ offer := ptr .Deref (sdkPlan .Product , "" )
190+ sku := ptr .Deref (sdkPlan .Name , "" )
191+
192+ if image .ComputeGallery != nil {
193+ if publisher != "" && offer != "" && sku != "" {
194+ image .ComputeGallery .Plan = & infrav1.ImagePlan {
195+ Publisher : publisher ,
196+ Offer : offer ,
197+ SKU : sku ,
198+ }
199+ }
200+ return image
201+ }
202+
203+ if image .SharedGallery != nil {
204+ if publisher != "" && offer != "" && sku != "" {
205+ image .SharedGallery .Publisher = ptr .To (publisher )
206+ image .SharedGallery .Offer = ptr .To (offer )
207+ image .SharedGallery .SKU = ptr .To (sku )
208+ }
209+ }
210+
211+ return image
212+ }
213+
178214// GetOrchestrationMode returns the compute.OrchestrationMode for the given infrav1.OrchestrationModeType.
179215func GetOrchestrationMode (modeType infrav1.OrchestrationModeType ) armcompute.OrchestrationMode {
180216 if modeType == infrav1 .FlexibleOrchestrationMode {
0 commit comments