-
Notifications
You must be signed in to change notification settings - Fork 9.2k
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 #34232 from danquack/34168
d/aws_mq_engine_versions + add sdkv2 client for mq
- Loading branch information
Showing
9 changed files
with
223 additions
and
1 deletion.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
```release-note:new-data-source | ||
aws_mq_broker_engine_types | ||
``` |
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
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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,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
45
internal/service/mq/broker_engine_types_data_source_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,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) | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
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,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. |