Skip to content

Commit d6154c4

Browse files
authored
chore: remove tailnet v1 API support (coder#14641)
Drops support for v1 of the tailnet API, which was the original coordination protocol where we only sent node updates, never marked them lost or disconnected. v2 of the tailnet API went GA for CLI clients in Coder 2.8.0, so clients older than that would stop working.
1 parent fb3523b commit d6154c4

14 files changed

+506
-1414
lines changed

enterprise/tailnet/multiagent_test.go

Lines changed: 67 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
"cdr.dev/slog/sloggers/slogtest"
1111
"github.com/coder/coder/v2/coderd/database/dbtestutil"
1212
"github.com/coder/coder/v2/enterprise/tailnet"
13-
agpl "github.com/coder/coder/v2/tailnet"
1413
"github.com/coder/coder/v2/tailnet/tailnettest"
14+
agpltest "github.com/coder/coder/v2/tailnet/test"
1515
"github.com/coder/coder/v2/testutil"
1616
)
1717

@@ -35,27 +35,27 @@ func TestPGCoordinator_MultiAgent(t *testing.T) {
3535
require.NoError(t, err)
3636
defer coord1.Close()
3737

38-
agent1 := newTestAgent(t, coord1, "agent1")
39-
defer agent1.close()
40-
agent1.sendNode(&agpl.Node{PreferredDERP: 5})
38+
agent1 := agpltest.NewAgent(ctx, t, coord1, "agent1")
39+
defer agent1.Close(ctx)
40+
agent1.UpdateDERP(5)
4141

4242
ma1 := tailnettest.NewTestMultiAgent(t, coord1)
4343
defer ma1.Close()
4444

45-
ma1.RequireSubscribeAgent(agent1.id)
45+
ma1.RequireSubscribeAgent(agent1.ID)
4646
ma1.RequireEventuallyHasDERPs(ctx, 5)
4747

48-
agent1.sendNode(&agpl.Node{PreferredDERP: 1})
48+
agent1.UpdateDERP(1)
4949
ma1.RequireEventuallyHasDERPs(ctx, 1)
5050

5151
ma1.SendNodeWithDERP(3)
52-
assertEventuallyHasDERPs(ctx, t, agent1, 3)
52+
agent1.AssertEventuallyHasDERP(ma1.ID, 3)
5353

5454
ma1.Close()
55-
require.NoError(t, agent1.close())
55+
agent1.UngracefulDisconnect(ctx)
5656

57-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
58-
assertEventuallyLost(ctx, t, store, agent1.id)
57+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
58+
assertEventuallyLost(ctx, t, store, agent1.ID)
5959
}
6060

