Skip to content

Commit bdf24b8

Browse files
committed
fix vmss model with plan
Signed-off-by: Lukas Stehlik <stehlik.lukas@gmail.com>
1 parent 012443d commit bdf24b8

File tree

2 files changed

+77
-6
lines changed

2 files changed

+77
-6
lines changed

azure/converters/vmss.go

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
162162
func 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.
179215
func GetOrchestrationMode(modeType infrav1.OrchestrationModeType) armcompute.OrchestrationMode {
180216
if modeType == infrav1.FlexibleOrchestrationMode {

azure/converters/vmss_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ func Test_SDKImageToImage(t *testing.T) {
218218
Name string
219219
SDKImageRef *armcompute.ImageReference
220220
IsThirdParty bool
221+
SDKPlan *armcompute.Plan
221222
Image infrav1.Image
222223
}{
223224
{
@@ -239,6 +240,11 @@ func Test_SDKImageToImage(t *testing.T) {
239240
Version: ptr.To("version"),
240241
},
241242
IsThirdParty: true,
243+
SDKPlan: &armcompute.Plan{
244+
Publisher: ptr.To("publisher"),
245+
Product: ptr.To("offer"),
246+
Name: ptr.To("sku"),
247+
},
242248
Image: infrav1.Image{
243249
Marketplace: &infrav1.AzureMarketplaceImage{
244250
ImagePlan: infrav1.ImagePlan{
@@ -294,6 +300,31 @@ func Test_SDKImageToImage(t *testing.T) {
294300
},
295301
},
296302
},
303+
{
304+
Name: "compute gallery image with plan",
305+
SDKImageRef: &armcompute.ImageReference{
306+
ID: ptr.To("/subscriptions/subscription/resourceGroups/rg/providers/Microsoft.Compute/galleries/gallery/images/image/versions/version"),
307+
},
308+
SDKPlan: &armcompute.Plan{
309+
Publisher: ptr.To("publisher"),
310+
Product: ptr.To("product"),
311+
Name: ptr.To("sku"),
312+
},
313+
Image: infrav1.Image{
314+
ComputeGallery: &infrav1.AzureComputeGalleryImage{
315+
Gallery: "gallery",
316+
Name: "image",
317+
Version: "version",
318+
SubscriptionID: ptr.To("subscription"),
319+
ResourceGroup: ptr.To("rg"),
320+
Plan: &infrav1.ImagePlan{
321+
Publisher: "publisher",
322+
Offer: "product",
323+
SKU: "sku",
324+
},
325+
},
326+
},
327+
},
297328
{
298329
Name: "compute gallery image not formatted as expected",
299330
SDKImageRef: &armcompute.ImageReference{
@@ -316,6 +347,10 @@ func Test_SDKImageToImage(t *testing.T) {
316347
t.Run(c.Name, func(t *testing.T) {
317348
t.Parallel()
318349
g := gomega.NewGomegaWithT(t)
350+
if c.SDKPlan != nil {
351+
g.Expect(converters.SDKImageToImageWithPlan(c.SDKImageRef, c.IsThirdParty, c.SDKPlan)).To(gomega.Equal(c.Image))
352+
return
353+
}
319354
g.Expect(converters.SDKImageToImage(c.SDKImageRef, c.IsThirdParty)).To(gomega.Equal(c.Image))
320355
})
321356
}

0 commit comments

Comments
 (0)