Skip to content

Commit

Permalink
Merge pull request #132 from volcengine/feat/iam
Browse files Browse the repository at this point in the history
Feat/iam
  • Loading branch information
zpp12354321 authored Oct 13, 2023
2 parents 99fa5b7 + 3a10090 commit 85ef331
Show file tree
Hide file tree
Showing 17 changed files with 1,026 additions and 4 deletions.
2 changes: 1 addition & 1 deletion common/common_volcengine_version.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ package common

const (
TerraformProviderName = "terraform-provider-volcengine"
TerraformProviderVersion = "0.0.113"
TerraformProviderVersion = "0.0.114"
)
9 changes: 9 additions & 0 deletions example/dataIamUserGroups/main.tf
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"
}
5 changes: 5 additions & 0 deletions example/iamUserGroup/main.tf
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"
}
16 changes: 16 additions & 0 deletions example/iamUserGroupAttachment/main.tf
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
}
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())
}
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"),
),
},
},
})
}
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
}
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
},
},
})
}
Loading

0 comments on commit 85ef331

Please sign in to comment.