Skip to content

Commit dcb68b1

Browse files
authored
Merge pull request #231 from dbt-labs/release-0.2.18
Release 0.2.18
2 parents 6becd00 + 3730fae commit dcb68b1

File tree

9 files changed

+231
-55
lines changed

9 files changed

+231
-55
lines changed

CHANGELOG.md

+15-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,21 @@
22

33
All notable changes to this project will be documented in this file.
44

5-
## [Unreleased](https://github.com/dbt-labs/terraform-provider-dbtcloud/compare/v0.2.17...HEAD)
5+
## [Unreleased](https://github.com/dbt-labs/terraform-provider-dbtcloud/compare/v0.2.18...HEAD)
6+
7+
## [0.2.18](https://github.com/dbt-labs/terraform-provider-dbtcloud/compare/v0.2.17...v0.2.18)
8+
9+
## Changes
10+
11+
- #229 - fix logic for secret environment variables
12+
13+
## Documentations
14+
15+
- #228 - update docs to replace the non existing `dbtcloud_user` resource by the existing `data.dbtcloud_user` data source
16+
17+
## Behind the scenes
18+
19+
- update third party module version following security report
620

721
## [0.2.17](https://github.com/dbt-labs/terraform-provider-dbtcloud/compare/v0.2.16...v0.2.17)
822

