Skip to content

Commit 74301cd

Browse files
engnkejmank88chainchad
authored
Add nop info lookup token option (#1768)
* add nop info lookup token * refactoring * make headerfunc unexported * fix testifylint errors * fix import order * Update pkg/chipingress/client_test.go Co-authored-by: Jordan Krage <jmank88@gmail.com> * Enable continue-on-error for golangci_lint job Allow module linting to continue on errors. * Use module path for golangci-lint report XML * Add debug step to find path to xml report for golangci-lint * refactor for lint * Show working dir * Revert "Show working dir" This reverts commit 46d22f6. * Revert "Add debug step to find path to xml report for golangci-lint" This reverts commit 36b468d. --------- Co-authored-by: Jordan Krage <jmank88@gmail.com> Co-authored-by: chainchad <96362174+chainchad@users.noreply.github.com>
1 parent 3ff7d6f commit 74301cd

4 files changed

Lines changed: 115 additions & 78 deletions

File tree

.github/workflows/golangci_lint.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ jobs:
2222
if: ${{ github.event_name != 'merge_group' }}
2323
needs: detect-modules
2424
runs-on: ubuntu-latest
25+
# Modules are independent
26+
continue-on-error: true
2527
strategy:
2628
matrix:
2729
module: ${{ fromJSON(needs.detect-modules.outputs.modules) }}
@@ -50,6 +52,7 @@ jobs:
5052
checkout-repo: false
5153
golangci-lint-version: v${{ steps.get-version.outputs.version }}
5254
go-directory: ${{ matrix.module }}
55+
golangci-lint-args: --output.text.path=stdout --output.checkstyle.path=${{ matrix.module }}/golangci-lint-report.xml
5356

5457
golangci-lint:
5558
# Required sink job that waits for all lint jobs to complete

pkg/chipingress/auth.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ type HeaderProvider interface {
1414
Headers(ctx context.Context) (map[string]string, error)
1515
}
1616

17+
type headerProviderFunc func(ctx context.Context) (map[string]string, error)
18+
19+
func (f headerProviderFunc) Headers(ctx context.Context) (map[string]string, error) {
20+
return f(ctx)
21+
}
22+
1723
// Basic-Auth authentication for Chip Ingress
1824
type basicAuthCredentials struct {
1925
authHeader map[string]string

pkg/chipingress/client.go

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,14 @@ type Opt func(*clientConfig)
4444

4545
// clientConfig is the configuration for the ChipIngressClient.
4646
type clientConfig struct {
47-
transportCredentials credentials.TransportCredentials
48-
perRPCCredentials credentials.PerRPCCredentials
49-
headerProvider HeaderProvider
50-
insecureConnection bool
51-
host string
52-
meterProvider metric.MeterProvider
53-
tracerProvider trace.TracerProvider
47+
transportCredentials credentials.TransportCredentials
48+
perRPCCredentials credentials.PerRPCCredentials
49+
headerProvider HeaderProvider
50+
insecureConnection bool
51+
host string
52+
meterProvider metric.MeterProvider
53+
tracerProvider trace.TracerProvider
54+
nopInfoHeaderProvider HeaderProvider
5455
}
5556

5657
func newClientConfig(host string) *clientConfig {
@@ -59,8 +60,9 @@ func newClientConfig(host string) *clientConfig {
5960
perRPCCredentials: nil,
6061
host: host,
6162
// Default to insecure connection
62-
insecureConnection: true,
63-
transportCredentials: insecure.NewCredentials(),
63+
insecureConnection: true,
64+
transportCredentials: insecure.NewCredentials(),
65+
nopInfoHeaderProvider: nil,
6466
}
6567
return cfg
6668
}
@@ -116,6 +118,10 @@ func NewClient(address string, opts ...Opt) (Client, error) {
116118
// NOTE: not supporting streaming interceptors
117119
}
118120

121+
if cfg.nopInfoHeaderProvider != nil {
122+
grpcOpts = append(grpcOpts, grpc.WithUnaryInterceptor(newHeaderInterceptor(cfg.nopInfoHeaderProvider)))
123+
}
124+
119125
conn, err := grpc.NewClient(address, grpcOpts...)
120126
if err != nil {
121127
return nil, err
@@ -226,6 +232,16 @@ func WithTracerProvider(provider trace.TracerProvider) Opt {
226232
return func(c *clientConfig) { c.tracerProvider = provider }
227233
}
228234

235+
func WithNOPLookup() Opt {
236+
return func(c *clientConfig) {
237+
c.nopInfoHeaderProvider = headerProviderFunc(func(ctx context.Context) (map[string]string, error) {
238+
return map[string]string{
239+
"x-include-nop-info": "true",
240+
}, nil
241+
})
242+
}
243+
}
244+
229245
// newHeaderInterceptor creates a unary interceptor that adds headers from a HeaderProvider
230246
func newHeaderInterceptor(provider HeaderProvider) grpc.UnaryClientInterceptor {
231247
return func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {

0 commit comments

Comments
 (0)