Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New resource & data source: aws_grafana_workspace #22874

Merged
merged 52 commits into from
Feb 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
176a6d3
feat(aws_grafana_workspace): init
AlexanderSchiff Feb 1, 2022
1bb246a
feat(workspace_test.go): adding in first test
AlexanderSchiff Feb 1, 2022
1de7636
bugfix(workspace.go): fixing errors
AlexanderSchiff Feb 1, 2022
5478050
bugfix(workspace.go): fixing errors
AlexanderSchiff Feb 1, 2022
32f962f
bugfix(workspace.go): trying to fix tests
AlexanderSchiff Feb 1, 2022
c050264
bugfix(workspace.go): flex instead of stringslice
AlexanderSchiff Feb 1, 2022
2b42caf
feat(workspace_test.go): add in organization use-case
AlexanderSchiff Feb 2, 2022
1dc5e7f
feat(workspace.go): switching tfawserr as requested
AlexanderSchiff Feb 3, 2022
1699d06
feat(workspace.go): fixing merge conflict
AlexanderSchiff Feb 3, 2022
58da8a1
updating
AlexanderSchiff Feb 3, 2022
8392cb1
Delete .gitpod.yml
AlexanderSchiff Feb 3, 2022
c34debe
fixing formatting
AlexanderSchiff Feb 3, 2022
7dc478b
fixing formatting
AlexanderSchiff Feb 3, 2022
8d89705
Trying to fix formatting
AlexanderSchiff Feb 3, 2022
d0c7e65
Trying to fix formatting
AlexanderSchiff Feb 3, 2022
bffbf26
Merge branch 'hashicorp:main' into f-aws_grafana_workspace
AlexanderSchiff Feb 4, 2022
470dd1f
feat(workspace.go): fix err handling
AlexanderSchiff Feb 4, 2022
72684ac
Merge remote-tracking branch 'origin/f-aws_grafana_workspace' into f-…
AlexanderSchiff Feb 4, 2022
a6494f9
f(workspace_test.go): running terraform fmt
AlexanderSchiff Feb 5, 2022
66564ae
f(workspace_test.go): fixing tests
AlexanderSchiff Feb 5, 2022
a79a14a
Merge branch 'hashicorp:main' into f-aws_grafana_workspace
AlexanderSchiff Feb 9, 2022
2117fa2
f(workspace): adding in data source
AlexanderSchiff Feb 9, 2022
3c771d2
updating imports
AlexanderSchiff Feb 9, 2022
3f1216d
Merge branch 'hashicorp:main' into f-aws_grafana_workspace
AlexanderSchiff Feb 13, 2022
a60cc43
f(workspace): adding in data source
AlexanderSchiff Feb 13, 2022
ea47d04
f(workspace): adding in data source
AlexanderSchiff Feb 13, 2022
0f44f39
Merge branch 'hashicorp:main' into f-aws_grafana_workspace
AlexanderSchiff Feb 15, 2022
ea3227a
f(workspace): fixing import
AlexanderSchiff Feb 15, 2022
62204c3
Merge branch 'f-aws_grafana_workspace' of https://github.com/Alexande…
AlexanderSchiff Feb 15, 2022
9f62cbc
f(workspace): fixing spacing
AlexanderSchiff Feb 15, 2022
5962643
f(workspace): removing fmt.Sprint
AlexanderSchiff Feb 15, 2022
7d38798
f(workspace): do not call workspaceRead
AlexanderSchiff Feb 15, 2022
19ce5e9
r/aws_grafana_workspace: Alphabetize attributes and remove explicit '…
ewbankkit Feb 16, 2022
9a247c9
r/aws_grafana_workspace: Remove 'created_date', 'last_updated_date' a…
ewbankkit Feb 16, 2022
faa6f7e
r/aws_grafana_workspace: Correct ARN format.
ewbankkit Feb 16, 2022
584e11a
'FindWorkspaceById' -> 'FindWorkspaceByID'.
ewbankkit Feb 16, 2022
1be8143
r/aws_grafana_workspace: Correct waiter return type.
ewbankkit Feb 16, 2022
1f5a60d
Remove empty file.
ewbankkit Feb 16, 2022
0402079
r/aws_grafana_workspace: Cosmetics.
ewbankkit Feb 16, 2022
2b46d24
r/aws_grafana_workspace: 'saml_configuration_status' is computed.
ewbankkit Feb 16, 2022
60ee979
Merge branch 'main' into HEAD
ewbankkit Feb 16, 2022
3013140
r/aws_grafana_workspace: 'name' is computed'.
ewbankkit Feb 16, 2022
38f2093
r/aws_grafana_workspace: Test 'TestAccGrafanaWorkspace_dataSources'.
ewbankkit Feb 16, 2022
65771cb
Simplify 'testAccWorkspaceConfigDataSources'.
ewbankkit Feb 16, 2022
64b41fa
r/aws_grafana_workspace: Test 'TestAccGrafanaWorkspace_permissionType'.
ewbankkit Feb 16, 2022
d3c5f7a
r/aws_grafana_workspace: Wait after updating workspace.
ewbankkit Feb 16, 2022
8c44d98
r/aws_grafana_workspace: Test 'TestAccGrafanaWorkspace_organization'.
ewbankkit Feb 16, 2022
68b25ed
r/aws_grafana_workspace: Test 'TestAccGrafanaWorkspace_sso'.
ewbankkit Feb 16, 2022
d1011dd
r/aws_grafana_workspace: Add 'TestAccGrafanaWorkspace_disappears'.
ewbankkit Feb 16, 2022
9406bf1
r/aws_grafana_workspace: Change 'authentication_providers' to ForceNe…
ewbankkit Feb 16, 2022
dac4bc1
d/aws_grafana_workspace: Required argument is named 'workspace_id'.
ewbankkit Feb 16, 2022
f5832b3
Fix markdown-lint error: 'MD032/blanks-around-lists Lists should be s…
ewbankkit Feb 16, 2022
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
7 changes: 7 additions & 0 deletions .changelog/22874.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
```release-note:new-resource
aws_grafana_workspace
```

