in pkg/validators/validators.go [156:216]
func defaults(bp config.Blueprint) []config.Validator {
projectIDExists := bp.Vars.Has("project_id")
projectRef := config.GlobalRef("project_id").AsValue()
regionExists := bp.Vars.Has("region")
regionRef := config.GlobalRef("region").AsValue()
zoneExists := bp.Vars.Has("zone")
zoneRef := config.GlobalRef("zone").AsValue()
defaults := []config.Validator{
{Validator: testModuleNotUsedName},
{Validator: testDeploymentVariableNotUsedName}}
// always add the project ID validator before subsequent validators that can
// only succeed if credentials can access the project. If the project ID
// validator fails, all remaining validators are not executed.
if projectIDExists {
inputs := config.Dict{}.With("project_id", projectRef)
defaults = append(defaults, config.Validator{
Validator: testProjectExistsName,
Inputs: inputs,
}, config.Validator{
Validator: testApisEnabledName,
Inputs: inputs,
},
)
}
if projectIDExists && regionExists {
defaults = append(defaults, config.Validator{
Validator: testRegionExistsName,
Inputs: config.NewDict(map[string]cty.Value{
"project_id": projectRef,
"region": regionRef,
},
)})
}
if projectIDExists && zoneExists {
defaults = append(defaults, config.Validator{
Validator: testZoneExistsName,
Inputs: config.NewDict(map[string]cty.Value{
"project_id": projectRef,
"zone": zoneRef,
}),
})
}
if projectIDExists && regionExists && zoneExists {
defaults = append(defaults, config.Validator{
Validator: testZoneInRegionName,
Inputs: config.NewDict(map[string]cty.Value{
"project_id": projectRef,
"region": regionRef,
"zone": zoneRef,
}),
})
}
return defaults
}