docs/resources/environment_variable.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ resource "dbtcloud_environment_variable" "dbt_my_env_var" {
4040

4141
### Required
4242

43-
- `environment_values` (Map of String) Map from environment names to respective variable value, a special key `project` should be set for the project default variable value
43+
- `environment_values` (Map of String) Map from environment names to respective variable value, a special key `project` should be set for the project default variable value. This field is not set as sensitive so take precautions when using secret environment variables.
4444
- `name` (String) Name for the variable, must be unique within a project, must be prefixed with 'DBT_'
4545
- `project_id` (Number) Project for the variable to be created in
4646

docs/resources/user_groups.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ If you would like a different behavior, please open an issue on GitHub. To remov
2525
```terraform
2626
// we can assign groups to users
2727
resource "dbtcloud_user_groups" "my_user_groups" {
28-
user_id = dbtcloud_user.my_user.id
28+
user_id = data.dbtcloud_user.my_user.id
2929
group_ids = [
3030
// the group_id can be written directly
3131
1234,

examples/resources/dbtcloud_user_groups/resource.tf

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// we can assign groups to users
22
resource "dbtcloud_user_groups" "my_user_groups" {
3-
user_id = dbtcloud_user.my_user.id
3+
user_id = data.dbtcloud_user.my_user.id
44
group_ids = [
55
// the group_id can be written directly
66
1234,

go.mod

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ require (
1717
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
1818
github.com/armon/go-radix v1.0.0 // indirect
1919
github.com/bgentry/speakeasy v0.1.0 // indirect
20-
github.com/cloudflare/circl v1.3.3 // indirect
20+
github.com/cloudflare/circl v1.3.7 // indirect
2121
github.com/fatih/color v1.13.0 // indirect
2222
github.com/golang/protobuf v1.5.3 // indirect
2323
github.com/google/go-cmp v0.6.0 // indirect
@@ -59,11 +59,11 @@ require (
5959
github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect
6060
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
6161
github.com/zclconf/go-cty v1.14.1 // indirect
62-
golang.org/x/crypto v0.15.0 // indirect
62+
golang.org/x/crypto v0.17.0 // indirect
6363
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df // indirect
6464
golang.org/x/mod v0.13.0 // indirect
6565
golang.org/x/net v0.17.0 // indirect
66-
golang.org/x/sys v0.14.0 // indirect
66+
golang.org/x/sys v0.15.0 // indirect
6767
golang.org/x/text v0.14.0 // indirect
6868
google.golang.org/appengine v1.6.7 // indirect
6969
google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect

go.sum

+8-7
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kB
2626
github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
2727
github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
2828
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
29-
github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
3029
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
30+
github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
31+
github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
3132
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
3233
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
3334
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@@ -202,8 +203,8 @@ golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPh
202203
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
203204
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
204205
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
205-
golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA=
206-
golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g=
206+
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
207+
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
207208
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
208209
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
209210
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -240,15 +241,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
240241
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
241242
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
242243
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
243-
golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q=
244-
golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
244+
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
245+
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
245246
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
246247
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
247248
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
248249
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
249250
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
250-
golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8=
251-
golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww=
251+
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
252+
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
252253
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
253254
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
254255
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=

pkg/resources/environment_acceptance_test.go

+88-18
Original file line numberDiff line numberDiff line change
@@ -28,41 +28,108 @@ func TestAccDbtCloudEnvironmentResource(t *testing.T) {
2828
Config: testAccDbtCloudEnvironmentResourceBasicConfig(projectName, environmentName),
2929
Check: resource.ComposeTestCheckFunc(
3030
testAccCheckDbtCloudEnvironmentExists("dbtcloud_environment.test_env"),
31-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "name", environmentName),
32-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "deployment_type", "production"),
31+
resource.TestCheckResourceAttr(
32+
"dbtcloud_environment.test_env",
33+
"name",
34+
environmentName,
35+
),
36+
resource.TestCheckResourceAttr(
37+
"dbtcloud_environment.test_env",
38+
"deployment_type",
39+
"production",
40+
),
3341
),
3442
},
3543
// RENAME
3644
{
37-
Config: testAccDbtCloudEnvironmentResourceBasicConfig(projectName, environmentName2),
45+
Config: testAccDbtCloudEnvironmentResourceBasicConfig(
46+
projectName,
47+
environmentName2,
48+
),
3849
Check: resource.ComposeTestCheckFunc(
3950
testAccCheckDbtCloudEnvironmentExists("dbtcloud_environment.test_env"),
40-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "name", environmentName2),
51+
resource.TestCheckResourceAttr(
52+
"dbtcloud_environment.test_env",
53+
"name",
54+
environmentName2,
55+
),
4156
),
4257
},
4358
// MODIFY ADDING CRED
4459
{
45-
Config: testAccDbtCloudEnvironmentResourceModifiedConfig(projectName, environmentName2, "", "false"),
60+
Config: testAccDbtCloudEnvironmentResourceModifiedConfig(
61+
projectName,
62+
environmentName2,
63+
"",
64+
"false",
65+
),
4666
Check: resource.ComposeTestCheckFunc(
4767
testAccCheckDbtCloudEnvironmentExists("dbtcloud_environment.test_env"),
48-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "name", environmentName2),
49-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "dbt_version", DBT_CLOUD_VERSION),
50-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "custom_branch", ""),
51-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "use_custom_branch", "false"),
52-
resource.TestCheckResourceAttrSet("dbtcloud_environment.test_env", "credential_id"),
53-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "deployment_type", ""),
68+
resource.TestCheckResourceAttr(
69+
"dbtcloud_environment.test_env",
70+
"name",
71+
environmentName2,
72+
),
73+
resource.TestCheckResourceAttr(
74+
"dbtcloud_environment.test_env",
75+
"dbt_version",
76+
DBT_CLOUD_VERSION,
77+
),
78+
resource.TestCheckResourceAttr(
79+
"dbtcloud_environment.test_env",
80+
"custom_branch",
81+
"",
82+
),
83+
resource.TestCheckResourceAttr(
84+
"dbtcloud_environment.test_env",
85+
"use_custom_branch",
86+
"false",
87+
),
88+
resource.TestCheckResourceAttrSet(
89+
"dbtcloud_environment.test_env",
90+
"credential_id",
91+
),
92+
resource.TestCheckResourceAttr(
93+
"dbtcloud_environment.test_env",
94+
"deployment_type",
95+
"production",
96+
),
5497
),
5598
},
5699
// MODIFY CUSTOM BRANCH
57100
{
58-
Config: testAccDbtCloudEnvironmentResourceModifiedConfig(projectName, environmentName2, "main", "true"),
101+
Config: testAccDbtCloudEnvironmentResourceModifiedConfig(
102+
projectName,
103+
environmentName2,
104+
"main",
105+
"true",
106+
),
59107
Check: resource.ComposeTestCheckFunc(
60108
testAccCheckDbtCloudEnvironmentExists("dbtcloud_environment.test_env"),
61-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "name", environmentName2),
62-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "dbt_version", DBT_CLOUD_VERSION),
63-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "custom_branch", "main"),
64-
resource.TestCheckResourceAttr("dbtcloud_environment.test_env", "use_custom_branch", "true"),
65-
resource.TestCheckResourceAttrSet("dbtcloud_environment.test_env", "credential_id"),
109+
resource.TestCheckResourceAttr(
110+
"dbtcloud_environment.test_env",
111+
"name",
112+
environmentName2,
113+
),
114+
resource.TestCheckResourceAttr(
115+
"dbtcloud_environment.test_env",
116+
"dbt_version",
117+
DBT_CLOUD_VERSION,
118+
),
119+
resource.TestCheckResourceAttr(
120+
"dbtcloud_environment.test_env",
121+
"custom_branch",
122+
"main",
123+
),
124+
resource.TestCheckResourceAttr(
125+
"dbtcloud_environment.test_env",
126+
"use_custom_branch",
127+
"true",
128+
),
129+
resource.TestCheckResourceAttrSet(
130+
"dbtcloud_environment.test_env",
131+
"credential_id",
132+
),
66133
),
67134
},
68135
// IMPORT
@@ -92,7 +159,9 @@ resource "dbtcloud_environment" "test_env" {
92159
`, projectName, environmentName, DBT_CLOUD_VERSION)
93160
}
94161

