Skip to content

Commit

Permalink
Add interface for client mocking, fix bug with semver
Browse files Browse the repository at this point in the history
Signed-off-by: dtfranz <dfranz@redhat.com>
  • Loading branch information
dtfranz committed Sep 19, 2023
1 parent 0be1726 commit 19bd853
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 15 deletions.
2 changes: 1 addition & 1 deletion cmd/resolutioncli/variable_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"github.com/operator-framework/operator-controller/internal/resolution/variablesources"
)

func newPackageVariableSource(catalog *catalogclient.Client, packageName, packageVersion, packageChannel string) func(inputVariableSource input.VariableSource) (input.VariableSource, error) {
func newPackageVariableSource(catalog catalogclient.CatalogClient, packageName, packageVersion, packageChannel string) func(inputVariableSource input.VariableSource) (input.VariableSource, error) {
return func(inputVariableSource input.VariableSource) (input.VariableSource, error) {
pkgSource, err := variablesources.NewRequiredPackageVariableSource(
catalog,
Expand Down
4 changes: 4 additions & 0 deletions internal/catalogmetadata/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ import (
"github.com/operator-framework/operator-controller/internal/catalogmetadata"
)

type CatalogClient interface {
Bundles(ctx context.Context) ([]*catalogmetadata.Bundle, error)
}

func NewClient(cl client.Client) *Client {
return &Client{cl: cl}
}
Expand Down
4 changes: 2 additions & 2 deletions internal/catalogmetadata/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ func (b *Bundle) loadRequiredPackages() error {
if err != nil {
return fmt.Errorf("error determining bundle required packages for bundle %q: %s", b.Name, err)
}
for _, requiredPackage := range requiredPackages {
for index, requiredPackage := range requiredPackages {
semverRange, err := bsemver.ParseRange(requiredPackage.VersionRange)
if err != nil {
return fmt.Errorf(
Expand All @@ -108,7 +108,7 @@ func (b *Bundle) loadRequiredPackages() error {
err,
)
}
requiredPackage.SemverRange = &semverRange
requiredPackages[index].SemverRange = &semverRange
}
b.requiredPackages = requiredPackages
}
Expand Down
2 changes: 1 addition & 1 deletion internal/controllers/variable_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"github.com/operator-framework/operator-controller/internal/resolution/variablesources"
)

func NewVariableSource(cl client.Client, catalog *catalogclient.Client) variablesources.NestedVariableSource {
func NewVariableSource(cl client.Client, catalog catalogclient.CatalogClient) variablesources.NestedVariableSource {
return variablesources.NestedVariableSource{
func(inputVariableSource input.VariableSource) (input.VariableSource, error) {
return variablesources.NewOperatorVariableSource(cl, catalog, inputVariableSource), nil
Expand Down
4 changes: 2 additions & 2 deletions internal/resolution/variablesources/bundle_deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ var _ input.VariableSource = &BundleDeploymentVariableSource{}

type BundleDeploymentVariableSource struct {
client client.Client
catalog *catalogclient.Client
catalog catalogclient.CatalogClient
inputVariableSource input.VariableSource
}

func NewBundleDeploymentVariableSource(cl client.Client, catalog *catalogclient.Client, inputVariableSource input.VariableSource) *BundleDeploymentVariableSource {
func NewBundleDeploymentVariableSource(cl client.Client, catalog catalogclient.CatalogClient, inputVariableSource input.VariableSource) *BundleDeploymentVariableSource {
return &BundleDeploymentVariableSource{
client: cl,
catalog: catalog,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ import (
var _ input.VariableSource = &BundlesAndDepsVariableSource{}

type BundlesAndDepsVariableSource struct {
catalog *catalogclient.Client
catalog catalogclient.CatalogClient
variableSources []input.VariableSource
}

func NewBundlesAndDepsVariableSource(catalog *catalogclient.Client, inputVariableSources ...input.VariableSource) *BundlesAndDepsVariableSource {
func NewBundlesAndDepsVariableSource(catalog catalogclient.CatalogClient, inputVariableSources ...input.VariableSource) *BundlesAndDepsVariableSource {
return &BundlesAndDepsVariableSource{
catalog: catalog,
variableSources: inputVariableSources,
Expand Down Expand Up @@ -98,7 +98,7 @@ func (b *BundlesAndDepsVariableSource) filterBundleDependencies(allBundles []*ca
for _, requiredPackage := range requiredPackages {
packageDependencyBundles := catalogfilter.Filter(allBundles, catalogfilter.And(catalogfilter.WithPackageName(requiredPackage.PackageName), catalogfilter.InBlangSemverRange(*requiredPackage.SemverRange)))
if len(packageDependencyBundles) == 0 {
return nil, fmt.Errorf("could not find package dependencies for bundle %q", bundle.Name)
return nil, fmt.Errorf("could not find package dependencies for bundle '%s'", bundle.Name)
}
for i := 0; i < len(packageDependencyBundles); i++ {
bundle := packageDependencyBundles[i]
Expand Down
4 changes: 2 additions & 2 deletions internal/resolution/variablesources/installed_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
var _ input.VariableSource = &InstalledPackageVariableSource{}

type InstalledPackageVariableSource struct {
catalog *catalogclient.Client
catalog catalogclient.CatalogClient
bundleImage string
}

Expand Down Expand Up @@ -60,7 +60,7 @@ func (r *InstalledPackageVariableSource) notFoundError() error {
return fmt.Errorf("bundleImage %q not found", r.bundleImage)
}

func NewInstalledPackageVariableSource(catalog *catalogclient.Client, bundleImage string) (*InstalledPackageVariableSource, error) {
func NewInstalledPackageVariableSource(catalog catalogclient.CatalogClient, bundleImage string) (*InstalledPackageVariableSource, error) {
return &InstalledPackageVariableSource{
catalog: catalog,
bundleImage: bundleImage,
Expand Down
4 changes: 2 additions & 2 deletions internal/resolution/variablesources/operator.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ var _ input.VariableSource = &OperatorVariableSource{}

type OperatorVariableSource struct {
client client.Client
catalog *catalogclient.Client
catalog catalogclient.CatalogClient
inputVariableSource input.VariableSource
}

func NewOperatorVariableSource(cl client.Client, catalog *catalogclient.Client, inputVariableSource input.VariableSource) *OperatorVariableSource {
func NewOperatorVariableSource(cl client.Client, catalog catalogclient.CatalogClient, inputVariableSource input.VariableSource) *OperatorVariableSource {
return &OperatorVariableSource{
client: cl,
catalog: catalog,
Expand Down
4 changes: 2 additions & 2 deletions internal/resolution/variablesources/required_package.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ func InChannel(channelName string) RequiredPackageVariableSourceOption {
}

type RequiredPackageVariableSource struct {
catalog *catalogclient.Client
catalog catalogclient.CatalogClient

packageName string
versionRange string
channelName string
predicates []catalogfilter.Predicate[catalogmetadata.Bundle]
}

func NewRequiredPackageVariableSource(catalog *catalogclient.Client, packageName string, options ...RequiredPackageVariableSourceOption) (*RequiredPackageVariableSource, error) {
func NewRequiredPackageVariableSource(catalog catalogclient.CatalogClient, packageName string, options ...RequiredPackageVariableSourceOption) (*RequiredPackageVariableSource, error) {
if packageName == "" {
return nil, fmt.Errorf("package name must not be empty")
}
Expand Down

0 comments on commit 19bd853

Please sign in to comment.