Skip to content

Commit cc9ea80

Browse files
author
Samyak Rout
committed
feat: Enhance variables.tf.tmpl to support all Terraform variable types
- Added support for primitive types: string, number, bool - Added support for complex types: list, set, map, object, tuple, any - Included handling for default values and sensitive attributes - Added validation block for custom validation rules
1 parent 518ed53 commit cc9ea80

File tree

6 files changed

+40
-0
lines changed

6 files changed

+40
-0
lines changed

infra_as_code/terraform_generator/backend/models/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,4 +55,10 @@ type Variable struct {
5555
Default interface{} `json:"default,omitempty"`
5656
Sensitive bool `json:"sensitive,omitempty"`
5757
Value interface{} `json:"value,omitempty"`
58+
Validation *Validation `json:"validation,omitempty"` // Add Validation field
59+
}
60+
61+
type Validation struct {
62+
Condition string `json:"condition"`
63+
ErrorMessage string `json:"error_message"`
5864
}

infra_as_code/terraform_generator/backend/services/terraform_service.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ func generateModuleFiles(basePath string, modules []models.Module, provider stri
6464
return err
6565
}
6666

67+
// Prepare data for templates
6768
data := map[string]interface{}{
6869
"Module": module,
6970
"ResourceName": module.ModuleName,

infra_as_code/terraform_generator/backend/templates/azure/resource_group/variables.tf.tmpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ variable "{{ $name }}" {
88
{{- if $var.Sensitive }}
99
sensitive = true
1010
{{- end }}
11+
{{- if $var.Validation }}
12+
validation {
13+
condition = {{ $var.Validation.Condition }}
14+
error_message = "{{ $var.Validation.ErrorMessage }}"
15+
}
16+
{{- end }}
1117
}
1218
{{- end }}

infra_as_code/terraform_generator/backend/templates/azure/vnet/variables.tf.tmpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ variable "{{ $name }}" {
88
{{- if $var.Sensitive }}
99
sensitive = true
1010
{{- end }}
11+
{{- if $var.Validation }}
12+
validation {
13+
condition = {{ $var.Validation.Condition }}
14+
error_message = "{{ $var.Validation.ErrorMessage }}"
15+
}
16+
{{- end }}
1117
}
1218
{{- end }}

infra_as_code/terraform_generator/backend/templates/generic/variables.tf.tmpl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ variable "{{ $name }}" {
88
{{- if $var.Sensitive }}
99
sensitive = true
1010
{{- end }}
11+
{{- if $var.Validation }}
12+
validation {
13+
condition = {{ $var.Validation.Condition }}
14+
error_message = "{{ $var.Validation.ErrorMessage }}"
15+
}
16+
{{- end }}
1117
}
1218
{{- end }}

infra_as_code/terraform_generator/backend/utils/terraform_utils.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,18 @@ func ResolveModuleDependencies(requestedModules []string, availableModules []mod
7070

7171
return resolved, nil
7272
}
73+
74+
// ExtractModuleVariables processes the module variables for a given module.
75+
func ExtractModuleVariables(module models.Module) map[string]interface{} {
76+
variables := make(map[string]interface{})
77+
for name, varDef := range module.Variables {
78+
variables[name] = map[string]interface{}{
79+
"description": varDef.Description,
80+
"type": varDef.Type,
81+
"default": varDef.Default,
82+
"sensitive": varDef.Sensitive,
83+
"validation": varDef.Validation,
84+
}
85+
}
86+
return variables
87+
}

0 commit comments

Comments
 (0)