Skip to content

Commit bfbd25e

Browse files
committed
Address feedbacks on registry client interface
Signed-off-by: Vu Dinh <[email protected]>
1 parent bce439e commit bfbd25e

File tree

6 files changed

+120
-112
lines changed

6 files changed

+120
-112
lines changed

pkg/controller/registry/grpc/source.go

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111

1212
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry"
1313
"github.com/operator-framework/operator-lifecycle-manager/pkg/controller/registry/resolver"
14-
"github.com/operator-framework/operator-registry/pkg/client"
1514

1615
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1716
)
@@ -191,8 +190,8 @@ func (s *SourceStore) Remove(key resolver.CatalogKey) error {
191190
return source.Conn.Close()
192191
}
193192

194-
func (s *SourceStore) AsClients(namespaces ...string) map[resolver.CatalogKey]registry.RegistryClientInterface {
195-
refs := map[resolver.CatalogKey]registry.RegistryClientInterface{}
193+
func (s *SourceStore) AsClients(namespaces ...string) map[resolver.CatalogKey]registry.ClientInterface {
194+
refs := map[resolver.CatalogKey]registry.ClientInterface{}
196195
s.sourcesLock.RLock()
197196
defer s.sourcesLock.RUnlock()
198197
for key, source := range s.sources {
@@ -201,7 +200,7 @@ func (s *SourceStore) AsClients(namespaces ...string) map[resolver.CatalogKey]re
201200
}
202201
for _, namespace := range namespaces {
203202
if key.Namespace == namespace {
204-
refs[key] = registry.NewRegistryClient(client.NewClientFromConn(source.Conn))
203+
refs[key] = registry.NewClientFromConn(source.Conn)
205204
}
206205
}
207206
refs[key] = client.NewClientFromConn(source.Conn)

pkg/controller/registry/registry_client.go

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,42 @@
1-
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o resolver/fakes/fake_registry_client_interface.go . RegistryClientInterface
1+
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -o resolver/fakes/fake_registry_client_interface.go . ClientInterface
22
package registry
33

44
import (
55
"context"
66
"fmt"
77
"io"
88

9+
"google.golang.org/grpc"
10+
911
registryapi "github.com/operator-framework/operator-registry/pkg/api"
1012
"github.com/operator-framework/operator-registry/pkg/client"
1113
opregistry "github.com/operator-framework/operator-registry/pkg/registry"
1214
)
1315

16+
// ChannelEntryStream interface
1417
type ChannelEntryStream interface {
1518
Recv() (*registryapi.ChannelEntry, error)
1619
}
1720

18-
type RegistryClientInterface interface {
21+
// ClientInterface that extends client.Interface
22+
type ClientInterface interface {
1923
client.Interface
20-
FindBundleThatProvides(ctx context.Context, group, version, kind, pkgName string) (*registryapi.Bundle, error)
24+
FindBundleThatProvides(ctx context.Context, group, version, kind, excludedPkgName string) (*registryapi.Bundle, error)
2125
GetLatestChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (*ChannelEntryIterator, error)
2226
}
2327

28+
// ChannelEntryIterator struct
2429
type ChannelEntryIterator struct {
2530
stream ChannelEntryStream
2631
error error
2732
}
2833

34+
// NewChannelEntryIterator returns a new ChannelEntryIterator
2935
func NewChannelEntryIterator(stream ChannelEntryStream) *ChannelEntryIterator {
3036
return &ChannelEntryIterator{stream: stream}
3137
}
3238

39+
// Next returns the next Channel Entry in the grpc stream
3340
func (ceit *ChannelEntryIterator) Next() *registryapi.ChannelEntry {
3441
if ceit.error != nil {
3542
return nil
@@ -48,21 +55,23 @@ func (ceit *ChannelEntryIterator) Error() error {
4855
return ceit.error
4956
}
5057

51-
type RegistryClient struct {
52-
client.Interface
53-
Client *client.Client
58+
// Client struct with a registry client embedded
59+
type Client struct {
60+
*client.Client
5461
}
5562

56-
func NewRegistryClient(client *client.Client) *RegistryClient {
57-
return &RegistryClient{client, client}
63+
// NewClientFromConn returns the next Channel Entry in the grpc stream
64+
func NewClientFromConn(conn *grpc.ClientConn) *Client {
65+
return &Client{
66+
Client: client.NewClientFromConn(conn),
67+
}
5868
}
5969

60-
var _ RegistryClientInterface = &RegistryClient{}
61-
var _ client.Interface = &RegistryClient{}
70+
var _ ClientInterface = &Client{}
6271

6372
// GetLatestChannelEntriesThatProvide uses registry client to get a list of
6473
// latest channel entries that provide the requested API (via an iterator)
65-
func (rc *RegistryClient) GetLatestChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (*ChannelEntryIterator, error) {
74+
func (rc *Client) GetLatestChannelEntriesThatProvide(ctx context.Context, group, version, kind string) (*ChannelEntryIterator, error) {
6675
stream, err := rc.Client.Registry.GetLatestChannelEntriesThatProvide(ctx, &registryapi.GetLatestProvidersRequest{Group: group, Version: version, Kind: kind})
6776
if err != nil {
6877
return nil, err
@@ -72,14 +81,14 @@ func (rc *RegistryClient) GetLatestChannelEntriesThatProvide(ctx context.Context
7281

7382
// FindBundleThatProvides returns a bundle that provides the request API and
7483
// doesn't belong to the provided package
75-
func (rc *RegistryClient) FindBundleThatProvides(ctx context.Context, group, version, kind, pkgName string) (*registryapi.Bundle, error) {
84+
func (rc *Client) FindBundleThatProvides(ctx context.Context, group, version, kind, excludedPkgName string) (*registryapi.Bundle, error) {
7685
it, err := rc.GetLatestChannelEntriesThatProvide(ctx, group, version, kind)
7786
if err != nil {
7887
return nil, err
7988
}
80-
entry := rc.filterChannelEntries(it, pkgName)
89+
entry := rc.filterChannelEntries(it, excludedPkgName)
8190
if entry == nil {
82-
return nil, fmt.Errorf("Unable to find a channel entry which doesn't belong to package %s", pkgName)
91+
return nil, fmt.Errorf("Unable to find a channel entry which doesn't belong to package %s", excludedPkgName)
8392
}
8493
bundle, err := rc.Client.Registry.GetBundle(ctx, &registryapi.GetBundleRequest{PkgName: entry.PackageName, ChannelName: entry.ChannelName, CsvName: entry.BundleName})
8594
if err != nil {
@@ -91,10 +100,10 @@ func (rc *RegistryClient) FindBundleThatProvides(ctx context.Context, group, ver
91100
// FilterChannelEntries filters out a channel entries that provide the requested
92101
// API and come from the same package with original operator and returns the
93102
// first entry on the list
94-
func (rc *RegistryClient) filterChannelEntries(it *ChannelEntryIterator, pkgName string) *opregistry.ChannelEntry {
103+
func (rc *Client) filterChannelEntries(it *ChannelEntryIterator, excludedPkgName string) *opregistry.ChannelEntry {
95104
var entries []*opregistry.ChannelEntry
96105
for e := it.Next(); e != nil; e = it.Next() {
97-
if e.PackageName != pkgName {
106+
if e.PackageName != excludedPkgName {
98107
entry := &opregistry.ChannelEntry{
99108
PackageName: e.PackageName,
100109
ChannelName: e.ChannelName,

0 commit comments

Comments
 (0)