Skip to content

Commit 1f0efb4

Browse files
committed
refactor provisionerd to use new protocol
Signed-off-by: Spike Curtis <spike@coder.com>
1 parent a29592a commit 1f0efb4

File tree

6 files changed

+415
-498
lines changed

6 files changed

+415
-498
lines changed

cli/server.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ import (
4141
"github.com/prometheus/client_golang/prometheus"
4242
"github.com/prometheus/client_golang/prometheus/collectors"
4343
"github.com/prometheus/client_golang/prometheus/promhttp"
44-
"github.com/spf13/afero"
4544
"go.opentelemetry.io/otel/trace"
4645
"golang.org/x/mod/semver"
4746
"golang.org/x/oauth2"
@@ -1304,7 +1303,10 @@ func newProvisionerDaemon(
13041303
defer wg.Done()
13051304
defer cancel()
13061305

1307-
err := echo.Serve(ctx, afero.NewOsFs(), &provisionersdk.ServeOptions{Listener: echoServer})
1306+
err := echo.Serve(ctx, &provisionersdk.ServeOptions{
1307+
Listener: echoServer,
1308+
WorkDirectory: workDir,
1309+
})
13081310
if err != nil {
13091311
select {
13101312
case errCh <- err:
@@ -1336,10 +1338,11 @@ func newProvisionerDaemon(
13361338

13371339
err := terraform.Serve(ctx, &terraform.ServeOptions{
13381340
ServeOptions: &provisionersdk.ServeOptions{
1339-
Listener: terraformServer,
1341+
Listener: terraformServer,
1342+
Logger: logger.Named("terraform"),
1343+
WorkDirectory: workDir,
13401344
},
13411345
CachePath: tfDir,
1342-
Logger: logger.Named("terraform"),
13431346
Tracer: tracer,
13441347
})
13451348
if err != nil && !xerrors.Is(err, context.Canceled) {
@@ -1366,7 +1369,6 @@ func newProvisionerDaemon(
13661369
UpdateInterval: time.Second,
13671370
ForceCancelInterval: cfg.Provisioner.ForceCancelInterval.Value(),
13681371
Provisioners: provisioners,
1369-
WorkDirectory: workDir,
13701372
TracerProvider: coderAPI.TracerProvider,
13711373
Metrics: &metrics,
13721374
}), nil

coderd/coderdtest/coderdtest.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import (
3737
"github.com/google/uuid"
3838
"github.com/moby/moby/pkg/namesgenerator"
3939
"github.com/prometheus/client_golang/prometheus"
40-
"github.com/spf13/afero"
4140
"github.com/stretchr/testify/assert"
4241
"github.com/stretchr/testify/require"
4342
"golang.org/x/oauth2"
@@ -469,26 +468,24 @@ func NewProvisionerDaemon(t testing.TB, coderAPI *coderd.API) io.Closer {
469468
_ = echoServer.Close()
470469
cancelFunc()
471470
})
472-
fs := afero.NewMemMapFs()
473471
go func() {
474-
err := echo.Serve(ctx, fs, &provisionersdk.ServeOptions{
475-
Listener: echoServer,
472+
err := echo.Serve(ctx, &provisionersdk.ServeOptions{
473+
Listener: echoServer,
474+
WorkDirectory: t.TempDir(),
476475
})
477476
assert.NoError(t, err)
478477
}()
479478

480479
closer := provisionerd.New(func(ctx context.Context) (provisionerdproto.DRPCProvisionerDaemonClient, error) {
481480
return coderAPI.CreateInMemoryProvisionerDaemon(ctx, 0)
482481
}, &provisionerd.Options{
483-
Filesystem: fs,
484482
Logger: coderAPI.Logger.Named("provisionerd").Leveled(slog.LevelDebug),
485483
JobPollInterval: 50 * time.Millisecond,
486484
UpdateInterval: 250 * time.Millisecond,
487485
ForceCancelInterval: time.Second,
488486
Provisioners: provisionerd.Provisioners{
489487
string(database.ProvisionerTypeEcho): sdkproto.NewDRPCProvisionerClient(echoClient),
490488
},
491-
WorkDirectory: t.TempDir(),
492489
})
493490
t.Cleanup(func() {
494491
_ = closer.Close()
@@ -506,11 +503,11 @@ func NewExternalProvisionerDaemon(t *testing.T, client *codersdk.Client, org uui
506503
cancelFunc()
507504
<-serveDone
508505
})
509-
fs := afero.NewMemMapFs()
510506
go func() {
511507
defer close(serveDone)
512-
err := echo.Serve(ctx, fs, &provisionersdk.ServeOptions{
513-
Listener: echoServer,
508+
err := echo.Serve(ctx, &provisionersdk.ServeOptions{
509+
Listener: echoServer,
510+
WorkDirectory: t.TempDir(),
514511
})
515512
assert.NoError(t, err)
516513
}()
@@ -522,15 +519,13 @@ func NewExternalProvisionerDaemon(t *testing.T, client *codersdk.Client, org uui
522519
Tags: tags,
523520
})
524521
}, &provisionerd.Options{
525-
Filesystem: fs,
526522
Logger: slogtest.Make(t, nil).Named("provisionerd").Leveled(slog.LevelDebug),
527523
JobPollInterval: 50 * time.Millisecond,
528524
UpdateInterval: 250 * time.Millisecond,
529525
ForceCancelInterval: time.Second,
530526
Provisioners: provisionerd.Provisioners{
531527
string(database.ProvisionerTypeEcho): sdkproto.NewDRPCProvisionerClient(echoClient),
532528
},
533-
WorkDirectory: t.TempDir(),
534529
})
535530
t.Cleanup(func() {
536531
_ = closer.Close()

enterprise/cli/provisionerdaemons.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ func (r *RootCmd) provisionerDaemonStart() *clibase.Cmd {
7070
return xerrors.Errorf("mkdir %q: %w", cacheDir, err)
7171
}
7272

73+
tempDir, err := os.MkdirTemp("", "provisionerd")
74+
if err != nil {
75+
return err
76+
}
77+
7378
terraformClient, terraformServer := provisionersdk.MemTransportPipe()
7479
go func() {
7580
<-ctx.Done()
@@ -84,10 +89,11 @@ func (r *RootCmd) provisionerDaemonStart() *clibase.Cmd {
8489

8590
err := terraform.Serve(ctx, &terraform.ServeOptions{
8691
ServeOptions: &provisionersdk.ServeOptions{
87-
Listener: terraformServer,
92+
Listener: terraformServer,
93+
Logger: logger.Named("terraform"),
94+
WorkDirectory: tempDir,
8895
},
8996
CachePath: cacheDir,
90-
Logger: logger.Named("terraform"),
9197
})
9298
if err != nil && !xerrors.Is(err, context.Canceled) {
9399
select {
@@ -97,11 +103,6 @@ func (r *RootCmd) provisionerDaemonStart() *clibase.Cmd {
97103
}
98104
}()
99105

100-
tempDir, err := os.MkdirTemp("", "provisionerd")
101-
if err != nil {
102-
return err
103-
}
104-
105106
logger.Info(ctx, "starting provisioner daemon", slog.F("tags", tags))
106107

107108
provisioners := provisionerd.Provisioners{
@@ -121,7 +122,6 @@ func (r *RootCmd) provisionerDaemonStart() *clibase.Cmd {
121122
JobPollJitter: pollJitter,
122123
UpdateInterval: 500 * time.Millisecond,
123124
Provisioners: provisioners,
124-
WorkDirectory: tempDir,
125125
})
126126

127127
var exitErr error

provisionerd/provisionerd.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
"github.com/hashicorp/yamux"
1313
"github.com/prometheus/client_golang/prometheus"
1414
"github.com/prometheus/client_golang/prometheus/promauto"
15-
"github.com/spf13/afero"
1615
"github.com/valyala/fasthttp/fasthttputil"
1716
"go.opentelemetry.io/otel/attribute"
1817
semconv "go.opentelemetry.io/otel/semconv/v1.14.0"
@@ -44,7 +43,6 @@ type Provisioners map[string]sdkproto.DRPCProvisionerClient
4443

4544
// Options provides customizations to the behavior of a provisioner daemon.
4645
type Options struct {
47-
Filesystem afero.Fs
4846
Logger slog.Logger
4947
TracerProvider trace.TracerProvider
5048
Metrics *Metrics
@@ -56,8 +54,6 @@ type Options struct {
5654
JobPollJitter time.Duration
5755
JobPollDebounce time.Duration
5856
Provisioners Provisioners
59-
// WorkDirectory must not be used by multiple processes at once.
60-
WorkDirectory string
6157
}
6258

6359
// New creates and starts a provisioner daemon.
@@ -80,9 +76,6 @@ func New(clientDialer Dialer, opts *Options) *Server {
8076
if opts.LogBufferInterval == 0 {
8177
opts.LogBufferInterval = 250 * time.Millisecond
8278
}
83-
if opts.Filesystem == nil {
84-
opts.Filesystem = afero.NewOsFs()
85-
}
8679
if opts.TracerProvider == nil {
8780
opts.TracerProvider = trace.NewNoopTracerProvider()
8881
}
@@ -405,8 +398,6 @@ func (p *Server) acquireJob(ctx context.Context) {
405398
Updater: p,
406399
QuotaCommitter: p,
407400
Logger: p.opts.Logger.Named("runner"),
408-
Filesystem: p.opts.Filesystem,
409-
WorkDirectory: p.opts.WorkDirectory,
410401
Provisioner: provisioner,
411402
UpdateInterval: p.opts.UpdateInterval,
412403
ForceCancelInterval: p.opts.ForceCancelInterval,

0 commit comments

Comments
 (0)