Skip to content

Commit

Permalink
fix: cluster creation error when serviceVersion is not set in Compone…
Browse files Browse the repository at this point in the history
…ntDefinition (#7415)
  • Loading branch information
cjc7373 committed May 28, 2024
1 parent cffa6ec commit 19eb56a
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
5 changes: 4 additions & 1 deletion controllers/apps/componentversion_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,11 @@ func serviceVersionToCompDefinitions(ctx context.Context, cli client.Reader,
return nil, err
}

serviceVersions := sets.New[string]()
// add definition's service version as default, in case there is no component versions provided
serviceVersions := sets.New[string](compDef.Spec.ServiceVersion)
if compDef.Spec.ServiceVersion != "" {
serviceVersions.Insert(compDef.Spec.ServiceVersion)
}
for _, compVersion := range compVersions {
serviceVersions = serviceVersions.Union(compatibleServiceVersions4Definition(compDef, compVersion))
}
Expand Down
35 changes: 35 additions & 0 deletions controllers/apps/componentversion_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -548,4 +548,39 @@ var _ = Describe("ComponentVersion Controller", func() {
updateNCheckCompDefinitionImages(compDef, resolvedServiceVersion, "r6", "") // app is r6 and another one is ""
})
})

Context("resolve component definition, service version without serviceVersion in componentDefinition", func() {
BeforeEach(func() {
compDefs := createCompDefinitionObjs()
for _, compDef := range compDefs {
compDefKey := client.ObjectKeyFromObject(compDef)
Eventually(testapps.GetAndChangeObj(&testCtx, compDefKey, func(compDef *appsv1alpha1.ComponentDefinition) {
compDef.Spec.ServiceVersion = ""
})).Should(Succeed())
}
compVersionObj = createCompVersionObj()
})

AfterEach(func() {
cleanEnv()
})

It("full match", func() {
By("with definition v1.0 and service version v0")
compDef, resolvedServiceVersion, err := resolveCompDefinitionNServiceVersion(testCtx.Ctx, testCtx.Cli, testapps.CompDefName("v1.0"), testapps.ServiceVersion("v1"))
Expect(err).Should(Succeed())
Expect(compDef.Name).Should(Equal(testapps.CompDefName("v1.0")))
Expect(resolvedServiceVersion).Should(Equal(testapps.ServiceVersion("v1")))
updateNCheckCompDefinitionImages(compDef, resolvedServiceVersion, "r4", "r4")
})

It("w/o service version", func() {
By("with definition v1.0")
compDef, resolvedServiceVersion, err := resolveCompDefinitionNServiceVersion(testCtx.Ctx, testCtx.Cli, testapps.CompDefName("v1.0"), "")
Expect(err).Should(Succeed())
Expect(compDef.Name).Should(Equal(testapps.CompDefName("v1.0")))
Expect(resolvedServiceVersion).Should(Equal(testapps.ServiceVersion("v2")))
updateNCheckCompDefinitionImages(compDef, resolvedServiceVersion, "r3", "r2")
})
})
})

0 comments on commit 19eb56a

Please sign in to comment.