mirror of
https://github.com/kemko/nomad.git
synced 2026-01-07 10:55:42 +03:00
driver/docker: ensure that defaults are populated
Looks like we may need to pass default literal at each layer to be able, so defaults are set properly.
This commit is contained in:
@@ -216,11 +216,20 @@ var (
|
||||
),
|
||||
"dangling_containers": hclspec.NewDefault(
|
||||
hclspec.NewBlock("dangling_containers", false, danglingContainersBlock),
|
||||
hclspec.NewLiteral("{}"),
|
||||
hclspec.NewLiteral(`{
|
||||
enabled = true
|
||||
period = "5m"
|
||||
creation_grace = "5m"
|
||||
}`),
|
||||
),
|
||||
})), hclspec.NewLiteral(`{
|
||||
image = true
|
||||
container = true
|
||||
dangling_containers = {
|
||||
enabled = true
|
||||
period = "5m"
|
||||
creation_grace = "5m"
|
||||
}
|
||||
}`)),
|
||||
|
||||
// docker volume options
|
||||
|
||||
@@ -423,3 +423,63 @@ config {
|
||||
|
||||
require.EqualValues(t, expected, tc)
|
||||
}
|
||||
|
||||
// TestConfig_DriverConfig_DanglingContainers asserts that dangling_containers is parsed
|
||||
// and populated with defaults as expected
|
||||
func TestConfig_DriverConfig_DanglingContainers(t *testing.T) {
|
||||
cases := []struct {
|
||||
name string
|
||||
config string
|
||||
expected ContainerGCConfig
|
||||
}{
|
||||
{
|
||||
name: "pure default",
|
||||
config: `{}`,
|
||||
expected: ContainerGCConfig{Enabled: true, PeriodStr: "5m", CreationGraceStr: "5m"},
|
||||
},
|
||||
{
|
||||
name: "partial gc",
|
||||
config: `{ gc { } }`,
|
||||
expected: ContainerGCConfig{Enabled: true, PeriodStr: "5m", CreationGraceStr: "5m"},
|
||||
},
|
||||
{
|
||||
name: "partial gc",
|
||||
config: `{ gc { dangling_containers { } } }`,
|
||||
expected: ContainerGCConfig{Enabled: true, PeriodStr: "5m", CreationGraceStr: "5m"},
|
||||
},
|
||||
{
|
||||
name: "partial dangling_containers",
|
||||
config: `{ gc { dangling_containers { enabled = false } } }`,
|
||||
expected: ContainerGCConfig{Enabled: false, PeriodStr: "5m", CreationGraceStr: "5m"},
|
||||
},
|
||||
{
|
||||
name: "incomplete dangling_containers 2",
|
||||
config: `{ gc { dangling_containers { period = "10m" } } }`,
|
||||
expected: ContainerGCConfig{Enabled: true, PeriodStr: "10m", CreationGraceStr: "5m"},
|
||||
},
|
||||
{
|
||||
name: "full default",
|
||||
config: `{ gc { dangling_containers {
|
||||
enabled = false
|
||||
dry_run = true
|
||||
period = "10m"
|
||||
creation_grace = "20m"
|
||||
}}}`,
|
||||
expected: ContainerGCConfig{
|
||||
Enabled: false,
|
||||
DryRun: true,
|
||||
PeriodStr: "10m",
|
||||
CreationGraceStr: "20m",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, c := range cases {
|
||||
t.Run(c.name, func(t *testing.T) {
|
||||
var tc DriverConfig
|
||||
hclutils.NewConfigParser(configSpec).ParseHCL(t, "config "+c.config, &tc)
|
||||
require.EqualValues(t, c.expected, tc.GC.DanglingContainers)
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user