Skip to content

Commit

Permalink
Merge pull request #34232 from danquack/34168
Browse files Browse the repository at this point in the history
d/aws_mq_engine_versions + add sdkv2 client for mq
  • Loading branch information
ewbankkit authored Dec 22, 2023
2 parents 9e14972 + b0f3b71 commit e65a530
Show file tree
Hide file tree
Showing 9 changed files with 223 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .changelog/34232.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-data-source
aws_mq_broker_engine_types
```
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/medialive v1.43.3
github.com/aws/aws-sdk-go-v2/service/mediapackage v1.28.5
github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.7.5
github.com/aws/aws-sdk-go-v2/service/mq v1.20.6
github.com/aws/aws-sdk-go-v2/service/oam v1.7.5
github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.9.5
github.com/aws/aws-sdk-go-v2/service/osis v1.6.5
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,8 @@ github.com/aws/aws-sdk-go-v2/service/mediapackage v1.28.5 h1:z+b1lClMC3rSxlUQqRb
github.com/aws/aws-sdk-go-v2/service/mediapackage v1.28.5/go.mod h1:wGaElJ8kmGJ08nnirzZ/6iWKqBPErlHqtpkbx9go82Q=
github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.7.5 h1:tkFfqFu8yx0AmRZAlwcF6hdDf7E7J+0P4tRAtfVB2bA=
github.com/aws/aws-sdk-go-v2/service/mediapackagev2 v1.7.5/go.mod h1:pPsl4jKNPkhp2unuSQ3upeQ+9U8onSOPA2B++m5bD8o=
github.com/aws/aws-sdk-go-v2/service/mq v1.20.6 h1:n86T5yw0kS6a5nbpkEpDzLPCBXXb35lx3iDkmQWlizA=
github.com/aws/aws-sdk-go-v2/service/mq v1.20.6/go.mod h1:phfKOOpMQhlBv2KE8gF17P82zLcSedA9b7fMSGTLBdQ=
github.com/aws/aws-sdk-go-v2/service/oam v1.7.5 h1:Z5qjasrNlticGJVwZahvPiv7cnGeuEFGQ5AdCeTgf/0=
github.com/aws/aws-sdk-go-v2/service/oam v1.7.5/go.mod h1:qwJgNmAMUGFkLgAgTtkZZpGf9Qe1L0PwMD4oXMeS9Ic=
github.com/aws/aws-sdk-go-v2/service/opensearchserverless v1.9.5 h1:V+zBQiUAATdwx3rLbc4Em+G0IeqPtY1281lHMrTvIK4=
Expand Down
5 changes: 5 additions & 0 deletions internal/conns/awsclient_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

112 changes: 112 additions & 0 deletions internal/service/mq/broker_engine_types_data_source.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package mq

import (
"context"

"github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/service/mq"
"github.com/aws/aws-sdk-go-v2/service/mq/types"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/id"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
"github.com/hashicorp/terraform-provider-aws/internal/enum"
"github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag"
)

// @SDKDataSource("aws_mq_broker_engine_types", name="Broker Engine Types")
func DataSourceBrokerEngineTypes() *schema.Resource {
return &schema.Resource{
ReadWithoutTimeout: dataSourceBrokerEngineTypesRead,

Schema: map[string]*schema.Schema{
"broker_engine_types": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"engine_type": {
Type: schema.TypeString,
Computed: true,
},
"engine_versions": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"name": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
},
},
},
"engine_type": {
Type: schema.TypeString,
Optional: true,
ValidateDiagFunc: enum.Validate[types.EngineType](),
},
},
}
}

func dataSourceBrokerEngineTypesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
var diags diag.Diagnostics
client := meta.(*conns.AWSClient).MQClient(ctx)

input := &mq.DescribeBrokerEngineTypesInput{}

if v, ok := d.GetOk("engine_type"); ok {
input.EngineType = aws.String(v.(string))
}

var engineTypes []types.BrokerEngineType
for {
output, err := client.DescribeBrokerEngineTypes(ctx, input)

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading MQ Broker Engine Types: %s", err)
}

engineTypes = append(engineTypes, output.BrokerEngineTypes...)

if output.NextToken == nil {
break
}

input.NextToken = output.NextToken
}

d.SetId(id.UniqueId())

if err := d.Set("broker_engine_types", flattenBrokerList(engineTypes)); err != nil {
return sdkdiag.AppendErrorf(diags, "setting broker_engine_types: %s", err)
}

return diags
}

func flattenBrokerList(types []types.BrokerEngineType) (brokers []map[string]interface{}) {
for _, broker := range types {
brokers = append(brokers, map[string]interface{}{
"engine_type": broker.EngineType,
"engine_versions": flattenEngineVersions(broker.EngineVersions),
})
}
return
}

func flattenEngineVersions(engines []types.EngineVersion) (versions []map[string]string) {
for _, engine := range engines {
versions = append(versions, map[string]string{
"name": aws.ToString(engine.Name),
})
}
return
}
45 changes: 45 additions & 0 deletions internal/service/mq/broker_engine_types_data_source_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package mq_test

import (
"fmt"
"testing"

"github.com/aws/aws-sdk-go/service/mq"
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
)

func TestAccMQBrokerEngineTypesDataSource_basic(t *testing.T) {
ctx := acctest.Context(t)
dataSourceName := "data.aws_mq_broker_engine_types.test"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() {
acctest.PreCheck(ctx, t)
acctest.PreCheckPartitionHasService(t, mq.EndpointsID)
testAccPreCheck(ctx, t)
},
ErrorCheck: acctest.ErrorCheck(t, mq.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
Steps: []resource.TestStep{
{
Config: testAccBrokerEngineTypesDataSourceConfig_basic("ACTIVEMQ"),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr(dataSourceName, "broker_engine_types.#", "1"),
resource.TestCheckResourceAttr(dataSourceName, "broker_engine_types.0.engine_type", "ACTIVEMQ"),
),
},
},
})
}

func testAccBrokerEngineTypesDataSourceConfig_basic(engineType string) string {
return fmt.Sprintf(`
data "aws_mq_broker_engine_types" "test" {
engine_type = %[1]q
}
`, engineType)
}
18 changes: 18 additions & 0 deletions internal/service/mq/service_package_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion names/data/names_data.csv
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ mobile,mobile,mobile,mobile,,mobile,,,Mobile,Mobile,,1,,,aws_mobile_,,mobile_,Mo
,,,,,,,,,,,,,,,,,Mobile SDK for Unity,AWS,x,,,,,,No SDK support
,,,,,,,,,,,,,,,,,Mobile SDK for Xamarin,AWS,x,,,,,,No SDK support
,,,,,,,,,,,,,,,,,Monitron,Amazon,x,,,,,,No SDK support
mq,mq,mq,mq,,mq,,,MQ,MQ,,1,,,aws_mq_,,mq_,MQ,Amazon,,,,,,,
mq,mq,mq,mq,,mq,,,MQ,MQ,,1,2,,aws_mq_,,mq_,MQ,Amazon,,,,,,,
mturk,mturk,mturk,mturk,,mturk,,,MTurk,MTurk,,1,,,aws_mturk_,,mturk_,MTurk (Mechanical Turk),Amazon,,x,,,,,
mwaa,mwaa,mwaa,mwaa,,mwaa,,,MWAA,MWAA,,1,,,aws_mwaa_,,mwaa_,MWAA (Managed Workflows for Apache Airflow),Amazon,,,,,,,
neptune,neptune,neptune,neptune,,neptune,,,Neptune,Neptune,,1,,,aws_neptune_,,neptune_,Neptune,Amazon,,,,,,,
Expand Down
36 changes: 36 additions & 0 deletions website/docs/d/mq_broker_engine_types.html.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
subcategory: "MQ"
layout: "aws"
page_title: "AWS: aws_mq_broker_engine_types"
description: |-
Retrieve information about available broker engines.
---

# Data Source: aws_mq_broker_engine_types

Retrieve information about available broker engines.

## Example Usage

### Basic Usage

```terraform
data "aws_mq_broker_engine_types" "example" {
engine_type = "ACTIVEMQ"
}
```

## Argument Reference

* `engine_type` - (Optional) The MQ engine type to return version details for.

## Attribute Reference

This data source exports the following attributes in addition to the arguments above:

* `broker_engine_types` - A list of available engine types and versions. See [Engine Types](#engine-types).

### engine-types

* `engine_type` - The broker's engine type.
* `engine_versions` - The list of engine versions.

0 comments on commit e65a530

Please sign in to comment.