Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions postgresql/resource_postgresql_grant_role.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package postgresql

import (
"context"
"database/sql"
"fmt"
"log"
Expand Down Expand Up @@ -31,6 +32,9 @@ func resourcePostgreSQLGrantRole() *schema.Resource {
Create: PGResourceFunc(resourcePostgreSQLGrantRoleCreate),
Read: PGResourceFunc(resourcePostgreSQLGrantRoleRead),
Delete: PGResourceFunc(resourcePostgreSQLGrantRoleDelete),
Importer: &schema.ResourceImporter{
StateContext: resourcePostgreSQLGrantRoleImport,
},

Schema: map[string]*schema.Schema{
"role": {
Expand All @@ -56,6 +60,23 @@ func resourcePostgreSQLGrantRole() *schema.Resource {
}
}

func resourcePostgreSQLGrantRoleImport(ctx context.Context, d *schema.ResourceData, m interface{}) ([]*schema.ResourceData, error) {
importId := d.Id()
parts := strings.Split(importId, "@")

if len(parts) != 2 {
return nil, fmt.Errorf("invalid import id. Expected format: <role>@<grant_role>. Got %s", importId)
}
role := parts[0]
d.Set("role", role)
grantRole := parts[1]
d.Set("grant_role", grantRole)

d.SetId(generateGrantRoleID(d)) // Import ID is the same as the generated ID for backwards compatibility

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

func resourcePostgreSQLGrantRoleRead(db *DBConnection, d *schema.ResourceData) error {
if !db.featureSupported(featurePrivileges) {
return fmt.Errorf(
Expand Down
14 changes: 14 additions & 0 deletions website/docs/r/postgresql_grant_role.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,17 @@ resource "postgresql_grant_role" "bob_admin" {
* `role` - (Required) The name of the role that is granted a new membership.
* `grant_role` - (Required) The name of the role that is added to `role`.
* `with_admin_option` - (Optional) Giving ability to grant membership to others or not for `role`. (Default: false)

## Import

`postgresql_grant_role` supports importing resources following the format:

```
<role>@<grant_role>
```

For example:

```bash
terraform import postgresql_grant_role.grant_role demo_role@demo_grant_role
```