func defaults()

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
}