Skip to content

Commit

Permalink
client: add new nested variables to task's hcl ctx
Browse files Browse the repository at this point in the history
The error messages are really bad, but it's extremely difficult to
produce good error messages without the original HCL.
  • Loading branch information
schmichael committed Nov 13, 2018
1 parent 5870d89 commit 41ddfd3
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 5 deletions.
23 changes: 22 additions & 1 deletion client/allocrunner/taskrunner/task_runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -462,8 +462,29 @@ func (tr *TaskRunner) runDriver() error {
// TODO(nickethier): make sure this uses alloc.AllocatedResources once #4750 is rebased
taskConfig := tr.buildTaskConfig()

// Build hcl context variables
vars, errs, err := tr.envBuilder.Build().AllValues()
if err != nil {
return err
}

// Handle per-key errors
if len(errs) > 0 {
keys := make([]string, 0, len(errs))
for k, err := range errs {
keys = append(keys, k)

if tr.logger.IsTrace() {
// Verbosely log every diagnostic for debugging
tr.logger.Trace("error building environment variables", "key", k, "error", err)
}
}

tr.logger.Warn("some environment variables not available for rendering", "keys", strings.Join(keys, ", "))
}

evalCtx := &hcl.EvalContext{
Variables: tr.envBuilder.Build().AllValues(),
Variables: vars,
Functions: shared.GetStdlibFuncs(),
}

Expand Down
6 changes: 2 additions & 4 deletions client/allocrunner/taskrunner/task_runner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,9 +176,8 @@ func TestTaskRunner_TaskEnv(t *testing.T) {
// Use interpolation from both node attributes and meta vars
task.Config = map[string]interface{}{
"run_for": time.Millisecond,
"stdout_string": `${node.region} ${NOMAD_META_foo}`,
"stdout_string": `${node.region} ${NOMAD_META_foo} ${NOMAD_META_common_user}`,
}
task.User = "${NOMAD_META_common_user}"

conf, cleanup := testTaskRunnerConfig(t, alloc, task.Name)
defer cleanup()
Expand Down Expand Up @@ -211,6 +210,5 @@ func TestTaskRunner_TaskEnv(t *testing.T) {
driverCfg, mockCfg := mockDriver.GetTaskConfig()
require.NotNil(driverCfg)
require.NotNil(mockCfg)
assert.Equal(t, "somebody", driverCfg.User)
assert.Equal(t, "global bar", mockCfg.StdoutString)
assert.Equal(t, "global bar somebody", mockCfg.StdoutString)
}

0 comments on commit 41ddfd3

Please sign in to comment.