Skip to content

Commit 83ea3f0

Browse files
seansonPettitWesley
authored andcommitted
Add support for environment variables in ecs-params.yml - Issue aws#530
This adds support and a test for environment variables in ecs-params.yml. It is a basic set of support for variables in the `$VAR` and `${VAR} format.
1 parent 004d36f commit 83ea3f0

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

ecs-cli/modules/cli/compose/project/project_test.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,40 @@ run_params:
155155
err = tmpfile.Close()
156156
assert.NoError(t, err, "Could not close tempfile")
157157
}
158+
func TestParseECSParamsWithEnvironment(t *testing.T) {
159+
ecsParamsString := `version: 1
160+
task_definition:
161+
task_size:
162+
mem_limit: ${MEM_LIMIT}
163+
cpu_limit: $CPU_LIMIT`
164+
165+
os.Setenv("MEM_LIMIT", "1000")
166+
os.Setenv("CPU_LIMIT", "200")
167+
168+
content := []byte(ecsParamsString)
169+
170+
tmpfile, err := ioutil.TempFile("", "ecs-params")
171+
assert.NoError(t, err, "Could not create ecs fields tempfile")
172+
173+
ecsParamsFileName := tmpfile.Name()
174+
defer os.Remove(ecsParamsFileName)
175+
176+
project := setupTestProjectWithEcsParams(t, ecsParamsFileName)
177+
178+
_, err = tmpfile.Write(content)
179+
assert.NoError(t, err, "Could not write data to ecs fields tempfile")
180+
181+
err = project.parseECSParams()
182+
if assert.NoError(t, err) {
183+
ecsParams := project.ecsContext.ECSParams
184+
ts := ecsParams.TaskDefinition.TaskSize
185+
assert.Equal(t, "200", ts.Cpu, "Expected CPU to match")
186+
assert.Equal(t, "1000", ts.Memory, "Expected CPU to match")
187+
}
188+
189+
err = tmpfile.Close()
190+
assert.NoError(t, err, "Could not close tempfile")
191+
}
158192

159193
func TestParseECSParams_NoFile(t *testing.T) {
160194
project := setupTestProject(t)

ecs-cli/modules/utils/compose/ecs_params_reader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func ReadECSParams(filename string) (*ECSParams, error) {
115115
if err != nil {
116116
return nil, errors.Wrapf(err, "Error reading file '%v'", filename)
117117
}
118-
118+
ecsParamsData = []byte(os.ExpandEnv(string(ecsParamsData)))
119119
ecsParams := &ECSParams{}
120120

121121
if err = yaml.Unmarshal([]byte(ecsParamsData), &ecsParams); err != nil {

0 commit comments

Comments
 (0)