Skip to content

Commit 7ec0a00

Browse files
Org Resolver in Initialise Depenencies loop wiring (#1599)
* adding org resolver to initialis e request * adding org resolver grpc wiring * using protoc v5.29.3 * use services helper in loop implementor Co-authored-by: Jordan Krage <[email protected]> * fixing build issue * other build issues --------- Co-authored-by: Jordan Krage <[email protected]>
1 parent 392db6d commit 7ec0a00

File tree

9 files changed

+405
-2
lines changed

9 files changed

+405
-2
lines changed

pkg/capabilities/pb/capabilities.pb.go

Lines changed: 11 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/capabilities/pb/capabilities.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ message InitialiseRequest {
169169
uint32 oracle_factory_id = 8;
170170
uint32 gateway_connector_id = 9;
171171
uint32 keystore_id = 10;
172+
uint32 org_resolver_id = 11;
172173
}
173174

174175
message CapabilityInfosReply {

pkg/loop/internal/core/services/capability/standard/standard_capabilities.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
keystoreservice "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/keystore"
1717
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/keyvalue"
1818
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/oraclefactory"
19+
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/orgresolver"
1920
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/pipeline"
2021
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/core/services/telemetry"
2122
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/goplugin"
@@ -156,6 +157,15 @@ func (c *StandardCapabilitiesClient) Initialise(ctx context.Context, dependencie
156157
}
157158
resources = append(resources, gatewayConnectorRes)
158159

160+
orgResolverID, orgResolverRes, err := c.ServeNew("OrgResolver", func(s *grpc.Server) {
161+
pb.RegisterOrgResolverServer(s, orgresolver.NewServer(dependencies.OrgResolver))
162+
})
163+
if err != nil {
164+
c.CloseAll(resources...)
165+
return fmt.Errorf("failed to serve org resolver: %w", err)
166+
}
167+
resources = append(resources, orgResolverRes)
168+
159169
_, err = c.StandardCapabilitiesClient.Initialise(ctx, &capabilitiespb.InitialiseRequest{
160170
Config: config,
161171
ErrorLogId: errorLogID,
@@ -167,6 +177,7 @@ func (c *StandardCapabilitiesClient) Initialise(ctx context.Context, dependencie
167177
OracleFactoryId: oracleFactoryID,
168178
GatewayConnectorId: gatewayConnectorID,
169179
KeystoreId: keyStoreID,
180+
OrgResolverId: orgResolverID,
170181
})
171182

172183
if err != nil {
@@ -310,6 +321,14 @@ func (s *standardCapabilitiesServer) Initialise(ctx context.Context, request *ca
310321
resources = append(resources, net.Resource{Closer: gatewayConnectorConn, Name: "GatewayConnector"})
311322
gatewayConnector := gateway.NewGatewayConnectorClient(gatewayConnectorConn, s.BrokerExt)
312323

324+
orgResolverConn, err := s.Dial(request.OrgResolverId)
325+
if err != nil {
326+
s.CloseAll(resources...)
327+
return nil, net.ErrConnDial{Name: "OrgResolver", ID: request.OrgResolverId, Err: err}
328+
}
329+
resources = append(resources, net.Resource{Closer: orgResolverConn, Name: "OrgResolver"})
330+
orgResolver := orgresolver.NewClient(s.Logger, orgResolverConn)
331+
313332
dependencies := core.StandardCapabilitiesDependencies{
314333
Config: request.Config,
315334
TelemetryService: telemetry,
@@ -321,6 +340,7 @@ func (s *standardCapabilitiesServer) Initialise(ctx context.Context, request *ca
321340
OracleFactory: oracleFactory,
322341
GatewayConnector: gatewayConnector,
323342
P2PKeystore: keyStore,
343+
OrgResolver: orgResolver,
324344
}
325345

326346
if err = s.impl.Initialise(ctx, dependencies); err != nil {
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package orgresolver
2+
3+
import (
4+
"context"
5+
6+
"google.golang.org/grpc"
7+
8+
"github.com/smartcontractkit/chainlink-common/pkg/logger"
9+
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb"
10+
"github.com/smartcontractkit/chainlink-common/pkg/services"
11+
"github.com/smartcontractkit/chainlink-common/pkg/services/orgresolver"
12+
)
13+
14+
var _ orgresolver.OrgResolver = (*Client)(nil)
15+
16+
type Client struct {
17+
services.Service
18+
grpc pb.OrgResolverClient
19+
}
20+
21+
func (c *Client) Get(ctx context.Context, owner string) (string, error) {
22+
resp, err := c.grpc.Get(ctx, &pb.GetOrganizationRequest{Owner: owner})
23+
if err != nil {
24+
return "", err
25+
}
26+
return resp.OrganizationId, nil
27+
}
28+
29+
func NewClient(lggr logger.Logger, cc grpc.ClientConnInterface) *Client {
30+
return &Client{Service: services.Config{Name: "OrgResolverClient"}.NewService(lggr), grpc: pb.NewOrgResolverClient(cc)}
31+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package orgresolver
2+
3+
import (
4+
"context"
5+
6+
"github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb"
7+
"github.com/smartcontractkit/chainlink-common/pkg/services/orgresolver"
8+
)
9+
10+
var _ pb.OrgResolverServer = (*Server)(nil)
11+
12+
type Server struct {
13+
pb.UnimplementedOrgResolverServer
14+
impl orgresolver.OrgResolver
15+
}
16+
17+
func NewServer(impl orgresolver.OrgResolver) *Server {
18+
return &Server{impl: impl}
19+
}
20+
21+
func (s *Server) Get(ctx context.Context, req *pb.GetOrganizationRequest) (*pb.GetOrganizationResponse, error) {
22+
orgID, err := s.impl.Get(ctx, req.Owner)
23+
if err != nil {
24+
return nil, err
25+
}
26+
return &pb.GetOrganizationResponse{OrganizationId: orgID}, nil
27+
}

pkg/loop/internal/pb/generate.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative pipeline_runner.proto
1111
//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative keyvalue_store.proto
1212
//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative validate_config.proto
13+
//go:generate protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative orgresolver.proto
1314
package pb

pkg/loop/internal/pb/orgresolver.pb.go

Lines changed: 174 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
syntax = "proto3";
2+
3+
option go_package = "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb";
4+
5+
package loop;
6+
7+
import "google/protobuf/empty.proto";
8+
9+
message GetOrganizationRequest {
10+
string owner = 1;
11+
}
12+
13+
message GetOrganizationResponse {
14+
string organization_id = 1;
15+
}
16+
17+
service OrgResolver {
18+
rpc Get(GetOrganizationRequest) returns (GetOrganizationResponse);
19+
}

0 commit comments

Comments
 (0)