Skip to content

Commit e4dd84f

Browse files
committed
this works!
1 parent e21a475 commit e4dd84f

File tree

10 files changed

+237
-228
lines changed

10 files changed

+237
-228
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1263,7 +1263,6 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
12631263
defer s.Telemetry.Report(telemetrySnapshot)
12641264

12651265
switch jobType := completed.Type.(type) {
1266-
12671266
case *proto.CompletedJob_TemplateImport_:
12681267
var input TemplateVersionImportJob
12691268
err = json.Unmarshal(job.Input, &input)
@@ -1408,7 +1407,7 @@ func (s *server) CompleteJob(ctx context.Context, completed *proto.CompletedJob)
14081407
err = s.Database.UpdateTemplateVersionExternalAuthProvidersByJobID(ctx, database.UpdateTemplateVersionExternalAuthProvidersByJobIDParams{
14091408
JobID: jobID,
14101409
ExternalAuthProviders: json.RawMessage(externalAuthProvidersMessage),
1411-
ImportGraph: jobType.TemplateImport.Graph,
1410+
ImportGraph: string(jobType.TemplateImport.Plan),
14121411
UpdatedAt: s.timeNow(),
14131412
})
14141413
if err != nil {

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ func TestAcquireJob(t *testing.T) {
231231
Optional: gitAuthProvider.Optional,
232232
}})
233233
require.NoError(t, err)
234-
err = db.UpdateTemplateVersionByCompletedJobID(ctx, database.UpdateTemplateVersionByCompletedJobIDParams{
234+
err = db.UpdateTemplateVersionExternalAuthProvidersByJobID(ctx, database.UpdateTemplateVersionExternalAuthProvidersByJobIDParams{
235235
JobID: version.JobID,
236236
ExternalAuthProviders: json.RawMessage(externalAuthProviders),
237237
UpdatedAt: dbtime.Now(),

provisioner/terraform/executor.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
295295
graphTimings := newTimingAggregator(database.ProvisionerJobTimingStageGraph)
296296
graphTimings.ingest(createGraphTimingsEvent(timingGraphStart))
297297

298-
state, err := e.planResources(ctx, killCtx, planfilePath)
298+
state, plan, err := e.planResources(ctx, killCtx, planfilePath)
299299
if err != nil {
300300
graphTimings.ingest(createGraphTimingsEvent(timingGraphErrored))
301301
return nil, err
@@ -309,6 +309,7 @@ func (e *executor) plan(ctx, killCtx context.Context, env, vars []string, logr l
309309
ExternalAuthProviders: state.ExternalAuthProviders,
310310
Timings: append(e.timings.aggregate(), graphTimings.aggregate()...),
311311
Presets: state.Presets,
312+
Plan: plan,
312313
}, nil
313314
}
314315

@@ -330,18 +331,18 @@ func onlyDataResources(sm tfjson.StateModule) tfjson.StateModule {
330331
}
331332

332333
// planResources must only be called while the lock is held.
333-
func (e *executor) planResources(ctx, killCtx context.Context, planfilePath string) (*State, error) {
334+
func (e *executor) planResources(ctx, killCtx context.Context, planfilePath string) (*State, []byte, error) {
334335
ctx, span := e.server.startTrace(ctx, tracing.FuncName())
335336
defer span.End()
336337

337338
plan, err := e.showPlan(ctx, killCtx, planfilePath)
338339
if err != nil {
339-
return nil, xerrors.Errorf("show terraform plan file: %w", err)
340+
return nil, nil, xerrors.Errorf("show terraform plan file: %w", err)
340341
}
341342

342343
rawGraph, err := e.graph(ctx, killCtx)
343344
if err != nil {
344-
return nil, xerrors.Errorf("graph: %w", err)
345+
return nil, nil, xerrors.Errorf("graph: %w", err)
345346
}
346347
modules := []*tfjson.StateModule{}
347348
if plan.PriorState != nil {
@@ -359,9 +360,15 @@ func (e *executor) planResources(ctx, killCtx context.Context, planfilePath stri
359360

360361
state, err := ConvertState(ctx, modules, rawGraph, e.server.logger)
361362
if err != nil {
362-
return nil, err
363+
return nil, nil, err
363364
}
364-
return state, nil
365+
366+
planJson, err := json.Marshal(plan)
367+
if err != nil {
368+
return nil, nil, err
369+
}
370+
371+
return state, planJson, nil
365372
}
366373

367374
// showPlan must only be called while the lock is held.

provisioner/terraform/resources.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ type State struct {
151151
Parameters []*proto.RichParameter
152152
Presets []*proto.Preset
153153
ExternalAuthProviders []*proto.ExternalAuthProviderResource
154+
Plan []byte
154155
}
155156

156157
var ErrInvalidTerraformAddr = xerrors.New("invalid terraform address")

provisionerd/proto/provisionerd.pb.go

Lines changed: 108 additions & 108 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

provisionerd/proto/provisionerd.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ message CompletedJob {
8585
repeated provisioner.Module start_modules = 6;
8686
repeated provisioner.Module stop_modules = 7;
8787
repeated provisioner.Preset presets = 8;
88-
string graph = 9;
88+
bytes plan = 9;
8989
}
9090
message TemplateDryRun {
9191
repeated provisioner.Resource resources = 1;

provisionerd/runner/runner.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,8 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
579579
externalAuthProviderNames = append(externalAuthProviderNames, it.Id)
580580
}
581581

582+
// fmt.Println("completed job: template import: graph:", startProvision.Graph)
583+
582584
return &proto.CompletedJob{
583585
JobId: r.job.JobId,
584586
Type: &proto.CompletedJob_TemplateImport_{
@@ -591,7 +593,7 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
591593
StartModules: startProvision.Modules,
592594
StopModules: stopProvision.Modules,
593595
Presets: startProvision.Presets,
594-
Graph: startProvision.Graph,
596+
Plan: startProvision.Plan,
595597
},
596598
},
597599
}, nil
@@ -653,7 +655,7 @@ type templateImportProvision struct {
653655
ExternalAuthProviders []*sdkproto.ExternalAuthProviderResource
654656
Modules []*sdkproto.Module
655657
Presets []*sdkproto.Preset
656-
Graph string
658+
Plan []byte
657659
}
658660

659661
// Performs a dry-run provision when importing a template.
@@ -747,7 +749,7 @@ func (r *Runner) runTemplateImportProvisionWithRichParameters(
747749
ExternalAuthProviders: c.ExternalAuthProviders,
748750
Modules: c.Modules,
749751
Presets: c.Presets,
750-
Graph: c.Graph,
752+
Plan: c.Plan,
751753
}, nil
752754
default:
753755
return nil, xerrors.Errorf("invalid message type %q received from provisioner",

0 commit comments

Comments
 (0)