Skip to content

Commit 9747757

Browse files
committed
chore: rename AgentConn to WorkspaceAgentConn
The codersdk was becoming bloated with consts for the workspace agent that made no sense to a reader. `Tailnet*` is an example of these consts.
1 parent 2312bc4 commit 9747757

22 files changed

+205
-184
lines changed

agent/agent.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ func (a *agent) trackConnGoroutine(fn func()) error {
373373

374374
func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_ *tailnet.Conn, err error) {
375375
network, err := tailnet.NewConn(&tailnet.Options{
376-
Addresses: []netip.Prefix{netip.PrefixFrom(codersdk.TailnetIP, 128)},
376+
Addresses: []netip.Prefix{netip.PrefixFrom(codersdk.WorkspaceAgentIP, 128)},
377377
DERPMap: derpMap,
378378
Logger: a.logger.Named("tailnet"),
379379
EnableTrafficStats: true,
@@ -387,7 +387,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
387387
}
388388
}()
389389

390-
sshListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.TailnetSSHPort))
390+
sshListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.WorkspaceAgentSSHPort))
391391
if err != nil {
392392
return nil, xerrors.Errorf("listen on the ssh port: %w", err)
393393
}
@@ -419,7 +419,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
419419
return nil, err
420420
}
421421

422-
reconnectingPTYListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.TailnetReconnectingPTYPort))
422+
reconnectingPTYListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.WorkspaceAgentReconnectingPTYPort))
423423
if err != nil {
424424
return nil, xerrors.Errorf("listen for reconnecting pty: %w", err)
425425
}
@@ -450,7 +450,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
450450
if err != nil {
451451
continue
452452
}
453-
var msg codersdk.ReconnectingPTYInit
453+
var msg codersdk.WorkspaceAgentReconnectingPTYInit
454454
err = json.Unmarshal(data, &msg)
455455
if err != nil {
456456
continue
@@ -463,7 +463,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
463463
return nil, err
464464
}
465465

466-
speedtestListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.TailnetSpeedtestPort))
466+
speedtestListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.WorkspaceAgentSpeedtestPort))
467467
if err != nil {
468468
return nil, xerrors.Errorf("listen for speedtest: %w", err)
469469
}
@@ -491,7 +491,7 @@ func (a *agent) createTailnet(ctx context.Context, derpMap *tailcfg.DERPMap) (_
491491
return nil, err
492492
}
493493

494-
statisticsListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.TailnetStatisticsPort))
494+
statisticsListener, err := network.Listen("tcp", ":"+strconv.Itoa(codersdk.WorkspaceAgentStatisticsPort))
495495
if err != nil {
496496
return nil, xerrors.Errorf("listen for statistics: %w", err)
497497
}
@@ -918,7 +918,7 @@ func (a *agent) handleSSHSession(session ssh.Session) (retErr error) {
918918
return cmd.Wait()
919919
}
920920

