mirror of
https://github.com/tailscale/tailscale.git
synced 2025-07-31 00:03:47 +00:00
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
![]() |
// Copyright (c) Tailscale Inc & AUTHORS
|
||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
||
|
// Package localclient provides an interface for all the local.Client methods
|
||
|
// kube needs to use, so that we can easily mock it in tests.
|
||
|
package localclient
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"io"
|
||
|
|
||
|
"tailscale.com/client/local"
|
||
|
"tailscale.com/ipn"
|
||
|
)
|
||
|
|
||
|
// LocalClient is roughly a subset of the local.Client struct's methods, used
|
||
|
// for easier testing.
|
||
|
type LocalClient interface {
|
||
|
WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (IPNBusWatcher, error)
|
||
|
CertIssuer
|
||
|
}
|
||
|
|
||
|
// IPNBusWatcher is local.IPNBusWatcher's methods restated in an interface to
|
||
|
// allow for easier mocking in tests.
|
||
|
type IPNBusWatcher interface {
|
||
|
io.Closer
|
||
|
Next() (ipn.Notify, error)
|
||
|
}
|
||
|
|
||
|
type CertIssuer interface {
|
||
|
CertPair(context.Context, string) ([]byte, []byte, error)
|
||
|
}
|
||
|
|
||
|
// New returns a LocalClient that wraps the provided local.Client.
|
||
|
func New(lc *local.Client) LocalClient {
|
||
|
return &localClient{lc: lc}
|
||
|
}
|
||
|
|
||
|
type localClient struct {
|
||
|
lc *local.Client
|
||
|
}
|
||
|
|
||
|
func (l *localClient) WatchIPNBus(ctx context.Context, mask ipn.NotifyWatchOpt) (IPNBusWatcher, error) {
|
||
|
return l.lc.WatchIPNBus(ctx, mask)
|
||
|
}
|
||
|
|
||
|
func (l *localClient) CertPair(ctx context.Context, domain string) ([]byte, []byte, error) {
|
||
|
return l.lc.CertPair(ctx, domain)
|
||
|
}
|