diff --git a/agent/agent.go b/agent/agent.go index 0940b3e04f4ba..9973c0bbe54ee 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -88,7 +88,7 @@ type Options struct { } type Client interface { - Listen(ctx context.Context) (drpc.Conn, error) + ConnectRPC(ctx context.Context) (drpc.Conn, error) ReportStats(ctx context.Context, log slog.Logger, statsChan <-chan *agentsdk.Stats, setInterval func(time.Duration)) (io.Closer, error) PostLifecycle(ctx context.Context, state agentsdk.PostLifecycleRequest) error PostMetadata(ctx context.Context, req agentsdk.PostMetadataRequest) error @@ -691,8 +691,8 @@ func (a *agent) run(ctx context.Context) error { } a.sessionToken.Store(&sessionToken) - // Listen returns the dRPC connection we use for the Agent v2+ API - conn, err := a.client.Listen(ctx) + // ConnectRPC returns the dRPC connection we use for the Agent and Tailnet v2+ APIs + conn, err := a.client.ConnectRPC(ctx) if err != nil { return err } diff --git a/agent/agenttest/client.go b/agent/agenttest/client.go index 231318c30d65a..0b7832ac6739a 100644 --- a/agent/agenttest/client.go +++ b/agent/agenttest/client.go @@ -99,7 +99,7 @@ func (c *Client) Close() { c.derpMapOnce.Do(func() { close(c.derpMapUpdates) }) } -func (c *Client) Listen(ctx context.Context) (drpc.Conn, error) { +func (c *Client) ConnectRPC(ctx context.Context) (drpc.Conn, error) { conn, lis := drpcsdk.MemTransportPipe() c.LastWorkspaceAgent = func() { _ = conn.Close() diff --git a/coderd/workspaceagents_test.go b/coderd/workspaceagents_test.go index cd25d1148f2bf..6457fc3771df7 100644 --- a/coderd/workspaceagents_test.go +++ b/coderd/workspaceagents_test.go @@ -319,7 +319,7 @@ func TestWorkspaceAgentLogs(t *testing.T) { }) } -func TestWorkspaceAgentListen(t *testing.T) { +func TestWorkspaceAgentConnectRPC(t *testing.T) { t.Parallel() t.Run("Connect", func(t *testing.T) { @@ -400,7 +400,7 @@ func TestWorkspaceAgentListen(t *testing.T) { agentClient := agentsdk.New(client.URL) agentClient.SetSessionToken(authToken) - _, err = agentClient.Listen(ctx) + _, err = agentClient.ConnectRPC(ctx) require.Error(t, err) var sdkErr *codersdk.Error require.ErrorAs(t, err, &sdkErr) @@ -500,7 +500,7 @@ func TestWorkspaceAgentTailnetDirectDisabled(t *testing.T) { // Verify that the manifest has DisableDirectConnections set to true. agentClient := agentsdk.New(client.URL) agentClient.SetSessionToken(r.AgentToken) - rpc, err := agentClient.Listen(ctx) + rpc, err := agentClient.ConnectRPC(ctx) require.NoError(t, err) defer func() { cErr := rpc.Close() @@ -830,7 +830,7 @@ func TestWorkspaceAgentAppHealth(t *testing.T) { agentClient := agentsdk.New(client.URL) agentClient.SetSessionToken(r.AgentToken) - conn, err := agentClient.Listen(ctx) + conn, err := agentClient.ConnectRPC(ctx) require.NoError(t, err) defer func() { cErr := conn.Close() @@ -1129,7 +1129,7 @@ func TestWorkspaceAgent_Metadata(t *testing.T) { agentClient.SetSessionToken(r.AgentToken) ctx := testutil.Context(t, testutil.WaitMedium) - conn, err := agentClient.Listen(ctx) + conn, err := agentClient.ConnectRPC(ctx) require.NoError(t, err) defer func() { cErr := conn.Close() @@ -1307,7 +1307,7 @@ func TestWorkspaceAgent_Metadata_CatchMemoryLeak(t *testing.T) { agentClient.SetSessionToken(r.AgentToken) ctx, cancel := context.WithCancel(testutil.Context(t, testutil.WaitSuperLong)) - conn, err := agentClient.Listen(ctx) + conn, err := agentClient.ConnectRPC(ctx) require.NoError(t, err) defer func() { cErr := conn.Close() @@ -1669,7 +1669,7 @@ func requireGetManifest(ctx context.Context, t testing.TB, aAPI agentproto.DRPCA } func postStartup(ctx context.Context, t testing.TB, client agent.Client, startup *agentproto.Startup) error { - conn, err := client.Listen(ctx) + conn, err := client.ConnectRPC(ctx) require.NoError(t, err) defer func() { cErr := conn.Close() diff --git a/coderd/workspaceapps/apptest/setup.go b/coderd/workspaceapps/apptest/setup.go index c75bef7f6e51f..d19156cb4c8f1 100644 --- a/coderd/workspaceapps/apptest/setup.go +++ b/coderd/workspaceapps/apptest/setup.go @@ -398,7 +398,7 @@ func createWorkspaceWithApps(t *testing.T, client *codersdk.Client, orgID uuid.U primaryAppHost, err := client.AppHost(appHostCtx) require.NoError(t, err) if primaryAppHost.Host != "" { - rpcConn, err := agentClient.Listen(appHostCtx) + rpcConn, err := agentClient.ConnectRPC(appHostCtx) require.NoError(t, err) aAPI := agentproto.NewDRPCAgentClient(rpcConn) manifest, err := aAPI.GetManifest(appHostCtx, &agentproto.GetManifestRequest{}) diff --git a/codersdk/agentsdk/agentsdk.go b/codersdk/agentsdk/agentsdk.go index 0a8f5e23e9e22..bdbf61a4ad1f2 100644 --- a/codersdk/agentsdk/agentsdk.go +++ b/codersdk/agentsdk/agentsdk.go @@ -171,9 +171,8 @@ func (c *Client) RewriteDERPMap(derpMap *tailcfg.DERPMap) { } } -// Listen connects to the workspace agent API WebSocket -// that handles connection negotiation. -func (c *Client) Listen(ctx context.Context) (drpc.Conn, error) { +// ConnectRPC connects to the workspace agent API and tailnet API +func (c *Client) ConnectRPC(ctx context.Context) (drpc.Conn, error) { rpcURL, err := c.SDK.URL.Parse("/api/v2/workspaceagents/me/rpc") if err != nil { return nil, xerrors.Errorf("parse url: %w", err) @@ -210,7 +209,7 @@ func (c *Client) Listen(ctx context.Context) (drpc.Conn, error) { netConn := &closeNetConn{ Conn: wsNetConn, closeFunc: func() { - _ = conn.Close(websocket.StatusGoingAway, "Listen closed") + _ = conn.Close(websocket.StatusGoingAway, "ConnectRPC closed") }, } config := yamux.DefaultConfig() diff --git a/enterprise/coderd/appearance_test.go b/enterprise/coderd/appearance_test.go index a200e2bfd7d19..7cc76ae1763fc 100644 --- a/enterprise/coderd/appearance_test.go +++ b/enterprise/coderd/appearance_test.go @@ -176,7 +176,7 @@ func TestServiceBanners(t *testing.T) { } func requireGetServiceBanner(ctx context.Context, t *testing.T, client *agentsdk.Client) codersdk.ServiceBannerConfig { - cc, err := client.Listen(ctx) + cc, err := client.ConnectRPC(ctx) require.NoError(t, err) defer func() { _ = cc.Close()