From 9a0a875bd90aad5efe0c95f37b84d82a3ac5b28a Mon Sep 17 00:00:00 2001 From: Alex Meddin Date: Thu, 8 Dec 2022 14:52:34 -0800 Subject: [PATCH 1/5] r/aws_kinesis_firehose_delivery_stream add timeouts (#22645) Add timeout to kineses firehose create tmp --- internal/service/firehose/delivery_stream.go | 6 +++++- internal/service/firehose/wait.go | 5 ++--- .../docs/r/kinesis_firehose_delivery_stream.html.markdown | 6 ++++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/internal/service/firehose/delivery_stream.go b/internal/service/firehose/delivery_stream.go index e01630e43d3d..b6e18a36bf0f 100644 --- a/internal/service/firehose/delivery_stream.go +++ b/internal/service/firehose/delivery_stream.go @@ -5,6 +5,7 @@ import ( "log" "regexp" "strings" + "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/arn" @@ -1596,6 +1597,9 @@ func ResourceDeliveryStream() *schema.Resource { Computed: true, }, }, + Timeouts: &schema.ResourceTimeout{ + Create: schema.DefaultTimeout(20 * time.Minute), + }, } } @@ -2649,7 +2653,7 @@ func resourceDeliveryStreamCreate(d *schema.ResourceData, meta interface{}) erro return fmt.Errorf("error creating Kinesis Firehose Delivery Stream: %s", err) } - s, err := waitDeliveryStreamCreated(conn, sn) + s, err := waitDeliveryStreamCreated(conn, sn, d.Timeout(schema.TimeoutCreate)) if err != nil { return fmt.Errorf("error waiting for Kinesis Firehose Delivery Stream (%s) create: %w", sn, err) diff --git a/internal/service/firehose/wait.go b/internal/service/firehose/wait.go index 8d16cc6d1c7c..dd6f183dd55d 100644 --- a/internal/service/firehose/wait.go +++ b/internal/service/firehose/wait.go @@ -11,19 +11,18 @@ import ( ) const ( - deliveryStreamCreatedTimeout = 20 * time.Minute deliveryStreamDeletedTimeout = 20 * time.Minute deliveryStreamEncryptionEnabledTimeout = 10 * time.Minute deliveryStreamEncryptionDisabledTimeout = 10 * time.Minute ) -func waitDeliveryStreamCreated(conn *firehose.Firehose, name string) (*firehose.DeliveryStreamDescription, error) { +func waitDeliveryStreamCreated(conn *firehose.Firehose, name string, timeout time.Duration) (*firehose.DeliveryStreamDescription, error) { stateConf := &resource.StateChangeConf{ Pending: []string{firehose.DeliveryStreamStatusCreating}, Target: []string{firehose.DeliveryStreamStatusActive}, Refresh: statusDeliveryStream(conn, name), - Timeout: deliveryStreamCreatedTimeout, + Timeout: timeout, } outputRaw, err := stateConf.WaitForState() diff --git a/website/docs/r/kinesis_firehose_delivery_stream.html.markdown b/website/docs/r/kinesis_firehose_delivery_stream.html.markdown index 19c69f8ffbfa..a35b51dce558 100644 --- a/website/docs/r/kinesis_firehose_delivery_stream.html.markdown +++ b/website/docs/r/kinesis_firehose_delivery_stream.html.markdown @@ -700,6 +700,12 @@ In addition to all arguments above, the following attributes are exported: [1]: https://aws.amazon.com/documentation/firehose/ +## Timeouts + +[Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): + +* `create` - (Default `20m`) + ## Import Kinesis Firehose Delivery streams can be imported using the stream ARN, e.g., From 889e449054c0024a07e74c957100eb103c5cc563 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 10 Feb 2023 16:31:30 -0500 Subject: [PATCH 2/5] r/aws_firehose_delivery_stream: add configurable delete timeout --- internal/service/firehose/delivery_stream.go | 12 +++++++----- internal/service/firehose/wait.go | 6 ++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/internal/service/firehose/delivery_stream.go b/internal/service/firehose/delivery_stream.go index e5bcd642cacd..88cb6c74a587 100644 --- a/internal/service/firehose/delivery_stream.go +++ b/internal/service/firehose/delivery_stream.go @@ -866,6 +866,11 @@ func ResourceDeliveryStream() *schema.Resource { }, }, + Timeouts: &schema.ResourceTimeout{ + Create: schema.DefaultTimeout(30 * time.Minute), + Delete: schema.DefaultTimeout(30 * time.Minute), + }, + CustomizeDiff: verify.SetTagsDiff, SchemaVersion: 1, @@ -1602,9 +1607,6 @@ func ResourceDeliveryStream() *schema.Resource { Computed: true, }, }, - Timeouts: &schema.ResourceTimeout{ - Create: schema.DefaultTimeout(20 * time.Minute), - }, } } @@ -2662,7 +2664,7 @@ func resourceDeliveryStreamCreate(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "creating Kinesis Firehose Delivery Stream (%s): %s", sn, err) } - s, err := waitDeliveryStreamCreated(ctx, conn, sn, d.Timeout(schema.TimeoutCreate)) + s, err := waitDeliveryStreamCreated(ctx, conn, sn, d.Timeout(schema.TimeoutCreate)) if err != nil { return sdkdiag.AppendErrorf(diags, "creating Kinesis Firehose Delivery Stream (%s): waiting for completion: %s", sn, err) @@ -2923,7 +2925,7 @@ func resourceDeliveryStreamDelete(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "deleting Kinesis Firehose Delivery Stream (%s): %s", sn, err) } - _, err = waitDeliveryStreamDeleted(ctx, conn, sn) + _, err = waitDeliveryStreamDeleted(ctx, conn, sn, d.Timeout(schema.TimeoutDelete)) if err != nil { return sdkdiag.AppendErrorf(diags, "waiting for Kinesis Firehose Delivery Stream (%s) delete: %s", sn, err) diff --git a/internal/service/firehose/wait.go b/internal/service/firehose/wait.go index 34e5f393e2ca..472948af9460 100644 --- a/internal/service/firehose/wait.go +++ b/internal/service/firehose/wait.go @@ -12,8 +12,6 @@ import ( ) const ( - deliveryStreamDeletedTimeout = 20 * time.Minute - deliveryStreamEncryptionEnabledTimeout = 10 * time.Minute deliveryStreamEncryptionDisabledTimeout = 10 * time.Minute ) @@ -39,12 +37,12 @@ func waitDeliveryStreamCreated(ctx context.Context, conn *firehose.Firehose, nam return nil, err } -func waitDeliveryStreamDeleted(ctx context.Context, conn *firehose.Firehose, name string) (*firehose.DeliveryStreamDescription, error) { +func waitDeliveryStreamDeleted(ctx context.Context, conn *firehose.Firehose, name string, timeout time.Duration) (*firehose.DeliveryStreamDescription, error) { stateConf := &resource.StateChangeConf{ Pending: []string{firehose.DeliveryStreamStatusDeleting}, Target: []string{}, Refresh: statusDeliveryStream(ctx, conn, name), - Timeout: deliveryStreamDeletedTimeout, + Timeout: timeout, } outputRaw, err := stateConf.WaitForStateContext(ctx) From f55c2a53b99981061fadc132bf2a81b748c9ceaa Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 10 Feb 2023 16:33:54 -0500 Subject: [PATCH 3/5] r/aws_firehose_delivery_stream(docs): update timeouts --- website/docs/r/kinesis_firehose_delivery_stream.html.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/docs/r/kinesis_firehose_delivery_stream.html.markdown b/website/docs/r/kinesis_firehose_delivery_stream.html.markdown index d96716a66e90..558971737974 100644 --- a/website/docs/r/kinesis_firehose_delivery_stream.html.markdown +++ b/website/docs/r/kinesis_firehose_delivery_stream.html.markdown @@ -712,7 +712,8 @@ In addition to all arguments above, the following attributes are exported: [Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): -* `create` - (Default `20m`) +* `create` - (Default `30m`) +* `delete` - (Default `30m`) ## Import From 0995915556c87bb48a3e0ffbb826a83b4a210c02 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 10 Feb 2023 16:41:31 -0500 Subject: [PATCH 4/5] r/aws_firehose_delivery_stream: add configurable update timeout --- internal/service/firehose/delivery_stream.go | 7 ++++--- internal/service/firehose/wait.go | 13 ++++--------- .../kinesis_firehose_delivery_stream.html.markdown | 1 + 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/internal/service/firehose/delivery_stream.go b/internal/service/firehose/delivery_stream.go index 88cb6c74a587..acfa81fb9f10 100644 --- a/internal/service/firehose/delivery_stream.go +++ b/internal/service/firehose/delivery_stream.go @@ -868,6 +868,7 @@ func ResourceDeliveryStream() *schema.Resource { Timeouts: &schema.ResourceTimeout{ Create: schema.DefaultTimeout(30 * time.Minute), + Update: schema.DefaultTimeout(10 * time.Minute), Delete: schema.DefaultTimeout(30 * time.Minute), }, @@ -2685,7 +2686,7 @@ func resourceDeliveryStreamCreate(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "starting Kinesis Firehose Delivery Stream (%s) encryption: %s", sn, err) } - if _, err := waitDeliveryStreamEncryptionEnabled(ctx, conn, sn); err != nil { + if _, err := waitDeliveryStreamEncryptionEnabled(ctx, conn, sn, d.Timeout(schema.TimeoutCreate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for Kinesis Firehose Delivery Stream (%s) encryption enable: %s", sn, err) } } @@ -2841,7 +2842,7 @@ func resourceDeliveryStreamUpdate(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "stopping Kinesis Firehose Delivery Stream (%s) encryption: %s", sn, err) } - if _, err := waitDeliveryStreamEncryptionDisabled(ctx, conn, sn); err != nil { + if _, err := waitDeliveryStreamEncryptionDisabled(ctx, conn, sn, d.Timeout(schema.TimeoutUpdate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for Kinesis Firehose Delivery Stream (%s) encryption disable: %s", sn, err) } } else { @@ -2856,7 +2857,7 @@ func resourceDeliveryStreamUpdate(ctx context.Context, d *schema.ResourceData, m return sdkdiag.AppendErrorf(diags, "starting Kinesis Firehose Delivery Stream (%s) encryption: %s", sn, err) } - if _, err := waitDeliveryStreamEncryptionEnabled(ctx, conn, sn); err != nil { + if _, err := waitDeliveryStreamEncryptionEnabled(ctx, conn, sn, d.Timeout(schema.TimeoutUpdate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for Kinesis Firehose Delivery Stream (%s) encryption enable: %s", sn, err) } } diff --git a/internal/service/firehose/wait.go b/internal/service/firehose/wait.go index 472948af9460..7b4b01e81a92 100644 --- a/internal/service/firehose/wait.go +++ b/internal/service/firehose/wait.go @@ -11,11 +11,6 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/tfresource" ) -const ( - deliveryStreamEncryptionEnabledTimeout = 10 * time.Minute - deliveryStreamEncryptionDisabledTimeout = 10 * time.Minute -) - func waitDeliveryStreamCreated(ctx context.Context, conn *firehose.Firehose, name string, timeout time.Duration) (*firehose.DeliveryStreamDescription, error) { stateConf := &resource.StateChangeConf{ Pending: []string{firehose.DeliveryStreamStatusCreating}, @@ -58,12 +53,12 @@ func waitDeliveryStreamDeleted(ctx context.Context, conn *firehose.Firehose, nam return nil, err } -func waitDeliveryStreamEncryptionEnabled(ctx context.Context, conn *firehose.Firehose, name string) (*firehose.DeliveryStreamEncryptionConfiguration, error) { //nolint:unparam +func waitDeliveryStreamEncryptionEnabled(ctx context.Context, conn *firehose.Firehose, name string, timeout time.Duration) (*firehose.DeliveryStreamEncryptionConfiguration, error) { //nolint:unparam stateConf := &resource.StateChangeConf{ Pending: []string{firehose.DeliveryStreamEncryptionStatusEnabling}, Target: []string{firehose.DeliveryStreamEncryptionStatusEnabled}, Refresh: statusDeliveryStreamEncryptionConfiguration(ctx, conn, name), - Timeout: deliveryStreamEncryptionEnabledTimeout, + Timeout: timeout, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -79,12 +74,12 @@ func waitDeliveryStreamEncryptionEnabled(ctx context.Context, conn *firehose.Fir return nil, err } -func waitDeliveryStreamEncryptionDisabled(ctx context.Context, conn *firehose.Firehose, name string) (*firehose.DeliveryStreamEncryptionConfiguration, error) { +func waitDeliveryStreamEncryptionDisabled(ctx context.Context, conn *firehose.Firehose, name string, timeout time.Duration) (*firehose.DeliveryStreamEncryptionConfiguration, error) { stateConf := &resource.StateChangeConf{ Pending: []string{firehose.DeliveryStreamEncryptionStatusDisabling}, Target: []string{firehose.DeliveryStreamEncryptionStatusDisabled}, Refresh: statusDeliveryStreamEncryptionConfiguration(ctx, conn, name), - Timeout: deliveryStreamEncryptionDisabledTimeout, + Timeout: timeout, } outputRaw, err := stateConf.WaitForStateContext(ctx) diff --git a/website/docs/r/kinesis_firehose_delivery_stream.html.markdown b/website/docs/r/kinesis_firehose_delivery_stream.html.markdown index 558971737974..c67e4c2a6a44 100644 --- a/website/docs/r/kinesis_firehose_delivery_stream.html.markdown +++ b/website/docs/r/kinesis_firehose_delivery_stream.html.markdown @@ -713,6 +713,7 @@ In addition to all arguments above, the following attributes are exported: [Configuration options](https://developer.hashicorp.com/terraform/language/resources/syntax#operation-timeouts): * `create` - (Default `30m`) +* `update` - (Default `10m`) * `delete` - (Default `30m`) ## Import From 1e3048b956770919179a3595a77577051a437fe2 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Fri, 10 Feb 2023 16:41:55 -0500 Subject: [PATCH 5/5] chore: changelog --- .changelog/28469.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/28469.txt diff --git a/.changelog/28469.txt b/.changelog/28469.txt new file mode 100644 index 000000000000..498dd9caa4ca --- /dev/null +++ b/.changelog/28469.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_firehose_delivery_stream: Add configurable timeouts for create, update, and delete +```