Skip to content

Commit c4e2f81

Browse files
committed
pkg/adaptation: add support for extra ttrpc options.
Add WithTTRPCOptions() which can be used to pass extra client and server options to ttrpc. Signed-off-by: Krisztian Litkey <[email protected]>
1 parent 6f5a4d2 commit c4e2f81

2 files changed

Lines changed: 23 additions & 7 deletions

File tree

pkg/adaptation/adaptation.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929

3030
"github.com/containerd/nri/pkg/api"
3131
"github.com/containerd/nri/pkg/log"
32+
"github.com/containerd/ttrpc"
3233
)
3334

3435
const (
@@ -60,6 +61,8 @@ type Adaptation struct {
6061
dontListen bool
6162
syncFn SyncFn
6263
updateFn UpdateFn
64+
clientOpts []ttrpc.ClientOpts
65+
serverOpts []ttrpc.ServerOpt
6366
listener net.Listener
6467
plugins []*plugin
6568
}
@@ -104,6 +107,15 @@ func WithDisabledExternalConnections() Option {
104107
}
105108
}
106109

110+
// WithTTRPCOptions sets extra client and server options to use for ttrpc.
111+
func WithTTRPCOptions(clientOpts []ttrpc.ClientOpts, serverOpts []ttrpc.ServerOpt) Option {
112+
return func(r *Adaptation) error {
113+
r.clientOpts = append(r.clientOpts, clientOpts...)
114+
r.serverOpts = append(r.serverOpts, serverOpts...)
115+
return nil
116+
}
117+
}
118+
107119
// New creates a new NRI Runtime.
108120
func New(name, version string, syncFn SyncFn, updateFn UpdateFn, opts ...Option) (*Adaptation, error) {
109121
var err error

pkg/adaptation/plugin.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -198,20 +198,24 @@ func (p *plugin) connect(conn stdnet.Conn) (retErr error) {
198198
if err != nil {
199199
return fmt.Errorf("failed to mux plugin connection for plugin %q: %w", p.name(), err)
200200
}
201-
rpcc := ttrpc.NewClient(pconn, ttrpc.WithOnClose(
202-
func() {
203-
log.Infof(noCtx, "connection to plugin %q closed", p.name())
204-
close(p.closeC)
205-
p.close()
206-
}))
201+
202+
clientOpts := []ttrpc.ClientOpts{
203+
ttrpc.WithOnClose(
204+
func() {
205+
log.Infof(noCtx, "connection to plugin %q closed", p.name())
206+
close(p.closeC)
207+
p.close()
208+
}),
209+
}
210+
rpcc := ttrpc.NewClient(pconn, append(clientOpts, p.r.clientOpts...)...)
207211
defer func() {
208212
if retErr != nil {
209213
rpcc.Close()
210214
}
211215
}()
212216
stub := api.NewPluginClient(rpcc)
213217

214-
rpcs, err := ttrpc.NewServer()
218+
rpcs, err := ttrpc.NewServer(p.r.serverOpts...)
215219
if err != nil {
216220
return fmt.Errorf("failed to create ttrpc server for plugin %q: %w", p.name(), err)
217221
}

0 commit comments

Comments
 (0)