Skip to content

Commit 2931de7

Browse files
committed
provisioner/terraform tests pass!
1 parent b8c45d5 commit 2931de7

File tree

3 files changed

+189
-156
lines changed

3 files changed

+189
-156
lines changed

provisioner/terraform/executor.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ func (e executor) execWriteOutput(ctx, killCtx context.Context, args, env []stri
7777
// #nosec
7878
cmd := exec.CommandContext(killCtx, e.binaryPath, args...)
7979
cmd.Dir = e.workdir
80+
if env == nil {
81+
// We don't want to passthrough host env when unset.
82+
env = []string{}
83+
}
8084
cmd.Env = env
8185

8286
// We want logs to be written in the correct order, so we wrap all logging
@@ -299,7 +303,7 @@ func (e executor) graph(ctx, killCtx context.Context) (string, error) {
299303

300304
// revive:disable-next-line:flag-parameter
301305
func (e executor) apply(
302-
ctx, killCtx context.Context, plan []byte, logr logSink,
306+
ctx, killCtx context.Context, plan []byte, env []string, logr logSink,
303307
) (*proto.Provision_Response, error) {
304308
planFile, err := ioutil.TempFile("", "coder-terrafrom-plan")
305309
if err != nil {
@@ -329,7 +333,7 @@ func (e executor) apply(
329333
<-doneErr
330334
}()
331335

332-
err = e.execWriteOutput(ctx, killCtx, args, nil, outWriter, errWriter)
336+
err = e.execWriteOutput(ctx, killCtx, args, env, outWriter, errWriter)
333337
if err != nil {
334338
return nil, xerrors.Errorf("terraform apply: %w", err)
335339
}

provisioner/terraform/provision.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ func (s *server) Provision(stream proto.DRPCProvisioner_ProvisionStream) error {
138138
}
139139
s.logger.Debug(ctx, "ran initialization")
140140

141+
env, err := provisionEnv(config, request.GetPlan().GetParameterValues())
142+
if err != nil {
143+
return err
144+
}
145+
141146
var resp *proto.Provision_Response
142147
if planRequest != nil {
143-
env, err := planEnv(planRequest)
144-
if err != nil {
145-
return err
146-
}
147-
148148
vars, err := planVars(planRequest)
149149
if err != nil {
150150
return err
@@ -170,7 +170,7 @@ func (s *server) Provision(stream proto.DRPCProvisioner_ProvisionStream) error {
170170
}
171171
// Must be apply
172172
resp, err = e.apply(
173-
ctx, killCtx, applyRequest.Plan, sink,
173+
ctx, killCtx, applyRequest.Plan, env, sink,
174174
)
175175
if err != nil {
176176
errorMessage := err.Error()
@@ -204,21 +204,21 @@ func planVars(plan *proto.Provision_Plan) ([]string, error) {
204204
return vars, nil
205205
}
206206

207-
func planEnv(plan *proto.Provision_Plan) ([]string, error) {
207+
func provisionEnv(config *proto.Provision_Config, params []*proto.ParameterValue) ([]string, error) {
208208
env := safeEnviron()
209209
env = append(env,
210-
"CODER_AGENT_URL="+plan.Config.Metadata.CoderUrl,
211-
"CODER_WORKSPACE_TRANSITION="+strings.ToLower(plan.Config.Metadata.WorkspaceTransition.String()),
212-
"CODER_WORKSPACE_NAME="+plan.Config.Metadata.WorkspaceName,
213-
"CODER_WORKSPACE_OWNER="+plan.Config.Metadata.WorkspaceOwner,
214-
"CODER_WORKSPACE_OWNER_EMAIL="+plan.Config.Metadata.WorkspaceOwnerEmail,
215-
"CODER_WORKSPACE_ID="+plan.Config.Metadata.WorkspaceId,
216-
"CODER_WORKSPACE_OWNER_ID="+plan.Config.Metadata.WorkspaceOwnerId,
210+
"CODER_AGENT_URL="+config.Metadata.CoderUrl,
211+
"CODER_WORKSPACE_TRANSITION="+strings.ToLower(config.Metadata.WorkspaceTransition.String()),
212+
"CODER_WORKSPACE_NAME="+config.Metadata.WorkspaceName,
213+
"CODER_WORKSPACE_OWNER="+config.Metadata.WorkspaceOwner,
214+
"CODER_WORKSPACE_OWNER_EMAIL="+config.Metadata.WorkspaceOwnerEmail,
215+
"CODER_WORKSPACE_ID="+config.Metadata.WorkspaceId,
216+
"CODER_WORKSPACE_OWNER_ID="+config.Metadata.WorkspaceOwnerId,
217217
)
218218
for key, value := range provisionersdk.AgentScriptEnv() {
219219
env = append(env, key+"="+value)
220220
}
221-
for _, param := range plan.ParameterValues {
221+
for _, param := range params {
222222
switch param.DestinationScheme {
223223
case proto.ParameterDestination_ENVIRONMENT_VARIABLE:
224224
env = append(env, fmt.Sprintf("%s=%s", param.Name, param.Value))

0 commit comments

Comments
 (0)