9
9
"os"
10
10
"path/filepath"
11
11
"runtime"
12
- "time"
13
12
14
13
"cloud.google.com/go/compute/metadata"
15
14
"github.com/spf13/cobra"
@@ -23,7 +22,6 @@ import (
23
22
"github.com/coder/coder/buildinfo"
24
23
"github.com/coder/coder/cli/cliflag"
25
24
"github.com/coder/coder/codersdk"
26
- "github.com/coder/retry"
27
25
)
28
26
29
27
func workspaceAgent () * cobra.Command {
@@ -143,43 +141,6 @@ func workspaceAgent() *cobra.Command {
143
141
}
144
142
}
145
143
146
- if exchangeToken != nil {
147
- logger .Info (cmd .Context (), "exchanging identity token" )
148
- // Agent's can start before resources are returned from the provisioner
149
- // daemon. If there are many resources being provisioned, this time
150
- // could be significant. This is arbitrarily set at an hour to prevent
151
- // tons of idle agents from pinging coderd.
152
- ctx , cancelFunc := context .WithTimeout (cmd .Context (), time .Hour )
153
- defer cancelFunc ()
154
- for retry .New (100 * time .Millisecond , 5 * time .Second ).Wait (ctx ) {
155
- var response codersdk.WorkspaceAgentAuthenticateResponse
156
-
157
- response , err = exchangeToken (ctx )
158
- if err != nil {
159
- logger .Warn (ctx , "authenticate workspace" , slog .F ("method" , auth ), slog .Error (err ))
160
- continue
161
- }
162
- client .SessionToken = response .SessionToken
163
- logger .Info (ctx , "authenticated" , slog .F ("method" , auth ))
164
- break
165
- }
166
- if err != nil {
167
- return xerrors .Errorf ("agent failed to authenticate in time: %w" , err )
168
- }
169
- }
170
-
171
- retryCtx , cancelRetry := context .WithTimeout (cmd .Context (), time .Hour )
172
- defer cancelRetry ()
173
- for retrier := retry .New (100 * time .Millisecond , 5 * time .Second ); retrier .Wait (retryCtx ); {
174
- err := client .PostWorkspaceAgentVersion (retryCtx , version )
175
- if err != nil {
176
- logger .Warn (retryCtx , "post agent version: %w" , slog .Error (err ), slog .F ("version" , version ))
177
- continue
178
- }
179
- logger .Info (retryCtx , "updated agent version" , slog .F ("version" , version ))
180
- break
181
- }
182
-
183
144
executablePath , err := os .Executable ()
184
145
if err != nil {
185
146
return xerrors .Errorf ("getting os executable: %w" , err )
@@ -190,17 +151,24 @@ func workspaceAgent() *cobra.Command {
190
151
}
191
152
192
153
closer := agent .New (agent.Options {
193
- FetchMetadata : client .WorkspaceAgentMetadata ,
194
- Logger : logger ,
154
+ Client : client ,
155
+ Logger : logger ,
156
+ ExchangeToken : func (ctx context.Context ) error {
157
+ if exchangeToken == nil {
158
+ return nil
159
+ }
160
+ resp , err := exchangeToken (ctx )
161
+ if err != nil {
162
+ return err
163
+ }
164
+ client .SessionToken = resp .SessionToken
165
+ return nil
166
+ },
195
167
EnvironmentVariables : map [string ]string {
196
168
// Override the "CODER_AGENT_TOKEN" variable in all
197
169
// shells so "gitssh" works!
198
170
"CODER_AGENT_TOKEN" : client .SessionToken ,
199
171
},
200
- CoordinatorDialer : client .ListenWorkspaceAgentTailnet ,
201
- StatsReporter : client .AgentReportStats ,
202
- WorkspaceAgentApps : client .WorkspaceAgentApps ,
203
- PostWorkspaceAgentAppHealth : client .PostWorkspaceAgentAppHealth ,
204
172
})
205
173
<- cmd .Context ().Done ()
206
174
return closer .Close ()
0 commit comments