Skip to content

Commit e3f9820

Browse files
authored
package/scaffold/olm-catalog: fix CRD description updater (#1060)
* pkg/scaffold/olm-catalog/csv_updaters.go: fix pointer setting issue * pkg/scaffold/scaffold.go: truncate files to be overwritten * pkg/scaffold/crd_test.go: use different file name to avoid test-framework test file truncation
1 parent e03dff8 commit e3f9820

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

pkg/scaffold/crd_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@ func TestCRDGoProject(t *testing.T) {
4747
t.Fatal(err)
4848
}
4949
defer func() { os.Chdir(absPath) }()
50-
err = s.Execute(cfg, &CRD{Resource: r, IsOperatorGo: true})
50+
err = s.Execute(cfg, &CRD{
51+
Input: input.Input{Path: filepath.Join(tfDir, "cache_v1alpha1_memcached.yaml")},
52+
Resource: r,
53+
IsOperatorGo: true,
54+
})
5155
if err != nil {
5256
t.Fatalf("Failed to execute the scaffold: (%v)", err)
5357
}

pkg/scaffold/olm-catalog/csv_updaters.go

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -223,23 +223,29 @@ func parseCRDDescriptionFromYAML(yamlDoc []byte) (*olmapiv1alpha1.CRDDescription
223223
// Apply updates all CRDDescriptions with any user-defined data in csv's
224224
// CRDDescriptions.
225225
func (u *CSVCustomResourceDefinitionsUpdate) Apply(csv *olmapiv1alpha1.ClusterServiceVersion) error {
226-
crdDescSet := make(map[string]*olmapiv1alpha1.CRDDescription)
227-
for _, desc := range u.Owned {
228-
crdDescSet[desc.Name] = &desc
229-
}
230-
for _, desc := range u.Required {
231-
crdDescSet[desc.Name] = &desc
232-
}
226+
set := make(map[string]*olmapiv1alpha1.CRDDescription)
233227
for _, csvDesc := range csv.GetAllCRDDescriptions() {
234-
if uDesc, ok := crdDescSet[csvDesc.Name]; ok {
235-
uDesc.DisplayName = csvDesc.DisplayName
236-
uDesc.Description = csvDesc.Description
237-
uDesc.ActionDescriptor = csvDesc.ActionDescriptor
238-
uDesc.SpecDescriptors = csvDesc.SpecDescriptors
239-
uDesc.StatusDescriptors = csvDesc.StatusDescriptors
240-
uDesc.Resources = csvDesc.Resources
228+
set[csvDesc.Name] = &csvDesc
229+
}
230+
du := u.DeepCopy()
231+
for i, uDesc := range du.Owned {
232+
if csvDesc, ok := set[uDesc.Name]; ok {
233+
d := csvDesc.DeepCopy()
234+
d.Name = uDesc.Name
235+
d.Version = uDesc.Version
236+
d.Kind = uDesc.Kind
237+
du.Owned[i] = *d
238+
}
239+
}
240+
for i, uDesc := range du.Required {
241+
if csvDesc, ok := set[uDesc.Name]; ok {
242+
d := csvDesc.DeepCopy()
243+
d.Name = uDesc.Name
244+
d.Version = uDesc.Version
245+
d.Kind = uDesc.Kind
246+
du.Required[i] = *d
241247
}
242248
}
243-
csv.Spec.CustomResourceDefinitions = *u.CustomResourceDefinitions
249+
csv.Spec.CustomResourceDefinitions = *du
244250
return nil
245251
}

pkg/scaffold/scaffold.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,12 @@ func (s *Scaffold) doRender(i input.Input, e input.File, absPath string) error {
167167
}
168168
}
169169

170+
// Files being overwritten must be trucated to len 0 so no old bytes remain.
171+
if _, err = os.Stat(absPath); err == nil && i.IfExistsAction == input.Overwrite {
172+
if err = os.Truncate(absPath, 0); err != nil {
173+
return err
174+
}
175+
}
170176
_, err = f.Write(b)
171177
log.Infoln("Create", i.Path)
172178
return err

0 commit comments

Comments
 (0)