@@ -510,6 +510,20 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
510510 if err != nil {
511511 return nil , failJob (fmt .Sprintf ("get owner: %s" , err ))
512512 }
513+ tfvals , err := s .Database .GetTemplateVersionTerraformValues (ctx , templateVersion .ID )
514+ if err != nil && ! xerrors .Is (err , sql .ErrNoRows ) {
515+ // Allow ErrNoRows here as terraform values are not present on older template versions.
516+ return nil , failJob (fmt .Sprintf ("get template version terraform values: %s" , err ))
517+ }
518+ var cachedModulesData []byte
519+ if tfvals .CachedModuleFiles .Valid && tfvals .CachedModuleFiles .UUID != uuid .Nil {
520+ cachedModules , err := s .Database .GetFileByID (ctx , tfvals .CachedModuleFiles .UUID )
521+ if err != nil {
522+ return nil , failJob (fmt .Sprintf ("get cached module files: %s" , err ))
523+ }
524+ cachedModulesData = cachedModules .Data
525+ }
526+
513527 var ownerSSHPublicKey , ownerSSHPrivateKey string
514528 if ownerSSHKey , err := s .Database .GetGitSSHKey (ctx , owner .ID ); err != nil {
515529 if ! xerrors .Is (err , sql .ErrNoRows ) {
@@ -702,6 +716,7 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
702716 activeVersion := template .ActiveVersionID == templateVersion .ID
703717 protoJob .Type = & proto.AcquiredJob_WorkspaceBuild_ {
704718 WorkspaceBuild : & proto.AcquiredJob_WorkspaceBuild {
719+ InitialModulesTar : cachedModulesData , // TODO: This might exceed the max message size
705720 WorkspaceBuildId : workspaceBuild .ID .String (),
706721 WorkspaceName : workspace .Name ,
707722 State : workspaceBuild .ProvisionerState ,
0 commit comments