```release-note:new-data-source
aws_grafana_workspace
```
29 changes: 29 additions & 0 deletions internal/acctest/acctest.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"github.com/aws/aws-sdk-go/service/iam"
"github.com/aws/aws-sdk-go/service/organizations"
"github.com/aws/aws-sdk-go/service/outposts"
"github.com/aws/aws-sdk-go/service/ssoadmin"
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
Expand Down Expand Up @@ -711,6 +712,34 @@ func PreCheckOrganizationManagementAccount(t *testing.T) {
}
}

func PreCheckSSOAdminInstances(t *testing.T) {
conn := Provider.Meta().(*conns.AWSClient).SSOAdminConn
input := &ssoadmin.ListInstancesInput{}
var instances []*ssoadmin.InstanceMetadata

err := conn.ListInstancesPages(input, func(page *ssoadmin.ListInstancesOutput, lastPage bool) bool {
if page == nil {
return !lastPage
}

instances = append(instances, page.Instances...)

return !lastPage
})

if PreCheckSkipError(err) {
t.Skipf("skipping tests: %s", err)
}

if len(instances) == 0 {
t.Skip("skipping tests; no SSO Instances found.")
}

if err != nil {
t.Fatalf("error listing SSO Instances: %s", err)
}
}

func PreCheckHasIAMRole(t *testing.T, roleName string) {
conn := Provider.Meta().(*conns.AWSClient).IAMConn

Expand Down
5 changes: 5 additions & 0 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ import (
"github.com/hashicorp/terraform-provider-aws/internal/service/glacier"
"github.com/hashicorp/terraform-provider-aws/internal/service/globalaccelerator"
"github.com/hashicorp/terraform-provider-aws/internal/service/glue"
"github.com/hashicorp/terraform-provider-aws/internal/service/grafana"
"github.com/hashicorp/terraform-provider-aws/internal/service/guardduty"
"github.com/hashicorp/terraform-provider-aws/internal/service/iam"
"github.com/hashicorp/terraform-provider-aws/internal/service/identitystore"
Expand Down Expand Up @@ -617,6 +618,8 @@ func Provider() *schema.Provider {
"aws_glue_data_catalog_encryption_settings": glue.DataSourceDataCatalogEncryptionSettings(),
"aws_glue_script": glue.DataSourceScript(),

"aws_grafana_workspace": grafana.DataSourceWorkspace(),

"aws_guardduty_detector": guardduty.DataSourceDetector(),

"aws_iam_account_alias": iam.DataSourceAccountAlias(),
Expand Down Expand Up @@ -1390,6 +1393,8 @@ func Provider() *schema.Provider {
"aws_glue_user_defined_function": glue.ResourceUserDefinedFunction(),
"aws_glue_workflow": glue.ResourceWorkflow(),

"aws_grafana_workspace": grafana.ResourceWorkspace(),

"aws_guardduty_detector": guardduty.ResourceDetector(),
"aws_guardduty_filter": guardduty.ResourceFilter(),
"aws_guardduty_invite_accepter": guardduty.ResourceInviteAccepter(),
Expand Down
1 change: 0 additions & 1 deletion internal/service/grafana/consts.go

This file was deleted.

34 changes: 34 additions & 0 deletions internal/service/grafana/find.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package grafana

import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/managedgrafana"
"github.com/hashicorp/aws-sdk-go-base/v2/awsv1shim/v2/tfawserr"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
)

func FindWorkspaceByID(conn *managedgrafana.ManagedGrafana, id string) (*managedgrafana.WorkspaceDescription, error) {
input := &managedgrafana.DescribeWorkspaceInput{
WorkspaceId: aws.String(id),
}

output, err := conn.DescribeWorkspace(input)

if tfawserr.ErrCodeEquals(err, managedgrafana.ErrCodeResourceNotFoundException) {
return nil, &resource.NotFoundError{
LastError: err,
LastRequest: input,
}
}

if err != nil {
return nil, err
}

if output == nil || output.Workspace == nil {
return nil, tfresource.NewEmptyResultError(input)
}

return output.Workspace, nil
}
24 changes: 24 additions & 0 deletions internal/service/grafana/status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package grafana

import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/managedgrafana"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
)

func statusWorkspaceStatus(conn *managedgrafana.ManagedGrafana, id string) resource.StateRefreshFunc {
return func() (interface{}, string, error) {
output, err := FindWorkspaceByID(conn, id)

if tfresource.NotFound(err) {
return nil, "", nil
}

if err != nil {
return nil, "", err
}

return output, aws.StringValue(output.Status), nil
}
}
59 changes: 59 additions & 0 deletions internal/service/grafana/wait.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package grafana

import (
"time"

"github.com/aws/aws-sdk-go/service/managedgrafana"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func waitWorkspaceCreated(conn *managedgrafana.ManagedGrafana, id string, timeout time.Duration) (*managedgrafana.WorkspaceDescription, error) {
stateConf := &resource.StateChangeConf{
Pending: []string{managedgrafana.WorkspaceStatusCreating},
Target: []string{managedgrafana.WorkspaceStatusActive},
Refresh: statusWorkspaceStatus(conn, id),
Timeout: timeout,
}

outputRaw, err := stateConf.WaitForState()

if output, ok := outputRaw.(*managedgrafana.WorkspaceDescription); ok {
return output, err
}

return nil, err
}

func waitWorkspaceUpdated(conn *managedgrafana.ManagedGrafana, id string, timeout time.Duration) (*managedgrafana.WorkspaceDescription, error) {
stateConf := &resource.StateChangeConf{
Pending: []string{managedgrafana.WorkspaceStatusUpdating},
Target: []string{managedgrafana.WorkspaceStatusActive},
Refresh: statusWorkspaceStatus(conn, id),
Timeout: timeout,
}

outputRaw, err := stateConf.WaitForState()

if output, ok := outputRaw.(*managedgrafana.WorkspaceDescription); ok {
return output, err
}

return nil, err
}

func waitWorkspaceDeleted(conn *managedgrafana.ManagedGrafana, id string, timeout time.Duration) (*managedgrafana.WorkspaceDescription, error) {
stateConf := &resource.StateChangeConf{
Pending: []string{managedgrafana.WorkspaceStatusDeleting},
Target: []string{},
Refresh: statusWorkspaceStatus(conn, id),
Timeout: timeout,
}

outputRaw, err := stateConf.WaitForState()

if output, ok := outputRaw.(*managedgrafana.WorkspaceDescription); ok {
return output, err
}

return nil, err
}
Loading