mirror of
https://github.com/juanfont/headscale.git
synced 2026-10-18 12:36:32 +09:00
integration/tsic: drop unused watchIPN
ipn.Notify.NetMap is gone upstream; nothing called it.
This commit is contained in:
1 parent
627145644e
commit
89be098f76
1 file changed
-95
@@ -1134,101 +1134,6 @@ func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error) {
|
||||
return nm, nil
|
||||
}
|
||||
|
||||
// Netmap returns the current Netmap ([netmap.NetworkMap]) of the Tailscale instance.
|
||||
// This implementation is based on getting the netmap from `tailscale debug watch-ipn`
|
||||
// as there seem to be some weirdness omitting endpoint and DERP info if we use
|
||||
// Patch updates.
|
||||
// This implementation works on all supported versions.
|
||||
// func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error) {
|
||||
// // watch-ipn will only give an update if something is happening,
|
||||
// // since we send keep alives, the worst case for this should be
|
||||
// // 1 minute, but set a slightly more conservative time.
|
||||
// ctx, _ := context.WithTimeout(context.Background(), 3*time.Minute)
|
||||
|
||||
// notify, err := t.watchIPN(ctx)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// if notify.NetMap == nil {
|
||||
// return nil, fmt.Errorf("no netmap present in ipn.Notify")
|
||||
// }
|
||||
|
||||
// return notify.NetMap, nil
|
||||
// }
|
||||
|
||||
// watchIPN watches `tailscale debug watch-ipn` for a [ipn.Notify] object until
|
||||
// it gets one that has a [netmap.NetworkMap].
|
||||
//
|
||||
//nolint:unused
|
||||
func (t *TailscaleInContainer) watchIPN(ctx context.Context) (*ipn.Notify, error) {
|
||||
pr, pw := io.Pipe()
|
||||
|
||||
type result struct {
|
||||
notify *ipn.Notify
|
||||
err error
|
||||
}
|
||||
|
||||
resultChan := make(chan result, 1)
|
||||
|
||||
// There is no good way to kill the goroutine with watch-ipn,
|
||||
// so make a nice func to send a kill command to issue when
|
||||
// we are done.
|
||||
killWatcher := func() {
|
||||
stdout, stderr, err := t.Execute([]string{
|
||||
"/bin/sh", "-c", `kill $(ps aux | grep "tailscale debug watch-ipn" | grep -v grep | awk '{print $1}') || true`,
|
||||
})
|
||||
if err != nil {
|
||||
log.Printf("killing tailscale watcher, \nstdout: %s\nstderr: %s\nerr: %s", stdout, stderr, err)
|
||||
}
|
||||
}
|
||||
|
||||
go func() {
|
||||
_, _ = t.container.Exec(
|
||||
// Prior to 1.56, the initial "Connected." message was printed to stdout,
|
||||
// filter out with grep.
|
||||
[]string{"/bin/sh", "-c", `tailscale debug watch-ipn | grep -v "Connected."`},
|
||||
dockertest.ExecOptions{
|
||||
// The interesting output is sent to stdout, so ignore stderr.
|
||||
StdOut: pw,
|
||||
// StdErr: pw,
|
||||
},
|
||||
)
|
||||
}()
|
||||
|
||||
go func() {
|
||||
decoder := json.NewDecoder(pr)
|
||||
for decoder.More() {
|
||||
var notify ipn.Notify
|
||||
|
||||
err := decoder.Decode(¬ify)
|
||||
if err != nil {
|
||||
resultChan <- result{nil, fmt.Errorf("parse notify: %w", err)}
|
||||
}
|
||||
|
||||
if notify.NetMap != nil { //nolint:staticcheck // SA1019: NetMap is still populated on the platforms our integration containers run; migrating to InitialStatus/PeerChanges is a separate change
|
||||
resultChan <- result{¬ify, nil}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
killWatcher()
|
||||
|
||||
return nil, ctx.Err()
|
||||
|
||||
case result := <-resultChan:
|
||||
killWatcher()
|
||||
|
||||
if result.err != nil {
|
||||
return nil, result.err
|
||||
}
|
||||
|
||||
return result.notify, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (t *TailscaleInContainer) DebugDERPRegion(region string) (*ipnstate.DebugDERPRegionReport, error) {
|
||||
if !util.TailscaleVersionNewerOrEqual("1.34", t.version) {
|
||||
panic("tsic.DebugDERPRegion() called with unsupported version: " + t.version)
|
||||
|
||||
Reference in new issue
Block a user