6161
func TestPGCoordinator_MultiAgent_CoordClose(t *testing.T) {
@@ -102,28 +102,28 @@ func TestPGCoordinator_MultiAgent_UnsubscribeRace(t *testing.T) {
102102
require.NoError(t, err)
103103
defer coord1.Close()
104104

105-
agent1 := newTestAgent(t, coord1, "agent1")
106-
defer agent1.close()
107-
agent1.sendNode(&agpl.Node{PreferredDERP: 5})
105+
agent1 := agpltest.NewAgent(ctx, t, coord1, "agent1")
106+
defer agent1.Close(ctx)
107+
agent1.UpdateDERP(5)
108108

109109
ma1 := tailnettest.NewTestMultiAgent(t, coord1)
110110
defer ma1.Close()
111111

112-
ma1.RequireSubscribeAgent(agent1.id)
112+
ma1.RequireSubscribeAgent(agent1.ID)
113113
ma1.RequireEventuallyHasDERPs(ctx, 5)
114114

115-
agent1.sendNode(&agpl.Node{PreferredDERP: 1})
115+
agent1.UpdateDERP(1)
116116
ma1.RequireEventuallyHasDERPs(ctx, 1)
117117

118118
ma1.SendNodeWithDERP(3)
119-
assertEventuallyHasDERPs(ctx, t, agent1, 3)
119+
agent1.AssertEventuallyHasDERP(ma1.ID, 3)
120120

121-
ma1.RequireUnsubscribeAgent(agent1.id)
121+
ma1.RequireUnsubscribeAgent(agent1.ID)
122122
ma1.Close()
123-
require.NoError(t, agent1.close())
123+
agent1.UngracefulDisconnect(ctx)
124124

125-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
126-
assertEventuallyLost(ctx, t, store, agent1.id)
125+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
126+
assertEventuallyLost(ctx, t, store, agent1.ID)
127127
}
128128

129129
// TestPGCoordinator_MultiAgent_Unsubscribe tests a single coordinator with a
@@ -147,43 +147,43 @@ func TestPGCoordinator_MultiAgent_Unsubscribe(t *testing.T) {
147147
require.NoError(t, err)
148148
defer coord1.Close()
149149

150-
agent1 := newTestAgent(t, coord1, "agent1")
151-
defer agent1.close()
152-
agent1.sendNode(&agpl.Node{PreferredDERP: 5})
150+
agent1 := agpltest.NewAgent(ctx, t, coord1, "agent1")
151+
defer agent1.Close(ctx)
152+
agent1.UpdateDERP(5)
153153

154154
ma1 := tailnettest.NewTestMultiAgent(t, coord1)
155155
defer ma1.Close()
156156

157-
ma1.RequireSubscribeAgent(agent1.id)
157+
ma1.RequireSubscribeAgent(agent1.ID)
158158
ma1.RequireEventuallyHasDERPs(ctx, 5)
159159

160-
agent1.sendNode(&agpl.Node{PreferredDERP: 1})
160+
agent1.UpdateDERP(1)
161161
ma1.RequireEventuallyHasDERPs(ctx, 1)
162162

163163
ma1.SendNodeWithDERP(3)
164-
assertEventuallyHasDERPs(ctx, t, agent1, 3)
164+
agent1.AssertEventuallyHasDERP(ma1.ID, 3)
165165

166-
ma1.RequireUnsubscribeAgent(agent1.id)
167-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
166+
ma1.RequireUnsubscribeAgent(agent1.ID)
167+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
168168

169169
func() {
170170
ctx, cancel := context.WithTimeout(ctx, testutil.IntervalSlow*3)
171171
defer cancel()
172172
ma1.SendNodeWithDERP(9)
173-
assertNeverHasDERPs(ctx, t, agent1, 9)
173+
agent1.AssertNeverHasDERPs(ctx, ma1.ID, 9)
174174
}()
175175
func() {
176176
ctx, cancel := context.WithTimeout(ctx, testutil.IntervalSlow*3)
177177
defer cancel()
178-
agent1.sendNode(&agpl.Node{PreferredDERP: 8})
178+
agent1.UpdateDERP(8)
179179
ma1.RequireNeverHasDERPs(ctx, 8)
180180
}()
181181

182182
ma1.Close()
183-
require.NoError(t, agent1.close())
183+
agent1.UngracefulDisconnect(ctx)
184184

185-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
186-
assertEventuallyLost(ctx, t, store, agent1.id)
185+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
186+
assertEventuallyLost(ctx, t, store, agent1.ID)
187187
}
188188

189189
// TestPGCoordinator_MultiAgent_MultiCoordinator tests two coordinators with a
@@ -212,27 +212,27 @@ func TestPGCoordinator_MultiAgent_MultiCoordinator(t *testing.T) {
212212
require.NoError(t, err)
213213
defer coord2.Close()
214214

215-
agent1 := newTestAgent(t, coord1, "agent1")
216-
defer agent1.close()
217-
agent1.sendNode(&agpl.Node{PreferredDERP: 5})
215+
agent1 := agpltest.NewAgent(ctx, t, coord1, "agent1")
216+
defer agent1.Close(ctx)
217+
agent1.UpdateDERP(5)
218218

219219
ma1 := tailnettest.NewTestMultiAgent(t, coord2)
220220
defer ma1.Close()
221221

222-
ma1.RequireSubscribeAgent(agent1.id)
222+
ma1.RequireSubscribeAgent(agent1.ID)
223223
ma1.RequireEventuallyHasDERPs(ctx, 5)
224224

225-
agent1.sendNode(&agpl.Node{PreferredDERP: 1})
225+
agent1.UpdateDERP(1)
226226
ma1.RequireEventuallyHasDERPs(ctx, 1)
227227

228228
ma1.SendNodeWithDERP(3)
229-
assertEventuallyHasDERPs(ctx, t, agent1, 3)
229+
agent1.AssertEventuallyHasDERP(ma1.ID, 3)
230230

231231
ma1.Close()
232-
require.NoError(t, agent1.close())
232+
agent1.UngracefulDisconnect(ctx)
233233

234-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
235-
assertEventuallyLost(ctx, t, store, agent1.id)
234+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
235+
assertEventuallyLost(ctx, t, store, agent1.ID)
236236
}
237237

238238
// TestPGCoordinator_MultiAgent_MultiCoordinator_UpdateBeforeSubscribe tests two
@@ -262,27 +262,27 @@ func TestPGCoordinator_MultiAgent_MultiCoordinator_UpdateBeforeSubscribe(t *test
262262
require.NoError(t, err)
263263
defer coord2.Close()
264264

265-
agent1 := newTestAgent(t, coord1, "agent1")
266-
defer agent1.close()
267-
agent1.sendNode(&agpl.Node{PreferredDERP: 5})
265+
agent1 := agpltest.NewAgent(ctx, t, coord1, "agent1")
266+
defer agent1.Close(ctx)
267+
agent1.UpdateDERP(5)
268268

269269
ma1 := tailnettest.NewTestMultiAgent(t, coord2)
270270
defer ma1.Close()
271271

272272
ma1.SendNodeWithDERP(3)
273273

274-
ma1.RequireSubscribeAgent(agent1.id)
274+
ma1.RequireSubscribeAgent(agent1.ID)
275275
ma1.RequireEventuallyHasDERPs(ctx, 5)
276-
assertEventuallyHasDERPs(ctx, t, agent1, 3)
276+
agent1.AssertEventuallyHasDERP(ma1.ID, 3)
277277

278-
agent1.sendNode(&agpl.Node{PreferredDERP: 1})
278+
agent1.UpdateDERP(1)
279279
ma1.RequireEventuallyHasDERPs(ctx, 1)
280280

281281
ma1.Close()
282-
require.NoError(t, agent1.close())
282+
agent1.UngracefulDisconnect(ctx)
283283

284-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
285-
assertEventuallyLost(ctx, t, store, agent1.id)
284+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
285+
assertEventuallyLost(ctx, t, store, agent1.ID)
286286
}
287287

288288
// TestPGCoordinator_MultiAgent_TwoAgents tests three coordinators with a
@@ -317,37 +317,37 @@ func TestPGCoordinator_MultiAgent_TwoAgents(t *testing.T) {
317317
require.NoError(t, err)
318318
defer coord3.Close()
319319

320-
agent1 := newTestAgent(t, coord1, "agent1")
321-
defer agent1.close()
322-
agent1.sendNode(&agpl.Node{PreferredDERP: 5})
320+
agent1 := agpltest.NewAgent(ctx, t, coord1, "agent1")
321+
defer agent1.Close(ctx)
322+
agent1.UpdateDERP(5)
323323

324-
agent2 := newTestAgent(t, coord2, "agent2")
325-
defer agent1.close()
326-
agent2.sendNode(&agpl.Node{PreferredDERP: 6})
324+
agent2 := agpltest.NewAgent(ctx, t, coord2, "agent2")
325+
defer agent2.Close(ctx)
326+
agent2.UpdateDERP(6)
327327

328328
ma1 := tailnettest.NewTestMultiAgent(t, coord3)
329329
defer ma1.Close()
330330

331-
ma1.RequireSubscribeAgent(agent1.id)
331+
ma1.RequireSubscribeAgent(agent1.ID)
332332
ma1.RequireEventuallyHasDERPs(ctx, 5)
333333

334-
agent1.sendNode(&agpl.Node{PreferredDERP: 1})
334+
agent1.UpdateDERP(1)
335335
ma1.RequireEventuallyHasDERPs(ctx, 1)
336336

337-
ma1.RequireSubscribeAgent(agent2.id)
337+
ma1.RequireSubscribeAgent(agent2.ID)
338338
ma1.RequireEventuallyHasDERPs(ctx, 6)
339339

340-
agent2.sendNode(&agpl.Node{PreferredDERP: 2})
340+
agent2.UpdateDERP(2)
341341
ma1.RequireEventuallyHasDERPs(ctx, 2)
342342

343343
ma1.SendNodeWithDERP(3)
344-
assertEventuallyHasDERPs(ctx, t, agent1, 3)
345-
assertEventuallyHasDERPs(ctx, t, agent2, 3)
344+
agent1.AssertEventuallyHasDERP(ma1.ID, 3)
345+
agent2.AssertEventuallyHasDERP(ma1.ID, 3)
346346

347347
ma1.Close()
348-
require.NoError(t, agent1.close())
349-
require.NoError(t, agent2.close())
348+
agent1.UngracefulDisconnect(ctx)
349+
agent2.UngracefulDisconnect(ctx)
350350

351-
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.id)
352-
assertEventuallyLost(ctx, t, store, agent1.id)
351+
assertEventuallyNoClientsForAgent(ctx, t, store, agent1.ID)
352+
assertEventuallyLost(ctx, t, store, agent1.ID)
353353
}

enterprise/tailnet/pgcoord.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package tailnet
33
import (
44
"context"
55
"database/sql"
6-
"net"
76
"strings"
87
"sync"
98
"sync/atomic"
@@ -213,14 +212,6 @@ func (c *pgCoord) Node(id uuid.UUID) *agpl.Node {
213212
return node
214213
}
215214

216-
func (c *pgCoord) ServeClient(conn net.Conn, id uuid.UUID, agent uuid.UUID) error {
217-
return agpl.ServeClientV1(c.ctx, c.logger, c, conn, id, agent)
218-
}
219-
220-
func (c *pgCoord) ServeAgent(conn net.Conn, id uuid.UUID, name string) error {
221-
return agpl.ServeAgentV1(c.ctx, c.logger, c, conn, id, name)
222-
}
223-
224215
func (c *pgCoord) Close() error {
225216
c.logger.Info(c.ctx, "closing coordinator")
226217
c.cancel()

0 commit comments

Comments
 (0)