95-
func testAccDbtCloudEnvironmentResourceModifiedConfig(projectName, environmentName, customBranch, useCustomBranch string) string {
162+
func testAccDbtCloudEnvironmentResourceModifiedConfig(
163+
projectName, environmentName, customBranch, useCustomBranch string,
164+
) string {
96165
return fmt.Sprintf(`
97166
resource "dbtcloud_project" "test_project" {
98167
name = "%s"
@@ -106,6 +175,7 @@ resource "dbtcloud_environment" "test_env" {
106175
use_custom_branch = %s
107176
project_id = dbtcloud_project.test_project.id
108177
credential_id = dbtcloud_bigquery_credential.test_credential.credential_id
178+
deployment_type = "production"
109179
}
110180
111181
resource "dbtcloud_bigquery_credential" "test_credential" {

pkg/resources/environment_variable.go

+15-7
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,17 @@ func ResourceEnvironmentVariable() *schema.Resource {
2626
Description: "Project for the variable to be created in",
2727
},
2828
"name": &schema.Schema{
29-
Type: schema.TypeString,
30-
Required: true,
29+
Type: schema.TypeString,
30+
Required: true,
31+
// as the name is used as the ID, we need to force a new resource if the name changes
32+
ForceNew: true,
3133
Description: "Name for the variable, must be unique within a project, must be prefixed with 'DBT_'",
3234
ValidateFunc: func(val interface{}, key string) (warns []string, errs []error) {
3335
v := val.(string)
3436
if !(strings.HasPrefix(v, "DBT_")) {
3537
errs = append(
3638
errs,
37-
fmt.Errorf("%q must be between 0 and 10 inclusive, got: %s", key, v),
39+
fmt.Errorf("The env var must start with DBT_ , got: %s", v),
3840
)
3941
}
4042
return
@@ -43,7 +45,7 @@ func ResourceEnvironmentVariable() *schema.Resource {
4345
"environment_values": &schema.Schema{
4446
Type: schema.TypeMap,
4547
Required: true,
46-
Description: "Map from environment names to respective variable value, a special key `project` should be set for the project default variable value",
48+
Description: "Map from environment names to respective variable value, a special key `project` should be set for the project default variable value. This field is not set as sensitive so take precautions when using secret environment variables.",
4749
},
4850
},
4951

@@ -137,15 +139,21 @@ func resourceEnvironmentVariableRead(
137139
}
138140
return diag.FromErr(err)
139141
}
140-
141142
if err := d.Set("project_id", environmentVariable.ProjectID); err != nil {
142143
return diag.FromErr(err)
143144
}
144145
if err := d.Set("name", environmentVariable.Name); err != nil {
145146
return diag.FromErr(err)
146147
}
147-
if err := d.Set("environment_values", environmentVariable.EnvironmentNameValues); err != nil {
148-
return diag.FromErr(err)
148+
149+
if !strings.HasPrefix(environmentVariable.Name, "DBT_ENV_SECRET_") {
150+
if err := d.Set("environment_values", environmentVariable.EnvironmentNameValues); err != nil {
151+
return diag.FromErr(err)
152+
}
153+
} else {
154+
if err := d.Set("environment_values", d.Get("environment_values")); err != nil {
155+
return diag.FromErr(err)
156+
}
149157
}
150158

151159
return diags

0 commit comments

Comments
 (0)