Skip to content
This repository was archived by the owner on Jun 27, 2021. It is now read-only.

Commit e5f7e92

Browse files
authored
Custom Schema fix (#75)
1 parent 10df35b commit e5f7e92

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

gsuite/resource_user.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@ func flattenUserName(name *directory.UserName) map[string]interface{} {
1818
}
1919
}
2020

21+
func flattenCustomSchema(schema map[string]googleapi.RawMessage) []map[string]interface{} {
22+
result := make([]map[string]interface{}, 0, len(schema))
23+
for key, value := range schema {
24+
customSchemaMap := make(map[string]interface{})
25+
customSchemaMap["name"] = key
26+
customSchemaMap["value"] = string(value)
27+
result = append(result, customSchemaMap)
28+
}
29+
return result
30+
}
31+
2132
func resourceUser() *schema.Resource {
2233
return &schema.Resource{
2334
Create: resourceUserCreate,
@@ -658,7 +669,7 @@ func resourceUserRead(d *schema.ResourceData, meta interface{}) error {
658669
var user *directory.User
659670
var err error
660671
err = retry(func() error {
661-
user, err = config.directory.Users.Get(d.Id()).Do()
672+
user, err = config.directory.Users.Get(d.Id()).Projection("full").Do()
662673
return err
663674
})
664675

@@ -692,7 +703,10 @@ func resourceUserRead(d *schema.ResourceData, meta interface{}) error {
692703
d.Set("name", flattenUserName(user.Name))
693704
d.Set("posix_accounts", user.PosixAccounts)
694705
d.Set("ssh_public_keys", user.SshPublicKeys)
695-
d.Set("custom_schema", user.CustomSchemas)
706+
707+
if err = d.Set("custom_schema", flattenCustomSchema(user.CustomSchemas)); err != nil {
708+
return fmt.Errorf("Error setting custom_schema in state: %s", err.Error())
709+
}
696710

697711
return nil
698712
}
@@ -717,7 +731,7 @@ func resourceUserDelete(d *schema.ResourceData, meta interface{}) error {
717731
func resourceUserImporter(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
718732
config := meta.(*Config)
719733

720-
id, err := config.directory.Users.Get(d.Id()).Do()
734+
id, err := config.directory.Users.Get(d.Id()).Projection("full").Do()
721735

722736
if err != nil {
723737
return nil, fmt.Errorf("Error fetching user. Make sure the user exists: %s ", err)
@@ -749,7 +763,7 @@ func resourceUserImporter(d *schema.ResourceData, meta interface{}) ([]*schema.R
749763
d.Set("name", flattenUserName(id.Name))
750764
d.Set("posix_accounts", id.PosixAccounts)
751765
d.Set("ssh_public_keys", id.SshPublicKeys)
752-
d.Set("custom_schema", id.CustomSchemas)
766+
d.Set("custom_schema", flattenCustomSchema(id.CustomSchemas))
753767

754768
return []*schema.ResourceData{d}, nil
755769
}

0 commit comments

Comments
 (0)