-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #132 from volcengine/feat/iam
Feat/iam
- Loading branch information
Showing
17 changed files
with
1,026 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
resource "volcengine_iam_user_group" "foo" { | ||
user_group_name = "acc-test-group" | ||
description = "acc-test" | ||
display_name = "acc-test" | ||
} | ||
|
||
data "volcengine_iam_user_groups" "foo" { | ||
query = "acc-test" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
resource "volcengine_iam_user_group" "foo" { | ||
user_group_name = "acc-test-group" | ||
description = "acc-test" | ||
display_name = "acctest" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
resource "volcengine_iam_user" "foo" { | ||
user_name = "acc-test-user" | ||
description = "acc test" | ||
display_name = "name" | ||
} | ||
|
||
resource "volcengine_iam_user_group" "foo" { | ||
user_group_name = "acc-test-group" | ||
description = "acc-test" | ||
display_name = "acctest" | ||
} | ||
|
||
resource "volcengine_iam_user_group_attachment" "foo" { | ||
user_group_name = volcengine_iam_user_group.foo.user_group_name | ||
user_name = volcengine_iam_user.foo.user_name | ||
} |
73 changes: 73 additions & 0 deletions
73
volcengine/iam/iam_user_group/data_source_volcengine_iam_user_groups.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package iam_user_group | ||
|
||
import ( | ||
"github.com/hashicorp/terraform-plugin-sdk/helper/schema" | ||
ve "github.com/volcengine/terraform-provider-volcengine/common" | ||
) | ||
|
||
func DataSourceVolcengineIamUserGroups() *schema.Resource { | ||
return &schema.Resource{ | ||
Read: dataSourceVolcengineIamUserGroupsRead, | ||
Schema: map[string]*schema.Schema{ | ||
"query": { | ||
Type: schema.TypeString, | ||
Optional: true, | ||
Description: "Fuzzy search, supports searching for user group names, display names, and remarks.", | ||
}, | ||
"output_file": { | ||
Type: schema.TypeString, | ||
Optional: true, | ||
Description: "File name where to save data source results.", | ||
}, | ||
"total_count": { | ||
Type: schema.TypeInt, | ||
Computed: true, | ||
Description: "The total count of query.", | ||
}, | ||
"user_groups": { | ||
Description: "The collection of query.", | ||
Type: schema.TypeList, | ||
Computed: true, | ||
Elem: &schema.Resource{ | ||
Schema: map[string]*schema.Schema{ | ||
"account_id": { | ||
Type: schema.TypeInt, | ||
Computed: true, | ||
Description: "The id of the account.", | ||
}, | ||
"user_group_name": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "The name of the user group.", | ||
}, | ||
"display_name": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "The display name of the user group.", | ||
}, | ||
"description": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "The description of the user group.", | ||
}, | ||
"create_date": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "The creation date of the user group.", | ||
}, | ||
"update_date": { | ||
Type: schema.TypeString, | ||
Computed: true, | ||
Description: "The update date of the user group.", | ||
}, | ||
}, | ||
}, | ||
}, | ||
}, | ||
} | ||
} | ||
|
||
func dataSourceVolcengineIamUserGroupsRead(d *schema.ResourceData, meta interface{}) error { | ||
service := NewIamUserGroupService(meta.(*ve.SdkClient)) | ||
return service.Dispatcher.Data(service, d, DataSourceVolcengineIamUserGroups()) | ||
} |
48 changes: 48 additions & 0 deletions
48
volcengine/iam/iam_user_group/data_source_volcengine_iam_user_groups_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
package iam_user_group_test | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/helper/resource" | ||
ve "github.com/volcengine/terraform-provider-volcengine/common" | ||
"github.com/volcengine/terraform-provider-volcengine/volcengine" | ||
"github.com/volcengine/terraform-provider-volcengine/volcengine/iam/iam_user_group" | ||
) | ||
|
||
const testAccVolcengineIamUserGroupsDatasourceConfig = ` | ||
resource "volcengine_iam_user_group" "foo" { | ||
user_group_name = "acc-test-group" | ||
description = "acc-test" | ||
display_name = "acc-test" | ||
} | ||
data "volcengine_iam_user_groups" "foo"{ | ||
query = "acc-test-group" | ||
} | ||
` | ||
|
||
func TestAccVolcengineIamUserGroupsDatasource_Basic(t *testing.T) { | ||
resourceName := "data.volcengine_iam_user_groups.foo" | ||
|
||
acc := &volcengine.AccTestResource{ | ||
ResourceId: resourceName, | ||
SvcInitFunc: func(client *ve.SdkClient) ve.ResourceService { | ||
return iam_user_group.NewIamUserGroupService(client) | ||
}, | ||
} | ||
|
||
resource.ParallelTest(t, resource.TestCase{ | ||
PreCheck: func() { | ||
volcengine.AccTestPreCheck(t) | ||
}, | ||
Providers: volcengine.GetTestAccProviders(), | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccVolcengineIamUserGroupsDatasourceConfig, | ||
Check: resource.ComposeTestCheckFunc( | ||
resource.TestCheckResourceAttrSet(acc.ResourceId, "user_groups"), | ||
), | ||
}, | ||
}, | ||
}) | ||
} |
91 changes: 91 additions & 0 deletions
91
volcengine/iam/iam_user_group/resource_volcengine_iam_user_group.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
package iam_user_group | ||
|
||
import ( | ||
"fmt" | ||
"time" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/helper/schema" | ||
ve "github.com/volcengine/terraform-provider-volcengine/common" | ||
) | ||
|
||
/* | ||
Import | ||
IamUserGroup can be imported using the id, e.g. | ||
``` | ||
$ terraform import volcengine_iam_user_group.default user_group_name | ||
``` | ||
*/ | ||
|
||
func ResourceVolcengineIamUserGroup() *schema.Resource { | ||
resource := &schema.Resource{ | ||
Create: resourceVolcengineIamUserGroupCreate, | ||
Read: resourceVolcengineIamUserGroupRead, | ||
Update: resourceVolcengineIamUserGroupUpdate, | ||
Delete: resourceVolcengineIamUserGroupDelete, | ||
Importer: &schema.ResourceImporter{ | ||
State: schema.ImportStatePassthrough, | ||
}, | ||
Timeouts: &schema.ResourceTimeout{ | ||
Create: schema.DefaultTimeout(30 * time.Minute), | ||
Update: schema.DefaultTimeout(30 * time.Minute), | ||
Delete: schema.DefaultTimeout(30 * time.Minute), | ||
}, | ||
Schema: map[string]*schema.Schema{ | ||
"user_group_name": { | ||
Type: schema.TypeString, | ||
Required: true, | ||
ForceNew: true, | ||
Description: "The name of the user group.", | ||
}, | ||
"description": { | ||
Type: schema.TypeString, | ||
Optional: true, | ||
Description: "The description of the user group.", | ||
}, | ||
"display_name": { | ||
Type: schema.TypeString, | ||
Optional: true, | ||
Description: "The display name of the user group.", | ||
}, | ||
}, | ||
} | ||
return resource | ||
} | ||
|
||
func resourceVolcengineIamUserGroupCreate(d *schema.ResourceData, meta interface{}) (err error) { | ||
service := NewIamUserGroupService(meta.(*ve.SdkClient)) | ||
err = service.Dispatcher.Create(service, d, ResourceVolcengineIamUserGroup()) | ||
if err != nil { | ||
return fmt.Errorf("error on creating iam_user_group %q, %s", d.Id(), err) | ||
} | ||
return resourceVolcengineIamUserGroupRead(d, meta) | ||
} | ||
|
||
func resourceVolcengineIamUserGroupRead(d *schema.ResourceData, meta interface{}) (err error) { | ||
service := NewIamUserGroupService(meta.(*ve.SdkClient)) | ||
err = service.Dispatcher.Read(service, d, ResourceVolcengineIamUserGroup()) | ||
if err != nil { | ||
return fmt.Errorf("error on reading iam_user_group %q, %s", d.Id(), err) | ||
} | ||
return err | ||
} | ||
|
||
func resourceVolcengineIamUserGroupUpdate(d *schema.ResourceData, meta interface{}) (err error) { | ||
service := NewIamUserGroupService(meta.(*ve.SdkClient)) | ||
err = service.Dispatcher.Update(service, d, ResourceVolcengineIamUserGroup()) | ||
if err != nil { | ||
return fmt.Errorf("error on updating iam_user_group %q, %s", d.Id(), err) | ||
} | ||
return resourceVolcengineIamUserGroupRead(d, meta) | ||
} | ||
|
||
func resourceVolcengineIamUserGroupDelete(d *schema.ResourceData, meta interface{}) (err error) { | ||
service := NewIamUserGroupService(meta.(*ve.SdkClient)) | ||
err = service.Dispatcher.Delete(service, d, ResourceVolcengineIamUserGroup()) | ||
if err != nil { | ||
return fmt.Errorf("error on deleting iam_user_group %q, %s", d.Id(), err) | ||
} | ||
return err | ||
} |
106 changes: 106 additions & 0 deletions
106
volcengine/iam/iam_user_group/resource_volcengine_iam_user_group_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
package iam_user_group_test | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/helper/resource" | ||
ve "github.com/volcengine/terraform-provider-volcengine/common" | ||
"github.com/volcengine/terraform-provider-volcengine/volcengine" | ||
"github.com/volcengine/terraform-provider-volcengine/volcengine/iam/iam_user_group" | ||
) | ||
|
||
const testAccVolcengineIamUserGroupCreateConfig = ` | ||
resource "volcengine_iam_user_group" "foo" { | ||
user_group_name = "acc-test-group" | ||
description = "acc-test" | ||
display_name = "acc-test" | ||
} | ||
` | ||
|
||
const testAccVolcengineIamUserGroupUpdateConfig = ` | ||
resource "volcengine_iam_user_group" "foo" { | ||
description = "acc-test" | ||
display_name = "acc-test-modify" | ||
user_group_name = "acc-test-group" | ||
} | ||
` | ||
|
||
func TestAccVolcengineIamUserGroupResource_Basic(t *testing.T) { | ||
resourceName := "volcengine_iam_user_group.foo" | ||
|
||
acc := &volcengine.AccTestResource{ | ||
ResourceId: resourceName, | ||
SvcInitFunc: func(client *ve.SdkClient) ve.ResourceService { | ||
return iam_user_group.NewIamUserGroupService(client) | ||
}, | ||
} | ||
|
||
resource.ParallelTest(t, resource.TestCase{ | ||
PreCheck: func() { | ||
volcengine.AccTestPreCheck(t) | ||
}, | ||
Providers: volcengine.GetTestAccProviders(), | ||
CheckDestroy: volcengine.AccTestCheckResourceRemove(acc), | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccVolcengineIamUserGroupCreateConfig, | ||
Check: resource.ComposeTestCheckFunc( | ||
volcengine.AccTestCheckResourceExists(acc), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "description", "acc-test"), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "display_name", "acc-test"), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "user_group_name", "acc-test-group"), | ||
), | ||
}, | ||
{ | ||
ResourceName: resourceName, | ||
ImportState: true, | ||
ImportStateVerify: true, | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func TestAccVolcengineIamUserGroupResource_Update(t *testing.T) { | ||
resourceName := "volcengine_iam_user_group.foo" | ||
|
||
acc := &volcengine.AccTestResource{ | ||
ResourceId: resourceName, | ||
SvcInitFunc: func(client *ve.SdkClient) ve.ResourceService { | ||
return iam_user_group.NewIamUserGroupService(client) | ||
}, | ||
} | ||
|
||
resource.ParallelTest(t, resource.TestCase{ | ||
PreCheck: func() { | ||
volcengine.AccTestPreCheck(t) | ||
}, | ||
Providers: volcengine.GetTestAccProviders(), | ||
CheckDestroy: volcengine.AccTestCheckResourceRemove(acc), | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccVolcengineIamUserGroupCreateConfig, | ||
Check: resource.ComposeTestCheckFunc( | ||
volcengine.AccTestCheckResourceExists(acc), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "description", "acc-test"), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "display_name", "acc-test"), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "user_group_name", "acc-test-group"), | ||
), | ||
}, | ||
{ | ||
Config: testAccVolcengineIamUserGroupUpdateConfig, | ||
Check: resource.ComposeTestCheckFunc( | ||
volcengine.AccTestCheckResourceExists(acc), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "description", "acc-test"), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "display_name", "acc-test-modify"), | ||
resource.TestCheckResourceAttr(acc.ResourceId, "user_group_name", "acc-test-group"), | ||
), | ||
}, | ||
{ | ||
Config: testAccVolcengineIamUserGroupUpdateConfig, | ||
PlanOnly: true, | ||
ExpectNonEmptyPlan: false, // 修改之后,不应该再产生diff | ||
}, | ||
}, | ||
}) | ||
} |
Oops, something went wrong.