Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 140ca08

Browse files
author
Per Goncalves da Silva
committedApr 29, 2025·
fix unit tests by using scheme to convert unstructured to a crd
Signed-off-by: Per Goncalves da Silva <pegoncal@redhat.com>
1 parent 41f3fe0 commit 140ca08

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed
 

‎pkg/manifests/bundleloader.go

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ package manifests
22

33
import (
44
"fmt"
5-
"io/ioutil"
5+
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
6+
"k8s.io/apimachinery/pkg/runtime"
67
"os"
78
"path/filepath"
89
"strings"
910

1011
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
11-
apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
1212
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1313
utilerrors "k8s.io/apimachinery/pkg/util/errors"
1414
"k8s.io/apimachinery/pkg/util/yaml"
@@ -180,11 +180,22 @@ func (b *bundleLoader) LoadBundleWalkFunc(path string, f os.FileInfo, err error)
180180
// loadBundle takes the directory that a CSV is in and assumes the rest of the objects in that directory
181181
// are part of the bundle.
182182
func loadBundle(csvName string, dir string) (*Bundle, error) {
183-
files, err := ioutil.ReadDir(dir)
183+
files, err := os.ReadDir(dir)
184184
if err != nil {
185185
return nil, err
186186
}
187187

188+
scheme := runtime.NewScheme()
189+
if err := apiextensionsv1beta1.AddToScheme(scheme); err != nil {
190+
return nil, fmt.Errorf("error loading api extensions v1beta1 scheme: %s", err)
191+
}
192+
if err := apiextensionsv1.AddToScheme(scheme); err != nil {
193+
return nil, fmt.Errorf("error loading api extensions v1 scheme: %s", err)
194+
}
195+
if err := operatorsv1alpha1.AddToScheme(scheme); err != nil {
196+
return nil, fmt.Errorf("error loading operators v1alpha1 scheme: %s", err)
197+
}
198+
188199
var errs []error
189200
bundle := &Bundle{
190201
Name: csvName,
@@ -218,39 +229,30 @@ func loadBundle(csvName string, dir string) (*Bundle, error) {
218229

219230
bundle.Objects = append(bundle.Objects, obj)
220231

221-
// Reset the reader so we can decode it into a typed object.
222-
if err = resetFile(fileReader); err != nil {
223-
errs = append(errs, err)
224-
continue
225-
}
226-
227232
switch kind := obj.GetKind(); kind {
228233
case "ClusterServiceVersion":
229234
if bundle.CSV != nil {
230235
return nil, fmt.Errorf("invalid bundle: contains multiple CSVs")
231236
}
232-
csv := operatorsv1alpha1.ClusterServiceVersion{}
233-
err := decoder.Decode(&csv)
234-
if err != nil {
235-
return nil, fmt.Errorf("unable to parse CSV %s: %s", f.Name(), err.Error())
237+
csv := &operatorsv1alpha1.ClusterServiceVersion{}
238+
if err := scheme.Convert(obj, csv, nil); err != nil {
239+
return nil, fmt.Errorf("unable to convert custom resource definition to CRD %s: %v", f.Name(), err)
236240
}
237-
bundle.CSV = &csv
241+
bundle.CSV = csv
238242
case "CustomResourceDefinition":
239243
version := obj.GetAPIVersion()
240244
if version == apiextensionsv1beta1.SchemeGroupVersion.String() {
241-
crd := apiextensionsv1beta1.CustomResourceDefinition{}
242-
err := decoder.Decode(&crd)
243-
if err != nil {
244-
return nil, fmt.Errorf("unable to parse CRD %s: %s", f.Name(), err.Error())
245+
crd := &apiextensionsv1beta1.CustomResourceDefinition{}
246+
if err := scheme.Convert(obj, crd, nil); err != nil {
247+
return nil, fmt.Errorf("unable to convert custom resource definition to CRD %s: %v", f.Name(), err)
245248
}
246-
bundle.V1beta1CRDs = append(bundle.V1beta1CRDs, &crd)
249+
bundle.V1beta1CRDs = append(bundle.V1beta1CRDs, crd)
247250
} else if version == apiextensionsv1.SchemeGroupVersion.String() {
248-
crd := apiextensionsv1.CustomResourceDefinition{}
249-
err := decoder.Decode(&crd)
250-
if err != nil {
251-
return nil, fmt.Errorf("unable to parse CRD %s: %s", f.Name(), err.Error())
251+
crd := &apiextensionsv1.CustomResourceDefinition{}
252+
if err := scheme.Convert(obj, crd, nil); err != nil {
253+
return nil, fmt.Errorf("unable to convert custom resource definition to CRD %s: %v", f.Name(), err)
252254
}
253-
bundle.V1CRDs = append(bundle.V1CRDs, &crd)
255+
bundle.V1CRDs = append(bundle.V1CRDs, crd)
254256
} else {
255257
return nil, fmt.Errorf("unsupported CRD version %s for %s", version, f.Name())
256258
}

0 commit comments

Comments
 (0)
Please sign in to comment.