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

add aws_sagemaker_servicecatalog_portfolio_status resource #27548

Merged
merged 2 commits into from
Oct 31, 2022
Merged
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
3 changes: 3 additions & 0 deletions .changelog/27548.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-resource
aws_sagemaker_servicecatalog_portfolio_status
```
1 change: 1 addition & 0 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -1995,6 +1995,7 @@ func New(_ context.Context) (*schema.Provider, error) {
"aws_sagemaker_notebook_instance": sagemaker.ResourceNotebookInstance(),
"aws_sagemaker_notebook_instance_lifecycle_configuration": sagemaker.ResourceNotebookInstanceLifeCycleConfiguration(),
"aws_sagemaker_project": sagemaker.ResourceProject(),
"aws_sagemaker_servicecatalog_portfolio_status": sagemaker.ResourceServicecatalogPortfolioStatus(),
"aws_sagemaker_studio_lifecycle_config": sagemaker.ResourceStudioLifecycleConfig(),
"aws_sagemaker_user_profile": sagemaker.ResourceUserProfile(),
"aws_sagemaker_workforce": sagemaker.ResourceWorkforce(),
Expand Down
3 changes: 3 additions & 0 deletions internal/service/sagemaker/sagemaker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,9 @@ func TestAccSageMaker_serial(t *testing.T) {
"OidcConfig": testAccWorkteam_oidcConfig,
"Tags": testAccWorkteam_tags,
},
"Servicecatalog": {
"basic": testAccServicecatalogPortfolioStatus_basic,
},
}

for group, m := range testCases {
Expand Down
63 changes: 63 additions & 0 deletions internal/service/sagemaker/servicecatalog_portfolio_status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package sagemaker

import (
"fmt"

"github.com/aws/aws-sdk-go/service/sagemaker"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
)

func ResourceServicecatalogPortfolioStatus() *schema.Resource {
return &schema.Resource{
Create: resourceServicecatalogPortfolioStatusPut,
Read: resourceServicecatalogPortfolioStatusRead,
Update: resourceServicecatalogPortfolioStatusPut,
Delete: schema.Noop,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},

Schema: map[string]*schema.Schema{
"status": {
Type: schema.TypeString,
Required: true,
ValidateFunc: validation.StringInSlice(sagemaker.SagemakerServicecatalogStatus_Values(), false),
},
},
}
}

func resourceServicecatalogPortfolioStatusPut(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).SageMakerConn

status := d.Get("status").(string)
var err error
if status == sagemaker.SagemakerServicecatalogStatusEnabled {
_, err = conn.EnableSagemakerServicecatalogPortfolio(&sagemaker.EnableSagemakerServicecatalogPortfolioInput{})
} else {
_, err = conn.DisableSagemakerServicecatalogPortfolio(&sagemaker.DisableSagemakerServicecatalogPortfolioInput{})
}

if err != nil {
return fmt.Errorf("setting SageMaker Servicecatalog Portfolio Status: %w", err)
}

d.SetId(meta.(*conns.AWSClient).Region)

return resourceServicecatalogPortfolioStatusRead(d, meta)
}

func resourceServicecatalogPortfolioStatusRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).SageMakerConn

resp, err := conn.GetSagemakerServicecatalogPortfolioStatus(&sagemaker.GetSagemakerServicecatalogPortfolioStatusInput{})
if err != nil {
return fmt.Errorf("Getting SageMaker Servicecatalog Portfolio Status: %w", err)
}

d.Set("status", resp.Status)

return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
package sagemaker_test

import (
"fmt"
"testing"

"github.com/aws/aws-sdk-go/service/sagemaker"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
)

func testAccServicecatalogPortfolioStatus_basic(t *testing.T) {
var config sagemaker.GetSagemakerServicecatalogPortfolioStatusOutput
resourceName := "aws_sagemaker_servicecatalog_portfolio_status.test"

resource.Test(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t) },
ErrorCheck: acctest.ErrorCheck(t, sagemaker.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
CheckDestroy: nil,
Steps: []resource.TestStep{
{
Config: testAccServicecatalogPortfolioStatusConfigConfig_basic("Enabled"),
Check: resource.ComposeTestCheckFunc(
testAccCheckServicecatalogPortfolioStatusExistsConfig(resourceName, &config),
resource.TestCheckResourceAttr(resourceName, "status", "Enabled"),
),
},
{
ResourceName: resourceName,
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccServicecatalogPortfolioStatusConfigConfig_basic("Disabled"),
Check: resource.ComposeTestCheckFunc(
testAccCheckServicecatalogPortfolioStatusExistsConfig(resourceName, &config),
resource.TestCheckResourceAttr(resourceName, "status", "Disabled"),
),
},
{
Config: testAccServicecatalogPortfolioStatusConfigConfig_basic("Enabled"),
Check: resource.ComposeTestCheckFunc(
testAccCheckServicecatalogPortfolioStatusExistsConfig(resourceName, &config),
resource.TestCheckResourceAttr(resourceName, "status", "Enabled"),
),
},
},
})
}

func testAccCheckServicecatalogPortfolioStatusExistsConfig(n string, config *sagemaker.GetSagemakerServicecatalogPortfolioStatusOutput) resource.TestCheckFunc {
return func(s *terraform.State) error {
rs, ok := s.RootModule().Resources[n]
if !ok {
return fmt.Errorf("Not found: %s", n)
}

if rs.Primary.ID == "" {
return fmt.Errorf("No SageMaker Studio Lifecycle Config ID is set")
}

conn := acctest.Provider.Meta().(*conns.AWSClient).SageMakerConn

output, err := conn.GetSagemakerServicecatalogPortfolioStatus(&sagemaker.GetSagemakerServicecatalogPortfolioStatusInput{})
if err != nil {
return err
}

*config = *output

return nil
}
}

func testAccServicecatalogPortfolioStatusConfigConfig_basic(status string) string {
return fmt.Sprintf(`
resource "aws_sagemaker_servicecatalog_portfolio_status" "test" {
status = %[1]q
}
`, status)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
subcategory: "SageMaker"
layout: "aws"
page_title: "AWS: aws_sagemaker_servicecatalog_portfolio_status"
description: |-
Manages status of Service Catalog in SageMaker. Service Catalog is used to create SageMaker projects.
---

# Resource: aws_sagemaker_servicecatalog_portfolio_status

Manages status of Service Catalog in SageMaker. Service Catalog is used to create SageMaker projects.

## Example Usage

Usage:

```terraform
resource "aws_sagemaker_servicecatalog_portfolio_status" "example" {
status = "Enabled"
}
```

## Argument Reference

The following arguments are supported:

* `status` - (Required) Whether Service Catalog is enabled or disabled in SageMaker. Valid values are `Enabled` and `Disabled`.

## Attributes Reference

In addition to all arguments above, the following attributes are exported:

* `id` - The AWS Region the Servicecatalog portfolio status resides in.

## Import

Models can be imported using the `id`, e.g.,

```
$ terraform import aws_sagemaker_servicecatalog_portfolio_status.example us-east-1
```