Skip to content

Commit 73952db

Browse files
committed
Keep legacy image versions
1 parent f0ea10c commit 73952db

2 files changed

Lines changed: 25 additions & 8 deletions

File tree

cloudprofilesync/runnable.go

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,20 @@ func (r *Runnable) CheckSource(ctx context.Context, cloudProfile *v1beta1.CloudP
9191
imageIndex = len(cloudProfile.Spec.MachineImages) - 1
9292
}
9393
image := &cloudProfile.Spec.MachineImages[imageIndex]
94-
image.Versions = make([]v1beta1.MachineImageVersion, len(versions))
95-
for i, version := range versions {
96-
image.Versions[i] = v1beta1.MachineImageVersion{
97-
ExpirableVersion: v1beta1.ExpirableVersion{Version: version.Version},
98-
Architectures: version.Architectures,
94+
existingVersions := make(map[string]int, len(image.Versions))
95+
for idx, version := range image.Versions {
96+
existingVersions[version.Version] = idx
97+
}
98+
for _, version := range versions {
99+
if idx, exists := existingVersions[version.Version]; exists {
100+
image.Versions[idx].Architectures = version.Architectures
101+
} else {
102+
image.Versions = append(image.Versions, v1beta1.MachineImageVersion{
103+
ExpirableVersion: v1beta1.ExpirableVersion{
104+
Version: version.Version,
105+
},
106+
Architectures: version.Architectures,
107+
})
99108
}
100109
}
101110
if r.Provider != nil {

cloudprofilesync/runnable_test.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,11 @@ var _ = Describe("Runnable", func() {
7272
Expect(runnable.CheckSource(ctx, &cloudProfile)).To(Succeed())
7373
Expect(cloudProfile.Spec.MachineImages).To(HaveLen(1))
7474
Expect(cloudProfile.Spec.MachineImages[0].Name).To(Equal("test"))
75-
Expect(cloudProfile.Spec.MachineImages[0].Versions).To(HaveLen(1))
76-
Expect(cloudProfile.Spec.MachineImages[0].Versions[0].Version).To(Equal("2.0.0"))
77-
Expect(cloudProfile.Spec.MachineImages[0].Versions[0].Architectures).To(Equal([]string{"arm64"}))
75+
Expect(cloudProfile.Spec.MachineImages[0].Versions).To(HaveLen(2))
76+
Expect(cloudProfile.Spec.MachineImages[0].Versions[0].Version).To(Equal("1.0.0"))
77+
Expect(cloudProfile.Spec.MachineImages[0].Versions[0].Architectures).To(Equal([]string{"amd64"}))
78+
Expect(cloudProfile.Spec.MachineImages[0].Versions[1].Version).To(Equal("2.0.0"))
79+
Expect(cloudProfile.Spec.MachineImages[0].Versions[1].Architectures).To(Equal([]string{"arm64"}))
7880
})
7981

8082
It("does not change unrelated images in the CloudProfile spec", func(ctx SpecContext) {
@@ -113,6 +115,12 @@ var _ = Describe("Runnable", func() {
113115
{
114116
Name: "test",
115117
Versions: []v1beta1.MachineImageVersion{
118+
{
119+
ExpirableVersion: v1beta1.ExpirableVersion{
120+
Version: "1.0.0",
121+
},
122+
Architectures: []string{"amd64"},
123+
},
116124
{
117125
ExpirableVersion: v1beta1.ExpirableVersion{
118126
Version: "1.1.0",

0 commit comments

Comments
 (0)