Skip to content

Commit e68041d

Browse files
authored
Merge pull request #3 from getindata/better_naming_convention_handling
feat: Add better Snowflake naming convention handling
2 parents 0f37eee + 7b9ec5a commit e68041d

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

README.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Terraform module for Snowflake Warehouse management
3131

3232
```terraform
3333
module "terraform_snowflake_warehouse" {
34-
source = "github.com/getindata/terraform-snowflake-warehouse"
34+
source = "getindata/warehouse/snowflake"
3535
context = module.this.context
3636
3737
name = "warehouse"
@@ -81,6 +81,7 @@ _Additional information that should be made public, for ex. how to solve known i
8181
| <a name="input_create_default_roles"></a> [create\_default\_roles](#input\_create\_default\_roles) | Whether the default roles should be created | `bool` | `false` | no |
8282
| <a name="input_delimiter"></a> [delimiter](#input\_delimiter) | Delimiter to be used between ID elements.<br>Defaults to `-` (hyphen). Set to `""` to use no delimiter at all. | `string` | `null` | no |
8383
| <a name="input_descriptor_formats"></a> [descriptor\_formats](#input\_descriptor\_formats) | Describe additional descriptors to be output in the `descriptors` output map.<br>Map of maps. Keys are names of descriptors. Values are maps of the form<br>`{<br> format = string<br> labels = list(string)<br>}`<br>(Type is `any` so the map values can later be enhanced to provide additional options.)<br>`format` is a Terraform format string to be passed to the `format()` function.<br>`labels` is a list of labels, in order, to pass to `format()` function.<br>Label values will be normalized before being passed to `format()` so they will be<br>identical to how they appear in `id`.<br>Default is `{}` (`descriptors` output will be empty). | `any` | `{}` | no |
84+
| <a name="input_descriptor_name"></a> [descriptor\_name](#input\_descriptor\_name) | Name of the descriptor used to form a resource name | `string` | `"snowflake-warehouse"` | no |
8485
| <a name="input_enable_query_acceleration"></a> [enable\_query\_acceleration](#input\_enable\_query\_acceleration) | Specifies whether to enable the query acceleration service for queries that rely on this warehouse for compute resources. | `bool` | `true` | no |
8586
| <a name="input_enabled"></a> [enabled](#input\_enabled) | Set to false to prevent the module from creating any resources | `bool` | `null` | no |
8687
| <a name="input_environment"></a> [environment](#input\_environment) | ID element. Usually used for region e.g. 'uw2', 'us-west-2', OR role 'prod', 'staging', 'dev', 'UAT' | `string` | `null` | no |
@@ -112,8 +113,9 @@ _Additional information that should be made public, for ex. how to solve known i
112113
| Name | Source | Version |
113114
|------|--------|---------|
114115
| <a name="module_roles_deep_merge"></a> [roles\_deep\_merge](#module\_roles\_deep\_merge) | Invicton-Labs/deepmerge/null | 0.1.5 |
115-
| <a name="module_snowflake_role"></a> [snowflake\_role](#module\_snowflake\_role) | github.com/getindata/terraform-snowflake-role | v1.0.0 |
116+
| <a name="module_snowflake_role"></a> [snowflake\_role](#module\_snowflake\_role) | getindata/role/snowflake | 1.0.3 |
116117
| <a name="module_this"></a> [this](#module\_this) | cloudposse/label/null | 0.25.0 |
118+
| <a name="module_warehouse_label"></a> [warehouse\_label](#module\_warehouse\_label) | cloudposse/label/null | 0.25.0 |
117119

118120
## Outputs
119121

examples/complete/main.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ resource "snowflake_role" "this_dev" {
99
}
1010

1111
resource "snowflake_resource_monitor" "this" {
12-
name = "warehouse-rm"
12+
name = "WAREHOUSE_RM"
1313
credit_quota = 20
1414

1515
notify_triggers = [50, 100]

locals.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
locals {
2-
name_from_descriptor = trim(replace(
3-
lookup(module.this.descriptors, "snowflake-warehouse", module.this.id), "/__+/", ""
4-
), "_")
2+
name_from_descriptor = module.warehouse_label.enabled ? trim(replace(
3+
lookup(module.warehouse_label.descriptors, var.descriptor_name, module.warehouse_label.id), "/${module.warehouse_label.delimiter}${module.warehouse_label.delimiter}+/", module.warehouse_label.delimiter
4+
), module.warehouse_label.delimiter) : null
55

66
default_roles = var.create_default_roles ? {
77
usage = {

main.tf

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
module "warehouse_label" {
2+
source = "cloudposse/label/null"
3+
version = "0.25.0"
4+
context = module.this.context
5+
6+
delimiter = coalesce(module.this.context.delimiter, "_")
7+
regex_replace_chars = coalesce(module.this.context.regex_replace_chars, "/[^_a-zA-Z0-9]/")
8+
label_value_case = coalesce(module.this.context.label_value_case, "upper")
9+
}
10+
111
resource "snowflake_warehouse" "this" {
212
count = module.this.enabled ? 1 : 0
313

@@ -28,7 +38,9 @@ resource "snowflake_warehouse" "this" {
2838
module "snowflake_role" {
2939
for_each = local.roles
3040

31-
source = "github.com/getindata/terraform-snowflake-role?ref=v1.0.0"
41+
source = "getindata/role/snowflake"
42+
version = "1.0.3"
43+
3244
context = module.this.context
3345
enabled = module.this.enabled && lookup(each.value, "enabled", true)
3446

variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,3 +93,9 @@ variable "create_default_roles" {
9393
type = bool
9494
default = false
9595
}
96+
97+
variable "descriptor_name" {
98+
description = "Name of the descriptor used to form a resource name"
99+
type = string
100+
default = "snowflake-warehouse"
101+
}

0 commit comments

Comments
 (0)