Skip to content

Commit 9b29cf4

Browse files
author
Per G. da Silva
committed
Refactor render package
Signed-off-by: Per G. da Silva <[email protected]>
1 parent 6f3a121 commit 9b29cf4

File tree

10 files changed

+110
-82
lines changed

10 files changed

+110
-82
lines changed

internal/operator-controller/rukpak/convert/registryv1.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ import (
2424
registry "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/operator-registry"
2525
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
2626
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/certproviders"
27-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/generators"
28-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/validators"
27+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1"
2928
)
3029

3130
type Plain struct {
@@ -192,19 +191,7 @@ func copyMetadataPropertiesToCSV(csv *v1alpha1.ClusterServiceVersion, fsys fs.FS
192191
}
193192

194193
var PlainConverter = Converter{
195-
BundleRenderer: render.BundleRenderer{
196-
BundleValidator: validators.RegistryV1BundleValidator,
197-
ResourceGenerators: []render.ResourceGenerator{
198-
generators.BundleCSVRBACResourceGenerator.ResourceGenerator(),
199-
generators.BundleCRDGenerator,
200-
generators.BundleAdditionalResourcesGenerator,
201-
generators.BundleCSVDeploymentGenerator,
202-
generators.BundleValidatingWebhookResourceGenerator,
203-
generators.BundleMutatingWebhookResourceGenerator,
204-
generators.BundleWebhookServiceResourceGenerator,
205-
generators.CertProviderResourceGenerator,
206-
},
207-
},
194+
BundleRenderer: registryv1.Renderer,
208195
}
209196

210197
type Converter struct {

internal/operator-controller/rukpak/convert/registryv1_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222
"github.com/operator-framework/operator-controller/internal/operator-controller/features"
2323
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/convert"
2424
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
25-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/validators"
25+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1"
2626
. "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util/testing"
2727
)
2828

@@ -47,7 +47,7 @@ func getCsvAndService() (v1alpha1.ClusterServiceVersion, corev1.Service) {
4747
}
4848

4949
func TestPlainConverterUsedRegV1Validator(t *testing.T) {
50-
require.Equal(t, validators.RegistryV1BundleValidator, convert.PlainConverter.BundleValidator)
50+
require.Equal(t, registryv1.BundleValidator, convert.PlainConverter.BundleValidator)
5151
}
5252

5353
func TestRegistryV1SuiteNamespaceNotAvailable(t *testing.T) {

internal/operator-controller/rukpak/render/generators/generators.go renamed to internal/operator-controller/rukpak/render/registryv1/generators/generators.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,6 @@ var certVolumeMounts = map[string]corev1.VolumeMount{
3636
},
3737
}
3838

39-
// BundleCSVRBACResourceGenerator generates all ServiceAccounts, ClusterRoles, ClusterRoleBindings, Roles, RoleBindings
40-
// defined in the RegistryV1 bundle's cluster service version (CSV)
41-
var BundleCSVRBACResourceGenerator = render.ResourceGenerators{
42-
BundleCSVServiceAccountGenerator,
43-
BundleCSVPermissionsGenerator,
44-
BundleCSVClusterPermissionsGenerator,
45-
}
46-
4739
// BundleCSVDeploymentGenerator generates all deployments defined in rv1's cluster service version (CSV). The generated
4840
// resource aim to have parity with OLMv0 generated Deployment resources:
4941
// - olm.targetNamespaces annotation is set with the opts.TargetNamespace value

internal/operator-controller/rukpak/render/generators/generators_test.go renamed to internal/operator-controller/rukpak/render/registryv1/generators/generators_test.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package generators_test
33
import (
44
"cmp"
55
"fmt"
6-
"reflect"
76
"slices"
87
"testing"
98

@@ -22,24 +21,10 @@ import (
2221
"github.com/operator-framework/api/pkg/operators/v1alpha1"
2322

2423
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
25-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/generators"
24+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/generators"
2625
. "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util/testing"
2726
)
2827

29-
func Test_BundleCSVRBACResourceGenerator_HasCorrectGenerators(t *testing.T) {
30-
expectedResourceGenerators := []render.ResourceGenerator{
31-
generators.BundleCSVServiceAccountGenerator,
32-
generators.BundleCSVPermissionsGenerator,
33-
generators.BundleCSVClusterPermissionsGenerator,
34-
}
35-
actualResourceGenerators := generators.BundleCSVRBACResourceGenerator
36-
37-
require.Equal(t, len(expectedResourceGenerators), len(actualResourceGenerators))
38-
for i := range expectedResourceGenerators {
39-
require.Equal(t, reflect.ValueOf(expectedResourceGenerators[i]).Pointer(), reflect.ValueOf(actualResourceGenerators[i]).Pointer(), "bundle validator has unexpected validation function")
40-
}
41-
}
42-
4328
func Test_ResourceGenerators(t *testing.T) {
4429
g := render.ResourceGenerators{
4530
func(rv1 *render.RegistryV1, opts render.Options) ([]client.Object, error) {

internal/operator-controller/rukpak/render/generators/resources.go renamed to internal/operator-controller/rukpak/render/registryv1/generators/resources.go

File renamed without changes.

internal/operator-controller/rukpak/render/generators/resources_test.go renamed to internal/operator-controller/rukpak/render/registryv1/generators/resources_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
rbacv1 "k8s.io/api/rbac/v1"
1313
"sigs.k8s.io/controller-runtime/pkg/client"
1414

15-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/generators"
15+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/generators"
1616
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util"
1717
)
1818

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package registryv1
2+
3+
import (
4+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
5+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/generators"
6+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/validators"
7+
)
8+
9+
// Renderer renders registry+v1 bundles into plain kubernetes manifests
10+
var Renderer = render.BundleRenderer{
11+
BundleValidator: BundleValidator,
12+
ResourceGenerators: ResourceGenerators,
13+
}
14+
15+
// BundleValidator validates RegistryV1 bundles
16+
var BundleValidator = render.BundleValidator{
17+
// NOTE: if you update this list, Test_BundleValidatorHasAllValidationFns will fail until
18+
// you bring the same changes over to that test. This helps ensure all validation rules are executed
19+
// while giving us the flexibility to test each validation function individually
20+
validators.CheckDeploymentSpecUniqueness,
21+
validators.CheckDeploymentNameIsDNS1123SubDomain,
22+
validators.CheckCRDResourceUniqueness,
23+
validators.CheckOwnedCRDExistence,
24+
validators.CheckPackageNameNotEmpty,
25+
validators.CheckWebhookDeploymentReferentialIntegrity,
26+
validators.CheckWebhookNameUniqueness,
27+
validators.CheckWebhookNameIsDNS1123SubDomain,
28+
validators.CheckConversionWebhookCRDReferenceUniqueness,
29+
validators.CheckConversionWebhooksReferenceOwnedCRDs,
30+
}
31+
32+
// ResourceGenerators a slice of ResourceGenerators required to generate plain resource manifests for
33+
// registry+v1 bundles
34+
var ResourceGenerators = []render.ResourceGenerator{
35+
// NOTE: if you update this list, Test_ResourceGeneratorsHasAllGenerators will fail until
36+
// you bring the same changes over to that test. This helps ensure all validation rules are executed
37+
// while giving us the flexibility to test each generator individually
38+
generators.BundleCSVServiceAccountGenerator,
39+
generators.BundleCSVPermissionsGenerator,
40+
generators.BundleCSVClusterPermissionsGenerator,
41+
generators.BundleCRDGenerator,
42+
generators.BundleAdditionalResourcesGenerator,
43+
generators.BundleCSVDeploymentGenerator,
44+
generators.BundleValidatingWebhookResourceGenerator,
45+
generators.BundleMutatingWebhookResourceGenerator,
46+
generators.BundleWebhookServiceResourceGenerator,
47+
generators.CertProviderResourceGenerator,
48+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package registryv1_test
2+
3+
import (
4+
"reflect"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
9+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
10+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1"
11+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/generators"
12+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/validators"
13+
)
14+
15+
func Test_BundleValidatorHasAllValidationFns(t *testing.T) {
16+
expectedValidationFns := []func(v1 *render.RegistryV1) []error{
17+
validators.CheckDeploymentSpecUniqueness,
18+
validators.CheckDeploymentNameIsDNS1123SubDomain,
19+
validators.CheckCRDResourceUniqueness,
20+
validators.CheckOwnedCRDExistence,
21+
validators.CheckPackageNameNotEmpty,
22+
validators.CheckWebhookDeploymentReferentialIntegrity,
23+
validators.CheckWebhookNameUniqueness,
24+
validators.CheckWebhookNameIsDNS1123SubDomain,
25+
validators.CheckConversionWebhookCRDReferenceUniqueness,
26+
validators.CheckConversionWebhooksReferenceOwnedCRDs,
27+
}
28+
actualValidationFns := registryv1.BundleValidator
29+
30+
require.Equal(t, len(expectedValidationFns), len(actualValidationFns))
31+
for i := range expectedValidationFns {
32+
require.Equal(t, reflect.ValueOf(expectedValidationFns[i]).Pointer(), reflect.ValueOf(actualValidationFns[i]).Pointer(), "bundle validator has unexpected validation function")
33+
}
34+
}
35+
36+
func Test_ResourceGeneratorsHasAllGenerators(t *testing.T) {
37+
expectedGenerators := []render.ResourceGenerator{
38+
generators.BundleCSVServiceAccountGenerator,
39+
generators.BundleCSVPermissionsGenerator,
40+
generators.BundleCSVClusterPermissionsGenerator,
41+
generators.BundleCRDGenerator,
42+
generators.BundleAdditionalResourcesGenerator,
43+
generators.BundleCSVDeploymentGenerator,
44+
generators.BundleValidatingWebhookResourceGenerator,
45+
generators.BundleMutatingWebhookResourceGenerator,
46+
generators.BundleWebhookServiceResourceGenerator,
47+
generators.CertProviderResourceGenerator,
48+
}
49+
actualGenerators := registryv1.ResourceGenerators
50+
51+
require.Equal(t, len(expectedGenerators), len(actualGenerators))
52+
for i := range expectedGenerators {
53+
require.Equal(t, reflect.ValueOf(expectedGenerators[i]).Pointer(), reflect.ValueOf(actualGenerators[i]).Pointer(), "bundle validator has unexpected validation function")
54+
}
55+
}

internal/operator-controller/rukpak/render/validators/validator.go renamed to internal/operator-controller/rukpak/render/registryv1/validators/validator.go

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,6 @@ import (
1616
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
1717
)
1818

19-
// RegistryV1BundleValidator validates RegistryV1 bundles
20-
var RegistryV1BundleValidator = render.BundleValidator{
21-
// NOTE: if you update this list, Test_BundleValidatorHasAllValidationFns will fail until
22-
// you bring the same changes over to that test. This helps ensure all validation rules are executed
23-
// while giving us the flexibility to test each validation function individually
24-
CheckDeploymentSpecUniqueness,
25-
CheckDeploymentNameIsDNS1123SubDomain,
26-
CheckCRDResourceUniqueness,
27-
CheckOwnedCRDExistence,
28-
CheckPackageNameNotEmpty,
29-
CheckWebhookDeploymentReferentialIntegrity,
30-
CheckWebhookNameUniqueness,
31-
CheckWebhookNameIsDNS1123SubDomain,
32-
CheckConversionWebhookCRDReferenceUniqueness,
33-
CheckConversionWebhooksReferenceOwnedCRDs,
34-
}
35-
3619
// CheckDeploymentSpecUniqueness checks that each strategy deployment spec in the csv has a unique name.
3720
// Errors are sorted by deployment name.
3821
func CheckDeploymentSpecUniqueness(rv1 *render.RegistryV1) []error {

internal/operator-controller/rukpak/render/validators/validator_test.go renamed to internal/operator-controller/rukpak/render/registryv1/validators/validator_test.go

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package validators_test
22

33
import (
44
"errors"
5-
"reflect"
65
"testing"
76

87
"github.com/stretchr/testify/require"
@@ -12,31 +11,10 @@ import (
1211
"github.com/operator-framework/api/pkg/operators/v1alpha1"
1312

1413
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render"
15-
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/validators"
14+
"github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/render/registryv1/validators"
1615
. "github.com/operator-framework/operator-controller/internal/operator-controller/rukpak/util/testing"
1716
)
1817

19-
func Test_BundleValidatorHasAllValidationFns(t *testing.T) {
20-
expectedValidationFns := []func(v1 *render.RegistryV1) []error{
21-
validators.CheckDeploymentSpecUniqueness,
22-
validators.CheckDeploymentNameIsDNS1123SubDomain,
23-
validators.CheckCRDResourceUniqueness,
24-
validators.CheckOwnedCRDExistence,
25-
validators.CheckPackageNameNotEmpty,
26-
validators.CheckWebhookDeploymentReferentialIntegrity,
27-
validators.CheckWebhookNameUniqueness,
28-
validators.CheckWebhookNameIsDNS1123SubDomain,
29-
validators.CheckConversionWebhookCRDReferenceUniqueness,
30-
validators.CheckConversionWebhooksReferenceOwnedCRDs,
31-
}
32-
actualValidationFns := validators.RegistryV1BundleValidator
33-
34-
require.Equal(t, len(expectedValidationFns), len(actualValidationFns))
35-
for i := range expectedValidationFns {
36-
require.Equal(t, reflect.ValueOf(expectedValidationFns[i]).Pointer(), reflect.ValueOf(actualValidationFns[i]).Pointer(), "bundle validator has unexpected validation function")
37-
}
38-
}
39-
4018
func Test_CheckDeploymentSpecUniqueness(t *testing.T) {
4119
for _, tc := range []struct {
4220
name string

0 commit comments

Comments
 (0)