Skip to content

Commit

Permalink
Merge pull request #8387 from evanchaoli/load-var-inter-file
Browse files Browse the repository at this point in the history
load_var to support var interpolate
  • Loading branch information
xtremerui committed Nov 29, 2022
2 parents c43447c + 20a348a commit b8479dd
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 1 deletion.
33 changes: 33 additions & 0 deletions atc/creds/load_var_plan.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package creds

import (
"github.com/concourse/concourse/atc"
"github.com/concourse/concourse/vars"
)

type LoadVarPlan struct {
variablesResolver vars.Variables
rawPlan atc.LoadVarPlan
}

func NewLoadVarPlan(variables vars.Variables, plan atc.LoadVarPlan) LoadVarPlan {
return LoadVarPlan{
variablesResolver: variables,
rawPlan: plan,
}
}

func (s LoadVarPlan) Evaluate() (atc.LoadVarPlan, error) {
var plan atc.LoadVarPlan

// Name of load_var should not be interpolated.
name := s.rawPlan.Name

err := evaluate(s.variablesResolver, s.rawPlan, &plan)
if err != nil {
return atc.LoadVarPlan{}, err
}
plan.Name = name

return plan, nil
}
40 changes: 40 additions & 0 deletions atc/creds/load_var_plan_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package creds_test

import (
"github.com/concourse/concourse/atc"
"github.com/concourse/concourse/atc/creds"
"github.com/concourse/concourse/vars"

. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

var _ = Describe("Evaluate", func() {
var plan creds.LoadVarPlan

BeforeEach(func() {
variables := vars.StaticVariables{
"var-name": "vn-is",
"filename": "fn-is",
"var-format": "json",
}
plan = creds.NewLoadVarPlan(variables, atc.LoadVarPlan{
Name: "some-((var-name))-ok",
File: "some-((filename))-ok",
Format: "((var-format))",
})
})

Describe("Evaluate", func() {
It("parses variables", func() {
result, err := plan.Evaluate()
Expect(err).NotTo(HaveOccurred())

Expect(result).To(Equal(atc.LoadVarPlan{
Name: "some-((var-name))-ok", // Name should not be interpolated.
File: "some-fn-is-ok",
Format: "json",
}))
})
})
})
9 changes: 8 additions & 1 deletion atc/exec/load_var_step.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"sigs.k8s.io/yaml"

"github.com/concourse/concourse/atc"
"github.com/concourse/concourse/atc/creds"
"github.com/concourse/concourse/atc/exec/build"
"github.com/concourse/concourse/tracing"
"github.com/concourse/concourse/worker/baggageclaim"
Expand Down Expand Up @@ -84,8 +85,14 @@ func (step *LoadVarStep) run(ctx context.Context, state RunState, delegate Build
})

delegate.Initializing(logger)
stdout := delegate.Stdout()

interpolatedPlan, err := creds.NewLoadVarPlan(state, step.plan).Evaluate()
if err != nil {
return false, err
}
step.plan = interpolatedPlan

stdout := delegate.Stdout()
delegate.Starting(logger)

value, err := step.fetchVars(ctx, logger, step.plan.File, state)
Expand Down

0 comments on commit b8479dd

Please sign in to comment.