@@ -110,6 +110,65 @@ var _ = Describe("NamespacedCloudProfile Mutator", func() {
110110 }),
111111 ))
112112 })
113+ It ("should correctly merge extended machineImages using capabilities " , func () {
114+ namespacedCloudProfile .Status .CloudProfileSpec .MachineCapabilities = []v1beta1.CapabilityDefinition {{
115+ Name : "architecture" ,
116+ Values : []string {"amd64" , "armhf" },
117+ }}
118+ namespacedCloudProfile .Status .CloudProfileSpec .ProviderConfig = & runtime.RawExtension {Raw : []byte (`{
119+ "apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1",
120+ "kind":"CloudProfileConfig",
121+ "machineImages":[
122+ {"name":"image-1","versions":[{"version":"1.0","capabilityFlavors":[
123+ {"capabilities":{"architecture":["amd64"]},"regions":[{"name":"eu1","ami":"ami-123"}]}
124+ ]}]}
125+ ]}` )}
126+ namespacedCloudProfile .Spec .ProviderConfig = & runtime.RawExtension {Raw : []byte (`{
127+ "apiVersion":"aws.provider.extensions.gardener.cloud/v1alpha1",
128+ "kind":"CloudProfileConfig",
129+ "machineImages":[
130+ {"name":"image-1","versions":[{"version":"1.1","capabilityFlavors":[
131+ {"capabilities":{"architecture":["armhf"]},"regions":[{"name":"eu2","ami":"ami-124"}]}
132+ ]}]},
133+ {"name":"image-2","versions":[{"version":"2.0","capabilityFlavors":[
134+ {"capabilities":{"architecture":["amd64"]},"regions":[{"name":"eu3","ami":"ami-125"}]}
135+ ]}]}
136+ ]}` )}
137+
138+ Expect (namespacedCloudProfileMutator .Mutate (ctx , namespacedCloudProfile , nil )).To (Succeed ())
139+
140+ mergedConfig , err := decodeCloudProfileConfig (decoder , namespacedCloudProfile .Status .CloudProfileSpec .ProviderConfig )
141+ Expect (err ).ToNot (HaveOccurred ())
142+ Expect (mergedConfig .MachineImages ).To (ConsistOf (
143+ MatchFields (IgnoreExtras , Fields {
144+ "Name" : Equal ("image-1" ),
145+ "Versions" : ContainElements (
146+ api.MachineImageVersion {Version : "1.0" ,
147+ CapabilityFlavors : []api.MachineImageFlavor {{
148+ Capabilities : v1beta1.Capabilities {"architecture" : []string {"amd64" }},
149+ Regions : []api.RegionAMIMapping {{Name : "eu1" , AMI : "ami-123" , Architecture : ptr .To ("ignore" )}},
150+ }},
151+ },
152+ api.MachineImageVersion {Version : "1.1" ,
153+ CapabilityFlavors : []api.MachineImageFlavor {{
154+ Capabilities : v1beta1.Capabilities {"architecture" : []string {"armhf" }},
155+ Regions : []api.RegionAMIMapping {{Name : "eu2" , AMI : "ami-124" , Architecture : ptr .To ("ignore" )}},
156+ }},
157+ },
158+ ),
159+ }),
160+ MatchFields (IgnoreExtras , Fields {
161+ "Name" : Equal ("image-2" ),
162+ "Versions" : ContainElements (
163+ api.MachineImageVersion {Version : "2.0" ,
164+ CapabilityFlavors : []api.MachineImageFlavor {{
165+ Capabilities : v1beta1.Capabilities {"architecture" : []string {"amd64" }},
166+ Regions : []api.RegionAMIMapping {{Name : "eu3" , AMI : "ami-125" , Architecture : ptr .To ("ignore" )}},
167+ }},
168+ }),
169+ }),
170+ ))
171+ })
113172 })
114173 })
115174})
0 commit comments