Skip to content

Commit 9fb582e

Browse files
pulls external providers for TestAccCGCSnippet_sqlDatabaseInstanceSql… (#6165) (#12742)
Signed-off-by: Modular Magician <[email protected]> Signed-off-by: Modular Magician <[email protected]>
1 parent 88f8265 commit 9fb582e

File tree

4 files changed

+29
-94
lines changed

4 files changed

+29
-94
lines changed

.changelog/6165.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:breaking-change
2+
sql: updated `google_sql_user.sql_server_user_details` to be read only. Any configuration attempting to set this field is invalid and will cause the provider to crash during plan time.
3+
```

google/resource_cgc_snippet_generated_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,10 @@ func TestAccCGCSnippet_sqlDatabaseInstanceSqlserverExample(t *testing.T) {
396396
vcrTest(t, resource.TestCase{
397397
PreCheck: func() { testAccPreCheck(t) },
398398
Providers: testAccProviders,
399+
ExternalProviders: map[string]resource.ExternalProvider{
400+
"random": {},
401+
"time": {},
402+
},
399403
Steps: []resource.TestStep{
400404
{
401405
Config: testAccCGCSnippet_sqlDatabaseInstanceSqlserverExample(context),

google/resource_sql_user.go

+13-43
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,17 @@ func resourceSqlUser() *schema.Resource {
8585
},
8686
"sql_server_user_details": {
8787
Type: schema.TypeList,
88-
Optional: true,
89-
MaxItems: 1,
88+
Computed: true,
9089
Elem: &schema.Resource{
9190
Schema: map[string]*schema.Schema{
9291
"disabled": {
9392
Type: schema.TypeBool,
94-
Optional: true,
95-
Default: false,
93+
Computed: true,
9694
Description: `If the user has been disabled.`,
9795
},
9896
"server_roles": {
9997
Type: schema.TypeList,
100-
Optional: true,
98+
Computed: true,
10199
Description: `The server roles for this user in the database.`,
102100
Elem: &schema.Schema{Type: schema.TypeString},
103101
},
@@ -174,20 +172,14 @@ func resourceSqlUser() *schema.Resource {
174172
}
175173
}
176174

177-
func expandSqlServerUserDetails(cfg interface{}) (*sqladmin.SqlServerUserDetails, error) {
178-
raw := cfg.([]interface{})[0].(map[string]interface{})
179-
180-
ssud := &sqladmin.SqlServerUserDetails{}
181-
182-
if v, ok := raw["disabled"]; ok {
183-
ssud.Disabled = v.(bool)
184-
}
185-
if v, ok := raw["server_roles"]; ok {
186-
ssud.ServerRoles = expandStringArray(v)
175+
func flattenSqlServerUserDetails(v *sqladmin.SqlServerUserDetails) []interface{} {
176+
if v == nil {
177+
return []interface{}{}
187178
}
188-
189-
return ssud, nil
190-
179+
transformed := make(map[string]interface{})
180+
transformed["disabled"] = v.Disabled
181+
transformed["server_roles"] = v.ServerRoles
182+
return []interface{}{transformed}
191183
}
192184

193185
func expandPasswordPolicy(cfg interface{}) *sqladmin.UserPasswordValidationPolicy {
@@ -240,14 +232,6 @@ func resourceSqlUserCreate(d *schema.ResourceData, meta interface{}) error {
240232
Type: typ,
241233
}
242234

243-
if v, ok := d.GetOk("sql_server_user_details"); ok {
244-
ssud, err := expandSqlServerUserDetails(v)
245-
if err != nil {
246-
return err
247-
}
248-
user.SqlserverUserDetails = ssud
249-
}
250-
251235
if v, ok := d.GetOk("password_policy"); ok {
252236
pp := expandPasswordPolicy(v)
253237
user.PasswordPolicy = pp
@@ -351,15 +335,9 @@ func resourceSqlUserRead(d *schema.ResourceData, meta interface{}) error {
351335
if err := d.Set("project", project); err != nil {
352336
return fmt.Errorf("Error setting project: %s", err)
353337
}
354-
if user.SqlserverUserDetails != nil {
355-
if err := d.Set("disabled", user.SqlserverUserDetails.Disabled); err != nil {
356-
return fmt.Errorf("Error setting disabled: %s", err)
357-
}
358-
if err := d.Set("server_roles", user.SqlserverUserDetails.ServerRoles); err != nil {
359-
return fmt.Errorf("Error setting server_roles: %s", err)
360-
}
338+
if err := d.Set("sql_server_user_details", flattenSqlServerUserDetails(user.SqlserverUserDetails)); err != nil {
339+
return fmt.Errorf("Error setting sql server user details: %s", err)
361340
}
362-
363341
if user.PasswordPolicy != nil {
364342
passwordPolicy := flattenPasswordPolicy(user.PasswordPolicy)
365343
if len(passwordPolicy.([]map[string]interface{})[0]) != 0 {
@@ -368,6 +346,7 @@ func resourceSqlUserRead(d *schema.ResourceData, meta interface{}) error {
368346
}
369347
}
370348
}
349+
371350
d.SetId(fmt.Sprintf("%s/%s/%s", user.Name, user.Host, user.Instance))
372351
return nil
373352
}
@@ -435,15 +414,6 @@ func resourceSqlUserUpdate(d *schema.ResourceData, meta interface{}) error {
435414
Password: password,
436415
}
437416

438-
if v, ok := d.GetOk("sql_server_user_details"); ok {
439-
ssud, err := expandSqlServerUserDetails(v)
440-
if err != nil {
441-
return err
442-
}
443-
user.SqlserverUserDetails = ssud
444-
}
445-
user.PasswordPolicy = expandPasswordPolicy(d.Get("password_policy"))
446-
447417
mutexKV.Lock(instanceMutexKey(project, instance))
448418
defer mutexKV.Unlock(instanceMutexKey(project, instance))
449419
var op *sqladmin.Operation

google/resource_sql_user_test.go

+9-51
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ func TestAccSqlUser_mysql(t *testing.T) {
2020
CheckDestroy: testAccSqlUserDestroyProducer(t),
2121
Steps: []resource.TestStep{
2222
{
23-
Config: testGoogleSqlUser_mysql(instance, "password", false),
23+
Config: testGoogleSqlUser_mysql(instance, "password"),
2424
Check: resource.ComposeTestCheckFunc(
2525
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user1"),
2626
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user2"),
2727
),
2828
},
2929
{
3030
// Update password
31-
Config: testGoogleSqlUser_mysql(instance, "new_password", false),
31+
Config: testGoogleSqlUser_mysql(instance, "new_password"),
3232
Check: resource.ComposeTestCheckFunc(
3333
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user1"),
3434
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user2"),
@@ -45,40 +45,6 @@ func TestAccSqlUser_mysql(t *testing.T) {
4545
})
4646
}
4747

48-
func TestAccSqlUser_mysqlDisabled(t *testing.T) {
49-
t.Parallel()
50-
51-
instance := fmt.Sprintf("i-%d", randInt(t))
52-
vcrTest(t, resource.TestCase{
53-
PreCheck: func() { testAccPreCheck(t) },
54-
Providers: testAccProviders,
55-
CheckDestroy: testAccSqlUserDestroyProducer(t),
56-
Steps: []resource.TestStep{
57-
{
58-
Config: testGoogleSqlUser_mysql(instance, "password", true),
59-
},
60-
{
61-
ResourceName: "google_sql_user.user1",
62-
ImportStateId: fmt.Sprintf("%s/%s/gmail.com/admin", getTestProjectFromEnv(), instance),
63-
ImportState: true,
64-
ImportStateVerify: true,
65-
ImportStateVerifyIgnore: []string{"password"},
66-
},
67-
{
68-
// Update password
69-
Config: testGoogleSqlUser_mysql(instance, "password", false),
70-
},
71-
{
72-
ResourceName: "google_sql_user.user1",
73-
ImportStateId: fmt.Sprintf("%s/%s/gmail.com/admin", getTestProjectFromEnv(), instance),
74-
ImportState: true,
75-
ImportStateVerify: true,
76-
ImportStateVerifyIgnore: []string{"password"},
77-
},
78-
},
79-
})
80-
}
81-
8248
func TestAccSqlUser_iamUser(t *testing.T) {
8349
// Multiple fine-grained resources
8450
skipIfVcr(t)
@@ -291,15 +257,15 @@ func TestAccSqlUser_mysqlPasswordPolicy(t *testing.T) {
291257
CheckDestroy: testAccSqlUserDestroyProducer(t),
292258
Steps: []resource.TestStep{
293259
{
294-
Config: testGoogleSqlUser_mysqlPasswordPolicy(instance, "password", false),
260+
Config: testGoogleSqlUser_mysqlPasswordPolicy(instance, "password"),
295261
Check: resource.ComposeTestCheckFunc(
296262
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user1"),
297263
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user2"),
298264
),
299265
},
300266
{
301267
// Update password
302-
Config: testGoogleSqlUser_mysqlPasswordPolicy(instance, "new_password", false),
268+
Config: testGoogleSqlUser_mysqlPasswordPolicy(instance, "new_password"),
303269
Check: resource.ComposeTestCheckFunc(
304270
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user1"),
305271
testAccCheckGoogleSqlUserExists(t, "google_sql_user.user2"),
@@ -316,7 +282,7 @@ func TestAccSqlUser_mysqlPasswordPolicy(t *testing.T) {
316282
})
317283
}
318284

319-
func testGoogleSqlUser_mysql(instance, password string, disabled bool) string {
285+
func testGoogleSqlUser_mysql(instance, password string) string {
320286
return fmt.Sprintf(`
321287
resource "google_sql_database_instance" "instance" {
322288
name = "%s"
@@ -333,23 +299,18 @@ resource "google_sql_user" "user1" {
333299
instance = google_sql_database_instance.instance.name
334300
host = "google.com"
335301
password = "%s"
336-
sql_server_user_details {
337-
disabled = "%t"
338-
server_roles = [ "admin" ]
339-
}
340302
}
341303
342304
resource "google_sql_user" "user2" {
343305
name = "admin"
344306
instance = google_sql_database_instance.instance.name
345307
host = "gmail.com"
346308
password = "hunter2"
347-
depends_on = [google_sql_user.user1]
348309
}
349-
`, instance, password, disabled)
310+
`, instance, password)
350311
}
351312

352-
func testGoogleSqlUser_mysqlPasswordPolicy(instance, password string, disabled bool) string {
313+
func testGoogleSqlUser_mysqlPasswordPolicy(instance, password string) string {
353314
return fmt.Sprintf(`
354315
resource "google_sql_database_instance" "instance" {
355316
name = "%s"
@@ -366,10 +327,7 @@ resource "google_sql_user" "user1" {
366327
instance = google_sql_database_instance.instance.name
367328
host = "google.com"
368329
password = "%s"
369-
sql_server_user_details {
370-
disabled = "%t"
371-
server_roles = [ "admin" ]
372-
}
330+
373331
password_policy {
374332
allowed_failed_attempts = 6
375333
password_expiration_duration = "2592000s"
@@ -388,7 +346,7 @@ resource "google_sql_user" "user2" {
388346
enable_failed_attempts_check = true
389347
}
390348
}
391-
`, instance, password, disabled)
349+
`, instance, password)
392350
}
393351

394352
func testGoogleSqlUser_postgres(instance, password string) string {

0 commit comments

Comments
 (0)