provider/aws: Add support for importing Kinesis Streams (#14278)
Fixes: #14260 ``` % make testacc TEST=./builtin/providers/aws TESTARGS='-run=TestAccAWSKinesisStream_import' ==> Checking that code complies with gofmt requirements... go generate $(go list ./... | grep -v /terraform/vendor/) 2017/05/08 10:32:47 Generated command/internal_plugin_list.go TF_ACC=1 go test ./builtin/providers/aws -v -run=TestAccAWSKinesisStream_import -timeout 120m === RUN TestAccAWSKinesisStream_importBasic --- PASS: TestAccAWSKinesisStream_importBasic (101.93s) PASS ok github.com/hashicorp/terraform/builtin/providers/aws 101.978s ```
This commit is contained in:
parent
3cec809297
commit
221a88610b
|
@ -18,21 +18,24 @@ func resourceAwsKinesisStream() *schema.Resource {
|
|||
Read: resourceAwsKinesisStreamRead,
|
||||
Update: resourceAwsKinesisStreamUpdate,
|
||||
Delete: resourceAwsKinesisStreamDelete,
|
||||
Importer: &schema.ResourceImporter{
|
||||
State: resourceAwsKinesisStreamImport,
|
||||
},
|
||||
|
||||
Schema: map[string]*schema.Schema{
|
||||
"name": &schema.Schema{
|
||||
"name": {
|
||||
Type: schema.TypeString,
|
||||
Required: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
|
||||
"shard_count": &schema.Schema{
|
||||
"shard_count": {
|
||||
Type: schema.TypeInt,
|
||||
Required: true,
|
||||
ForceNew: true,
|
||||
},
|
||||
|
||||
"retention_period": &schema.Schema{
|
||||
"retention_period": {
|
||||
Type: schema.TypeInt,
|
||||
Optional: true,
|
||||
Default: 24,
|
||||
|
@ -46,14 +49,14 @@ func resourceAwsKinesisStream() *schema.Resource {
|
|||
},
|
||||
},
|
||||
|
||||
"shard_level_metrics": &schema.Schema{
|
||||
"shard_level_metrics": {
|
||||
Type: schema.TypeSet,
|
||||
Optional: true,
|
||||
Elem: &schema.Schema{Type: schema.TypeString},
|
||||
Set: schema.HashString,
|
||||
},
|
||||
|
||||
"arn": &schema.Schema{
|
||||
"arn": {
|
||||
Type: schema.TypeString,
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
|
@ -63,6 +66,12 @@ func resourceAwsKinesisStream() *schema.Resource {
|
|||
}
|
||||
}
|
||||
|
||||
func resourceAwsKinesisStreamImport(
|
||||
d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
||||
d.Set("name", d.Id())
|
||||
return []*schema.ResourceData{d}, nil
|
||||
}
|
||||
|
||||
func resourceAwsKinesisStreamCreate(d *schema.ResourceData, meta interface{}) error {
|
||||
conn := meta.(*AWSClient).kinesisconn
|
||||
sn := d.Get("name").(string)
|
||||
|
@ -140,6 +149,7 @@ func resourceAwsKinesisStreamRead(d *schema.ResourceData, meta interface{}) erro
|
|||
return err
|
||||
|
||||
}
|
||||
d.SetId(state.arn)
|
||||
d.Set("arn", state.arn)
|
||||
d.Set("shard_count", len(state.openShards))
|
||||
d.Set("retention_period", state.retentionPeriod)
|
||||
|
|
|
@ -2,14 +2,13 @@ package aws
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/service/kinesis"
|
||||
"github.com/hashicorp/terraform/helper/acctest"
|
||||
"github.com/hashicorp/terraform/helper/resource"
|
||||
"github.com/hashicorp/terraform/terraform"
|
||||
)
|
||||
|
@ -17,15 +16,15 @@ import (
|
|||
func TestAccAWSKinesisStream_basic(t *testing.T) {
|
||||
var stream kinesis.StreamDescription
|
||||
|
||||
config := fmt.Sprintf(testAccKinesisStreamConfig, rand.New(rand.NewSource(time.Now().UnixNano())).Int())
|
||||
rInt := acctest.RandInt()
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckKinesisStreamDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: config,
|
||||
{
|
||||
Config: testAccKinesisStreamConfig(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -35,20 +34,42 @@ func TestAccAWSKinesisStream_basic(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestAccAWSKinesisStream_shardCount(t *testing.T) {
|
||||
var stream kinesis.StreamDescription
|
||||
|
||||
ri := rand.New(rand.NewSource(time.Now().UnixNano())).Int()
|
||||
config := fmt.Sprintf(testAccKinesisStreamConfig, ri)
|
||||
updateConfig := fmt.Sprintf(testAccKinesisStreamConfigUpdateShardCount, ri)
|
||||
func TestAccAWSKinesisStream_importBasic(t *testing.T) {
|
||||
rInt := acctest.RandInt()
|
||||
resourceName := "aws_kinesis_stream.test_stream"
|
||||
streamName := fmt.Sprintf("terraform-kinesis-test-%d", rInt)
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckKinesisStreamDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: config,
|
||||
{
|
||||
Config: testAccKinesisStreamConfig(rInt),
|
||||
},
|
||||
|
||||
{
|
||||
ResourceName: resourceName,
|
||||
ImportState: true,
|
||||
ImportStateVerify: true,
|
||||
ImportStateId: streamName,
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestAccAWSKinesisStream_shardCount(t *testing.T) {
|
||||
var stream kinesis.StreamDescription
|
||||
|
||||
rInt := acctest.RandInt()
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckKinesisStreamDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
{
|
||||
Config: testAccKinesisStreamConfig(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -57,8 +78,8 @@ func TestAccAWSKinesisStream_shardCount(t *testing.T) {
|
|||
),
|
||||
},
|
||||
|
||||
resource.TestStep{
|
||||
Config: updateConfig,
|
||||
{
|
||||
Config: testAccKinesisStreamConfigUpdateShardCount(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -73,18 +94,15 @@ func TestAccAWSKinesisStream_shardCount(t *testing.T) {
|
|||
func TestAccAWSKinesisStream_retentionPeriod(t *testing.T) {
|
||||
var stream kinesis.StreamDescription
|
||||
|
||||
ri := rand.New(rand.NewSource(time.Now().UnixNano())).Int()
|
||||
config := fmt.Sprintf(testAccKinesisStreamConfig, ri)
|
||||
updateConfig := fmt.Sprintf(testAccKinesisStreamConfigUpdateRetentionPeriod, ri)
|
||||
decreaseConfig := fmt.Sprintf(testAccKinesisStreamConfigDecreaseRetentionPeriod, ri)
|
||||
rInt := acctest.RandInt()
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckKinesisStreamDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: config,
|
||||
{
|
||||
Config: testAccKinesisStreamConfig(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -93,8 +111,8 @@ func TestAccAWSKinesisStream_retentionPeriod(t *testing.T) {
|
|||
),
|
||||
},
|
||||
|
||||
resource.TestStep{
|
||||
Config: updateConfig,
|
||||
{
|
||||
Config: testAccKinesisStreamConfigUpdateRetentionPeriod(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -103,8 +121,8 @@ func TestAccAWSKinesisStream_retentionPeriod(t *testing.T) {
|
|||
),
|
||||
},
|
||||
|
||||
resource.TestStep{
|
||||
Config: decreaseConfig,
|
||||
{
|
||||
Config: testAccKinesisStreamConfigDecreaseRetentionPeriod(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -119,18 +137,15 @@ func TestAccAWSKinesisStream_retentionPeriod(t *testing.T) {
|
|||
func TestAccAWSKinesisStream_shardLevelMetrics(t *testing.T) {
|
||||
var stream kinesis.StreamDescription
|
||||
|
||||
ri := rand.New(rand.NewSource(time.Now().UnixNano())).Int()
|
||||
config := fmt.Sprintf(testAccKinesisStreamConfig, ri)
|
||||
allConfig := fmt.Sprintf(testAccKinesisStreamConfigAllShardLevelMetrics, ri)
|
||||
singleConfig := fmt.Sprintf(testAccKinesisStreamConfigSingleShardLevelMetric, ri)
|
||||
rInt := acctest.RandInt()
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckKinesisStreamDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: config,
|
||||
{
|
||||
Config: testAccKinesisStreamConfig(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -139,8 +154,8 @@ func TestAccAWSKinesisStream_shardLevelMetrics(t *testing.T) {
|
|||
),
|
||||
},
|
||||
|
||||
resource.TestStep{
|
||||
Config: allConfig,
|
||||
{
|
||||
Config: testAccKinesisStreamConfigAllShardLevelMetrics(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -149,8 +164,8 @@ func TestAccAWSKinesisStream_shardLevelMetrics(t *testing.T) {
|
|||
),
|
||||
},
|
||||
|
||||
resource.TestStep{
|
||||
Config: singleConfig,
|
||||
{
|
||||
Config: testAccKinesisStreamConfigSingleShardLevelMetric(rInt),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckKinesisStreamExists("aws_kinesis_stream.test_stream", &stream),
|
||||
testAccCheckAWSKinesisStreamAttributes(&stream),
|
||||
|
@ -232,27 +247,30 @@ func testAccCheckKinesisStreamDestroy(s *terraform.State) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
var testAccKinesisStreamConfig = `
|
||||
func testAccKinesisStreamConfig(rInt int) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_kinesis_stream" "test_stream" {
|
||||
name = "terraform-kinesis-test-%d"
|
||||
shard_count = 2
|
||||
tags {
|
||||
Name = "tf-test"
|
||||
}
|
||||
}`, rInt)
|
||||
}
|
||||
`
|
||||
|
||||
var testAccKinesisStreamConfigUpdateShardCount = `
|
||||
func testAccKinesisStreamConfigUpdateShardCount(rInt int) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_kinesis_stream" "test_stream" {
|
||||
name = "terraform-kinesis-test-%d"
|
||||
shard_count = 4
|
||||
tags {
|
||||
Name = "tf-test"
|
||||
}
|
||||
}`, rInt)
|
||||
}
|
||||
`
|
||||
|
||||
var testAccKinesisStreamConfigUpdateRetentionPeriod = `
|
||||
func testAccKinesisStreamConfigUpdateRetentionPeriod(rInt int) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_kinesis_stream" "test_stream" {
|
||||
name = "terraform-kinesis-test-%d"
|
||||
shard_count = 2
|
||||
|
@ -260,10 +278,11 @@ resource "aws_kinesis_stream" "test_stream" {
|
|||
tags {
|
||||
Name = "tf-test"
|
||||
}
|
||||
}`, rInt)
|
||||
}
|
||||
`
|
||||
|
||||
var testAccKinesisStreamConfigDecreaseRetentionPeriod = `
|
||||
func testAccKinesisStreamConfigDecreaseRetentionPeriod(rInt int) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_kinesis_stream" "test_stream" {
|
||||
name = "terraform-kinesis-test-%d"
|
||||
shard_count = 2
|
||||
|
@ -271,10 +290,11 @@ resource "aws_kinesis_stream" "test_stream" {
|
|||
tags {
|
||||
Name = "tf-test"
|
||||
}
|
||||
}`, rInt)
|
||||
}
|
||||
`
|
||||
|
||||
var testAccKinesisStreamConfigAllShardLevelMetrics = `
|
||||
func testAccKinesisStreamConfigAllShardLevelMetrics(rInt int) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_kinesis_stream" "test_stream" {
|
||||
name = "terraform-kinesis-test-%d"
|
||||
shard_count = 2
|
||||
|
@ -290,10 +310,11 @@ resource "aws_kinesis_stream" "test_stream" {
|
|||
"ReadProvisionedThroughputExceeded",
|
||||
"IteratorAgeMilliseconds"
|
||||
]
|
||||
}`, rInt)
|
||||
}
|
||||
`
|
||||
|
||||
var testAccKinesisStreamConfigSingleShardLevelMetric = `
|
||||
func testAccKinesisStreamConfigSingleShardLevelMetric(rInt int) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "aws_kinesis_stream" "test_stream" {
|
||||
name = "terraform-kinesis-test-%d"
|
||||
shard_count = 2
|
||||
|
@ -303,5 +324,5 @@ resource "aws_kinesis_stream" "test_stream" {
|
|||
shard_level_metrics = [
|
||||
"IncomingBytes"
|
||||
]
|
||||
}`, rInt)
|
||||
}
|
||||
`
|
||||
|
|
|
@ -53,6 +53,15 @@ when creating a Kinesis stream. See [Amazon Kinesis Streams][2] for more.
|
|||
* `arn` - The Amazon Resource Name (ARN) specifying the Stream
|
||||
|
||||
|
||||
## Import
|
||||
|
||||
Kinesis Streams can be imported using the `name`, e.g.
|
||||
|
||||
```
|
||||
$ terraform import aws_kinesis_stream.test_stream terraform-kinesis-test
|
||||
```
|
||||
|
||||
[1]: https://aws.amazon.com/documentation/kinesis/
|
||||
[2]: https://docs.aws.amazon.com/kinesis/latest/dev/amazon-kinesis-streams.html
|
||||
[3]: https://docs.aws.amazon.com/streams/latest/dev/monitoring-with-cloudwatch.html
|
||||
|
||||
|
|
Loading…
Reference in New Issue