@@ -434,6 +434,7 @@ func (r *Runner) do(ctx context.Context) (*proto.CompletedJob, *proto.FailedJob)
434
434
slog .F ("workspace_name" , jobType .WorkspaceBuild .WorkspaceName ),
435
435
slog .F ("state_length" , len (jobType .WorkspaceBuild .State )),
436
436
slog .F ("parameters" , jobType .WorkspaceBuild .ParameterValues ),
437
+ slog .F ("rich_parameter_values" , jobType .WorkspaceBuild .RichParameterValues ),
437
438
)
438
439
return r .runWorkspaceBuild (ctx )
439
440
default :
@@ -566,7 +567,7 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
566
567
Stage : "Detecting persistent resources" ,
567
568
CreatedAt : time .Now ().UnixMilli (),
568
569
})
569
- startResources , err := r .runTemplateImportProvision (ctx , updateResponse .ParameterValues , & sdkproto.Provision_Metadata {
570
+ startResources , parameters , err := r .runTemplateImportProvision (ctx , updateResponse .ParameterValues , & sdkproto.Provision_Metadata {
570
571
CoderUrl : r .job .GetTemplateImport ().Metadata .CoderUrl ,
571
572
WorkspaceTransition : sdkproto .WorkspaceTransition_START ,
572
573
})
@@ -581,7 +582,7 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
581
582
Stage : "Detecting ephemeral resources" ,
582
583
CreatedAt : time .Now ().UnixMilli (),
583
584
})
584
- stopResources , err := r .runTemplateImportProvision (ctx , updateResponse .ParameterValues , & sdkproto.Provision_Metadata {
585
+ stopResources , _ , err := r .runTemplateImportProvision (ctx , updateResponse .ParameterValues , & sdkproto.Provision_Metadata {
585
586
CoderUrl : r .job .GetTemplateImport ().Metadata .CoderUrl ,
586
587
WorkspaceTransition : sdkproto .WorkspaceTransition_STOP ,
587
588
})
@@ -595,6 +596,7 @@ func (r *Runner) runTemplateImport(ctx context.Context) (*proto.CompletedJob, *p
595
596
TemplateImport : & proto.CompletedJob_TemplateImport {
596
597
StartResources : startResources ,
597
598
StopResources : stopResources ,
599
+ RichParameters : parameters ,
598
600
},
599
601
},
600
602
}, nil
@@ -646,7 +648,7 @@ func (r *Runner) runTemplateImportParse(ctx context.Context) ([]*sdkproto.Parame
646
648
// Performs a dry-run provision when importing a template.
647
649
// This is used to detect resources that would be provisioned
648
650
// for a workspace in various states.
649
- func (r * Runner ) runTemplateImportProvision (ctx context.Context , values []* sdkproto.ParameterValue , metadata * sdkproto.Provision_Metadata ) ([]* sdkproto.Resource , error ) {
651
+ func (r * Runner ) runTemplateImportProvision (ctx context.Context , values []* sdkproto.ParameterValue , metadata * sdkproto.Provision_Metadata ) ([]* sdkproto.Resource , [] * sdkproto. RichParameter , error ) {
650
652
ctx , span := r .startTrace (ctx , tracing .FuncName ())
651
653
defer span .End ()
652
654
@@ -661,7 +663,7 @@ func (r *Runner) runTemplateImportProvision(ctx context.Context, values []*sdkpr
661
663
// to send the cancel to the provisioner
662
664
stream , err := r .provisioner .Provision (ctx )
663
665
if err != nil {
664
- return nil , xerrors .Errorf ("provision: %w" , err )
666
+ return nil , nil , xerrors .Errorf ("provision: %w" , err )
665
667
}
666
668
defer stream .Close ()
667
669
go func () {
@@ -688,13 +690,13 @@ func (r *Runner) runTemplateImportProvision(ctx context.Context, values []*sdkpr
688
690
},
689
691
})
690
692
if err != nil {
691
- return nil , xerrors .Errorf ("start provision: %w" , err )
693
+ return nil , nil , xerrors .Errorf ("start provision: %w" , err )
692
694
}
693
695
694
696
for {
695
697
msg , err := stream .Recv ()
696
698
if err != nil {
697
- return nil , xerrors .Errorf ("recv import provision: %w" , err )
699
+ return nil , nil , xerrors .Errorf ("recv import provision: %w" , err )
698
700
}
699
701
switch msgType := msg .Type .(type ) {
700
702
case * sdkproto.Provision_Response_Log :
@@ -715,7 +717,7 @@ func (r *Runner) runTemplateImportProvision(ctx context.Context, values []*sdkpr
715
717
slog .F ("error" , msgType .Complete .Error ),
716
718
)
717
719
718
- return nil , xerrors .New (msgType .Complete .Error )
720
+ return nil , nil , xerrors .New (msgType .Complete .Error )
719
721
}
720
722
721
723
r .logger .Info (context .Background (), "parse dry-run provision successful" ,
@@ -724,9 +726,9 @@ func (r *Runner) runTemplateImportProvision(ctx context.Context, values []*sdkpr
724
726
slog .F ("state_length" , len (msgType .Complete .State )),
725
727
)
726
728
727
- return msgType .Complete .Resources , nil
729
+ return msgType .Complete .Resources , msgType . Complete . Parameters , nil
728
730
default :
729
- return nil , xerrors .Errorf ("invalid message type %q received from provisioner" ,
731
+ return nil , nil , xerrors .Errorf ("invalid message type %q received from provisioner" ,
730
732
reflect .TypeOf (msg .Type ).String ())
731
733
}
732
734
}
@@ -765,7 +767,7 @@ func (r *Runner) runTemplateDryRun(ctx context.Context) (*proto.CompletedJob, *p
765
767
}
766
768
767
769
// Run the template import provision task since it's already a dry run.
768
- resources , err := r .runTemplateImportProvision (ctx ,
770
+ resources , _ , err := r .runTemplateImportProvision (ctx ,
769
771
r .job .GetTemplateDryRun ().GetParameterValues (),
770
772
metadata ,
771
773
)
0 commit comments