921-
func (a *agent) handleReconnectingPTY(ctx context.Context, logger slog.Logger, msg codersdk.ReconnectingPTYInit, conn net.Conn) (retErr error) {
921+
func (a *agent) handleReconnectingPTY(ctx context.Context, logger slog.Logger, msg codersdk.WorkspaceAgentReconnectingPTYInit, conn net.Conn) (retErr error) {
922922
defer conn.Close()
923923

924924
connectionID := uuid.NewString()

agent/agent_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@ func (c closeFunc) Close() error {
10771077
}
10781078

10791079
func setupAgent(t *testing.T, metadata codersdk.WorkspaceAgentMetadata, ptyTimeout time.Duration) (
1080-
*codersdk.AgentConn,
1080+
*codersdk.WorkspaceAgentConn,
10811081
*client,
10821082
<-chan *codersdk.AgentStats,
10831083
afero.Fs,
@@ -1131,7 +1131,7 @@ func setupAgent(t *testing.T, metadata codersdk.WorkspaceAgentMetadata, ptyTimeo
11311131
return conn.UpdateNodes(node)
11321132
})
11331133
conn.SetNodeCallback(sendNode)
1134-
return &codersdk.AgentConn{
1134+
return &codersdk.WorkspaceAgentConn{
11351135
Conn: conn,
11361136
}, c, statsCh, fs
11371137
}

agent/ports_supported.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@ import (
1111
"github.com/coder/coder/codersdk"
1212
)
1313

14-
func (lp *listeningPortsHandler) getListeningPorts() ([]codersdk.ListeningPort, error) {
14+
func (lp *listeningPortsHandler) getListeningPorts() ([]codersdk.WorkspaceAgentListeningPort, error) {
1515
lp.mut.Lock()
1616
defer lp.mut.Unlock()
1717

1818
if time.Since(lp.mtime) < time.Second {
1919
// copy
20-
ports := make([]codersdk.ListeningPort, len(lp.ports))
20+
ports := make([]codersdk.WorkspaceAgentListeningPort, len(lp.ports))
2121
copy(ports, lp.ports)
2222
return ports, nil
2323
}
@@ -30,9 +30,9 @@ func (lp *listeningPortsHandler) getListeningPorts() ([]codersdk.ListeningPort,
3030
}
3131

3232
seen := make(map[uint16]struct{}, len(tabs))
33-
ports := []codersdk.ListeningPort{}
33+
ports := []codersdk.WorkspaceAgentListeningPort{}
3434
for _, tab := range tabs {
35-
if tab.LocalAddr == nil || tab.LocalAddr.Port < codersdk.MinimumListeningPort {
35+
if tab.LocalAddr == nil || tab.LocalAddr.Port < codersdk.WorkspaceAgentMinimumListeningPort {
3636
continue
3737
}
3838

@@ -47,9 +47,9 @@ func (lp *listeningPortsHandler) getListeningPorts() ([]codersdk.ListeningPort,
4747
if tab.Process != nil {
4848
procName = tab.Process.Name
4949
}
50-
ports = append(ports, codersdk.ListeningPort{
50+
ports = append(ports, codersdk.WorkspaceAgentListeningPort{
5151
ProcessName: procName,
52-
Network: codersdk.ListeningPortNetworkTCP,
52+
Network: "tcp",
5353
Port: tab.LocalAddr.Port,
5454
})
5555
}
@@ -58,7 +58,7 @@ func (lp *listeningPortsHandler) getListeningPorts() ([]codersdk.ListeningPort,
5858
lp.mtime = time.Now()
5959

6060
// copy
61-
ports = make([]codersdk.ListeningPort, len(lp.ports))
61+
ports = make([]codersdk.WorkspaceAgentListeningPort, len(lp.ports))
6262
copy(ports, lp.ports)
6363
return ports, nil
6464
}

agent/statsendpoint.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func (*agent) statisticsHandler() http.Handler {
2727

2828
type listeningPortsHandler struct {
2929
mut sync.Mutex
30-
ports []codersdk.ListeningPort
30+
ports []codersdk.WorkspaceAgentListeningPort
3131
mtime time.Time
3232
}
3333

@@ -43,7 +43,7 @@ func (lp *listeningPortsHandler) handler(rw http.ResponseWriter, r *http.Request
4343
return
4444
}
4545

46-
httpapi.Write(r.Context(), rw, http.StatusOK, codersdk.ListeningPortsResponse{
46+
httpapi.Write(r.Context(), rw, http.StatusOK, codersdk.WorkspaceAgentListeningPortsResponse{
4747
Ports: ports,
4848
})
4949
}

cli/portforward.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ func portForward() *cobra.Command {
156156
return cmd
157157
}
158158

159-
func listenAndPortForward(ctx context.Context, cmd *cobra.Command, conn *codersdk.AgentConn, wg *sync.WaitGroup, spec portForwardSpec) (net.Listener, error) {
159+
func listenAndPortForward(ctx context.Context, cmd *cobra.Command, conn *codersdk.WorkspaceAgentConn, wg *sync.WaitGroup, spec portForwardSpec) (net.Listener, error) {
160160
_, _ = fmt.Fprintf(cmd.OutOrStderr(), "Forwarding '%v://%v' locally to '%v://%v' in the workspace\n", spec.listenNetwork, spec.listenAddress, spec.dialNetwork, spec.dialAddress)
161161

162162
var (

cli/root.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"flag"
66
"fmt"
77
"io"
8+
"net"
89
"net/http"
910
"net/url"
1011
"os"
@@ -590,7 +591,7 @@ func checkVersions(cmd *cobra.Command, client *codersdk.Client) error {
590591
clientVersion := buildinfo.Version()
591592
info, err := client.BuildInfo(ctx)
592593
// Avoid printing errors that are connection-related.
593-
if codersdk.IsConnectionErr(err) {
594+
if isConnectionError(err) {
594595
return nil
595596
}
596597

@@ -735,3 +736,16 @@ func dumpHandler(ctx context.Context) {
735736
}
736737
}
737738
}
739+
740+
// IiConnectionErr is a convenience function for checking if the source of an
741+
// error is due to a 'connection refused', 'no such host', etc.
742+
func isConnectionError(err error) bool {
743+
var (
744+
// E.g. no such host
745+
dnsErr *net.DNSError
746+
// Eg. connection refused
747+
opErr *net.OpError
748+
)
749+
750+
return xerrors.As(err, &dnsErr) || xerrors.As(err, &opErr)
751+
}

cli/scaletest.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ It is recommended that all rate limits are disabled on the server before running
668668
if runCommand != "" {
669669
config.ReconnectingPTY = &reconnectingpty.Config{
670670
// AgentID is set by the test automatically.
671-
Init: codersdk.ReconnectingPTYInit{
671+
Init: codersdk.WorkspaceAgentReconnectingPTYInit{
672672
ID: uuid.Nil,
673673
Height: 24,
674674
Width: 80,

cli/vscodessh.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ type sshNetworkStats struct {
184184
DownloadBytesSec int64 `json:"download_bytes_sec"`
185185
}
186186

187-
func collectNetworkStats(ctx context.Context, agentConn *codersdk.AgentConn, lastCollected time.Time) (*sshNetworkStats, error) {
187+
func collectNetworkStats(ctx context.Context, agentConn *codersdk.WorkspaceAgentConn, lastCollected time.Time) (*sshNetworkStats, error) {
188188
latency, p2p, err := agentConn.Ping(ctx)
189189
if err != nil {
190190
return nil, err

coderd/workspaceagents.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -382,15 +382,15 @@ func (api *API) workspaceAgentListeningPorts(rw http.ResponseWriter, r *http.Req
382382

383383
// Filter out ports that are globally blocked, in-use by applications, or
384384
// common non-HTTP ports such as databases, FTP, SSH, etc.
385-
filteredPorts := make([]codersdk.ListeningPort, 0, len(portsResponse.Ports))
385+
filteredPorts := make([]codersdk.WorkspaceAgentListeningPort, 0, len(portsResponse.Ports))
386386
for _, port := range portsResponse.Ports {
387-
if port.Port < codersdk.MinimumListeningPort {
387+
if port.Port < codersdk.WorkspaceAgentMinimumListeningPort {
388388
continue
389389
}
390390
if _, ok := appPorts[port.Port]; ok {
391391
continue
392392
}
393-
if _, ok := codersdk.IgnoredListeningPorts[port.Port]; ok {
393+
if _, ok := codersdk.WorkspaceAgentIgnoredListeningPorts[port.Port]; ok {
394394
continue
395395
}
396396
filteredPorts = append(filteredPorts, port)
@@ -400,7 +400,7 @@ func (api *API) workspaceAgentListeningPorts(rw http.ResponseWriter, r *http.Req
400400
httpapi.Write(ctx, rw, http.StatusOK, portsResponse)
401401
}
402402

403-
func (api *API) dialWorkspaceAgentTailnet(r *http.Request, agentID uuid.UUID) (*codersdk.AgentConn, error) {
403+
func (api *API) dialWorkspaceAgentTailnet(r *http.Request, agentID uuid.UUID) (*codersdk.WorkspaceAgentConn, error) {
404404
clientConn, serverConn := net.Pipe()
405405

406406
derpMap := api.DERPMap.Clone()
@@ -467,7 +467,7 @@ func (api *API) dialWorkspaceAgentTailnet(r *http.Request, agentID uuid.UUID) (*
467467
_ = conn.Close()
468468
}
469469
}()
470-
return &codersdk.AgentConn{
470+
return &codersdk.WorkspaceAgentConn{
471471
Conn: conn,
472472
CloseFunc: func() {
473473
_ = clientConn.Close()

coderd/workspaceagents_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -517,10 +517,10 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
517517
}
518518

519519
willFilterPort := func(port int) bool {
520-
if port < codersdk.MinimumListeningPort || port > 65535 {
520+
if port < codersdk.WorkspaceAgentMinimumListeningPort || port > 65535 {
521521
return true
522522
}
523-
if _, ok := codersdk.IgnoredListeningPorts[uint16(port)]; ok {
523+
if _, ok := codersdk.WorkspaceAgentIgnoredListeningPorts[uint16(port)]; ok {
524524
return true
525525
}
526526

@@ -560,7 +560,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
560560
port uint16
561561
)
562562
require.Eventually(t, func() bool {
563-
for ignoredPort := range codersdk.IgnoredListeningPorts {
563+
for ignoredPort := range codersdk.WorkspaceAgentIgnoredListeningPorts {
564564
if ignoredPort < 1024 || ignoredPort == 5432 {
565565
continue
566566
}
@@ -615,7 +615,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
615615
}
616616
)
617617
for _, port := range res.Ports {
618-
if port.Network == codersdk.ListeningPortNetworkTCP {
618+
if port.Network == "tcp" {
619619
if val, ok := expected[port.Port]; ok {
620620
if val {
621621
t.Fatalf("expected to find TCP port %d only once in response", port.Port)
@@ -637,7 +637,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
637637
require.NoError(t, err)
638638

639639
for _, port := range res.Ports {
640-
if port.Network == codersdk.ListeningPortNetworkTCP && port.Port == lPort {
640+
if port.Network == "tcp" && port.Port == lPort {
641641
t.Fatalf("expected to not find TCP port %d in response", lPort)
642642
}
643643
}
@@ -667,7 +667,7 @@ func TestWorkspaceAgentListeningPorts(t *testing.T) {
667667

668668
sawCoderdPort := false
669669
for _, port := range res.Ports {
670-
if port.Network == codersdk.ListeningPortNetworkTCP {
670+
if port.Network == "tcp" {
671671
if port.Port == appLPort {
672672
t.Fatalf("expected to not find TCP port (app port) %d in response", appLPort)
673673
}

coderd/workspaceapps.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -862,9 +862,9 @@ func (api *API) proxyWorkspaceApplication(proxyApp proxyApplication, rw http.Res
862862
return
863863
}
864864

865-
if portInt < codersdk.MinimumListeningPort {
865+
if portInt < codersdk.WorkspaceAgentMinimumListeningPort {
866866
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
867-
Message: fmt.Sprintf("Application port %d is not permitted. Coder reserves ports less than %d for internal use.", portInt, codersdk.MinimumListeningPort),
867+
Message: fmt.Sprintf("Application port %d is not permitted. Coder reserves ports less than %d for internal use.", portInt, codersdk.WorkspaceAgentMinimumListeningPort),
868868
})
869869
return
870870
}

coderd/workspaceapps_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ func TestWorkspaceAppsProxySubdomain(t *testing.T) {
858858
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
859859
defer cancel()
860860

861-
port := uint16(codersdk.MinimumListeningPort - 1)
861+
port := uint16(codersdk.WorkspaceAgentMinimumListeningPort - 1)
862862
resp, err := requestWithRetries(ctx, t, client, http.MethodGet, proxyURL(t, client, port, "/", proxyTestAppQuery), nil)
863863
require.NoError(t, err)
864864
defer resp.Body.Close()

coderd/wsconncache/wsconncache.go

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ func New(dialer Dialer, inactiveTimeout time.Duration) *Cache {
3232
}
3333

3434
// Dialer creates a new agent connection by ID.
35-
type Dialer func(r *http.Request, id uuid.UUID) (*codersdk.AgentConn, error)
35+
type Dialer func(r *http.Request, id uuid.UUID) (*codersdk.WorkspaceAgentConn, error)
3636

3737
// Conn wraps an agent connection with a reusable HTTP transport.
3838
type Conn struct {
39-
*codersdk.AgentConn
39+
*codersdk.WorkspaceAgentConn
4040

4141
locks atomic.Uint64
4242
timeoutMutex sync.Mutex
@@ -49,8 +49,8 @@ func (c *Conn) HTTPTransport() *http.Transport {
4949
return c.transport
5050
}
5151

52-
// CloseWithError ends the HTTP transport if exists, and closes the agent.
53-
func (c *Conn) CloseWithError(err error) error {
52+
// Close ends the HTTP transport if exists, and closes the agent.
53+
func (c *Conn) Close() error {
5454
if c.transport != nil {
5555
c.transport.CloseIdleConnections()
5656
}
@@ -59,7 +59,7 @@ func (c *Conn) CloseWithError(err error) error {
5959
if c.timeout != nil {
6060
c.timeout.Stop()
6161
}
62-
return c.AgentConn.CloseWithError(err)
62+
return c.WorkspaceAgentConn.Close()
6363
}
6464

6565
type Cache struct {
@@ -108,24 +108,20 @@ func (c *Cache) Acquire(r *http.Request, id uuid.UUID) (*Conn, func(), error) {
108108
transport := defaultTransport.Clone()
109109
transport.DialContext = agentConn.DialContext
110110
conn := &Conn{
111-
AgentConn: agentConn,
112-
timeoutCancel: timeoutCancelFunc,
113-
transport: transport,
111+
WorkspaceAgentConn: agentConn,
112+
timeoutCancel: timeoutCancelFunc,
113+
transport: transport,
114114
}
115115
go func() {
116116
defer c.closeGroup.Done()
117-
var err error
118117
select {
119118
case <-timeoutCtx.Done():
120-
err = xerrors.New("cache timeout")
121119
case <-c.closed:
122-
err = xerrors.New("cache closed")
123120
case <-conn.Closed():
124121
}
125-
126122
c.connMap.Delete(id.String())
127123
c.connGroup.Forget(id.String())
128-
_ = conn.CloseWithError(err)
124+
_ = conn.Close()
129125
}()
130126
return conn, nil
131127
})

0 commit comments

Comments
 (0)