From e7f944447d11d44291e42d793af5c45051638d08 Mon Sep 17 00:00:00 2001 From: rizkybiz Date: Tue, 10 Oct 2023 07:17:29 -0400 Subject: [PATCH 01/17] upd: introduced functionality to configure datasync task reports --- internal/service/datasync/task.go | 135 +++++++++++++++++++++++++++++- 1 file changed, 133 insertions(+), 2 deletions(-) diff --git a/internal/service/datasync/task.go b/internal/service/datasync/task.go index a68f55c416db..67dcc4e450f1 100644 --- a/internal/service/datasync/task.go +++ b/internal/service/datasync/task.go @@ -222,6 +222,75 @@ func ResourceTask() *schema.Resource { }, names.AttrTags: tftags.TagsSchema(), names.AttrTagsAll: tftags.TagsSchemaComputed(), + "task_report_config": { + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "s3_destination": { + Type: schema.TypeList, + Required: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "bucket_access_role_arn": { + Type: schema.TypeString, + Required: true, + ValidateFunc: verify.ValidARN, + }, + "s3_bucket_arn": { + Type: schema.TypeString, + Required: true, + ValidateFunc: verify.ValidARN, + }, + "subdirectory": { + Type: schema.TypeString, + Optional: true, + }, + }, + }, + }, + "s3_object_versioning": { + Type: schema.TypeString, + Optional: true, + }, + "output_type": { + Type: schema.TypeString, + Optional: true, + }, + "report_overrides": { + Type: schema.TypeList, + Optional: true, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "deleted_override": { + Type: schema.TypeString, + Optional: true, + }, + "skipped_override": { + Type: schema.TypeString, + Optional: true, + }, + "transferred_override": { + Type: schema.TypeString, + Optional: true, + }, + "verified_override": { + Type: schema.TypeString, + Optional: true, + }, + }, + }, + }, + "report_level": { + Type: schema.TypeString, + Optional: true, + }, + }, + }, + }, }, CustomizeDiff: verify.SetTagsDiff, @@ -255,6 +324,10 @@ func resourceTaskCreate(ctx context.Context, d *schema.ResourceData, meta interf input.Name = aws.String(v.(string)) } + if v, ok := d.GetOk("task_report_config"); ok { + input.TaskReportConfig = expandTaskReportConfig(v.([]interface{})) + } + if v, ok := d.GetOk("schedule"); ok { input.Schedule = expandTaskSchedule(v.([]interface{})) } @@ -344,10 +417,14 @@ func resourceTaskUpdate(ctx context.Context, d *schema.ResourceData, meta interf input.Schedule = expandTaskSchedule(d.Get("schedule").([]interface{})) } - _, err := conn.UpdateTaskWithContext(ctx, input) + if d.HasChanges("task_report_config") { + input.TaskReportConfig = expandTaskReportConfig(d.Get("task_report_config").([]interface{})) + } - if err != nil { + log.Printf("[DEBUG] Updating DataSync Task: %s", input) + if _, err := conn.UpdateTaskWithContext(ctx, input); err != nil { return sdkdiag.AppendErrorf(diags, "updating DataSync Task (%s): %s", d.Id(), err) + } } @@ -522,6 +599,60 @@ func flattenTaskSchedule(schedule *datasync.TaskSchedule) []interface{} { return []interface{}{m} } +func expandTaskReportConfig(l []interface{}) *datasync.TaskReportConfig { + if len(l) == 0 || l[0] == nil { + return nil + } + reportConfig := &datasync.TaskReportConfig{} + + m := l[0].(map[string]interface{}) + + dest := m["s3_destination"].([]interface{}) + reportConfig = reportConfig.SetDestination(expandTaskReportDestination(dest)) + reportConfig = reportConfig.SetObjectVersionIds(m["s3_object_versioning"].(string)) + reportConfig = reportConfig.SetOutputType(m["output_type"].(string)) + reportConfig = reportConfig.SetReportLevel(m["report_level"].(string)) + o := m["report_overrides"].([]interface{}) + reportConfig = reportConfig.SetOverrides(expandTaskReportOverrides(o)) + + return reportConfig +} + +func expandTaskReportDestination(l []interface{}) *datasync.ReportDestination { + if len(l) == 0 || l[0] == nil { + return nil + } + m := l[0].(map[string]interface{}) + return &datasync.ReportDestination{ + S3: &datasync.ReportDestinationS3{ + BucketAccessRoleArn: aws.String(m["bucket_access_role_arn"].(string)), + S3BucketArn: aws.String(m["s3_bucket_arn"].(string)), + Subdirectory: aws.String(m["subdirectory"].(string)), + }, + } +} + +func expandTaskReportOverrides(l []interface{}) *datasync.ReportOverrides { + if len(l) == 0 || l[0] == nil { + return nil + } + m := l[0].(map[string]interface{}) + return &datasync.ReportOverrides{ + Deleted: &datasync.ReportOverride{ + ReportLevel: aws.String(m["deleted_override"].(string)), + }, + Skipped: &datasync.ReportOverride{ + ReportLevel: aws.String(m["skipped_override"].(string)), + }, + Transferred: &datasync.ReportOverride{ + ReportLevel: aws.String(m["transferred_override"].(string)), + }, + Verified: &datasync.ReportOverride{ + ReportLevel: aws.String(m["verified_override"].(string)), + }, + } +} + func expandFilterRules(l []interface{}) []*datasync.FilterRule { filterRules := []*datasync.FilterRule{} From e8bd2f10f774019dfd314d1d1f15de8281038bba Mon Sep 17 00:00:00 2001 From: rizkybiz Date: Tue, 10 Oct 2023 07:18:03 -0400 Subject: [PATCH 02/17] upd: WIP testing for datasync task reports --- internal/service/datasync/task_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/service/datasync/task_test.go b/internal/service/datasync/task_test.go index f13523ae01b3..601512ae3b48 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -798,6 +798,10 @@ func TestAccDataSyncTask_DefaultSyncOptions_verifyMode(t *testing.T) { }) } +func TestAccDataSyncTask_report_config(t *testing.T) { + +} + func TestAccDataSyncTask_tags(t *testing.T) { ctx := acctest.Context(t) var task1, task2, task3 datasync.DescribeTaskOutput From 8837db16137140d2896534b8620ede2cd8107788 Mon Sep 17 00:00:00 2001 From: rizkybiz Date: Tue, 10 Oct 2023 07:20:52 -0400 Subject: [PATCH 03/17] upd: updated registry documentation for datasync task reports --- website/docs/r/datasync_task.html.markdown | 30 +++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/website/docs/r/datasync_task.html.markdown b/website/docs/r/datasync_task.html.markdown index 179018a880bd..912f53d082de 100644 --- a/website/docs/r/datasync_task.html.markdown +++ b/website/docs/r/datasync_task.html.markdown @@ -70,7 +70,8 @@ This resource supports the following arguments: * `name` - (Optional) Name of the DataSync Task. * `options` - (Optional) Configuration block containing option that controls the default behavior when you start an execution of this DataSync Task. For each individual task execution, you can override these options by specifying an overriding configuration in those executions. * `schedule` - (Optional) Specifies a schedule used to periodically transfer files from a source to a destination location. -* `tags` - (Optional) Key-value pairs of resource tags to assign to the DataSync Task. If configured with a provider [`default_tags` configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `tags` - (Optional) Key-value pairs of resource tags to assign to the DataSync Task. If configured with a provider [`default_tags` configuration block](/docs/providers/aws/index.html#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. +* `task_report_config` - (Optional) Configuration block containing the configuration of a DataSync Task Report. ### options Argument Reference @@ -94,6 +95,33 @@ The `options` configuration block supports the following arguments: * `uid` - (Optional) User identifier of the file's owners. Valid values: `BOTH`, `INT_VALUE`, `NAME`, `NONE`. Default: `INT_VALUE` (preserve integer value of the ID). * `verify_mode` - (Optional) Whether a data integrity verification should be performed at the end of a task execution after all data and metadata have been transferred. Valid values: `NONE`, `POINT_IN_TIME_CONSISTENT`, `ONLY_FILES_TRANSFERRED`. Default: `POINT_IN_TIME_CONSISTENT`. +### task_report_config Argument Reference + +The following arguments are supported inside the `task_report_config` configuration block: + +* `s3_destination` - (Required) Configuration block containing the configuration for the Amazon S3 bucket where DataSync uploads your task report. +* `s3_object_versioning` - (Optional) Specifies whether your task report includes the new version of each object transferred into an S3 bucket. This only applies if you enable versioning on your bucket. Keep in mind that setting this to INCLUDE can increase the duration of your task execution. Valid values: `INCLUDE` and `NONE`. +* `output_type` - (Optional) Specifies the type of task report you'd like. Valid values: `SUMMARY_ONLY` and `STANDARD`. +* `report_overrides` - (Optional) Configuration block containing the configuration of the reporting level for aspects of your task report. +* `report_level` - Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't. Valid values: `ERRORS_ONLY` and `SUCCESSES_AND_ERRORS`. + +### s3_destination Argument Reference + +The following arguments are supported inside the `s3_destination` configuration block: + +* `bucket_access_role_arn` - (Required) Specifies the Amazon Resource Name (ARN) of the IAM policy that allows DataSync to upload a task report to your S3 bucket. +* `s3_bucket_arn` - (Required) Specifies the ARN of the S3 bucket where DataSync uploads your report. +* `subdirectory` - (Optional) Specifies a bucket prefix for your report. + +### report_overrides Argument Reference + +The following arguments are supported inside the `report_overrides` configuration block: + +* `deleted_override` - (Optional) Specifies the level of reporting for the files, objects, and directories that DataSync attempted to delete in your destination location. This only applies if you configure your task to delete data in the destination that isn't in the source. Valid values: `ERRORS_ONLY` and `SUCCESSES_AND_ERRORS`. +* `skipped_override` - (Optional) Specifies the level of reporting for the files, objects, and directories that DataSync attempted to skip during your transfer. Valid values: `ERRORS_ONLY` and `SUCCESSES_AND_ERRORS`. +* `transferred_override` - (Optional) Specifies the level of reporting for the files, objects, and directories that DataSync attempted to transfer. Valid values: `ERRORS_ONLY` and `SUCCESSES_AND_ERRORS`. +* `verified_override` - (Optional) Specifies the level of reporting for the files, objects, and directories that DataSync attempted to verify at the end of your transfer. Valid values: `ERRORS_ONLY` and `SUCCESSES_AND_ERRORS`. + ### Schedule * `schedule_expression` - (Required) Specifies the schedule you want your task to use for repeated executions. For more information, see [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). From ee9ebbbc86c7430c0d695daf7c6ba1b2f7ce885a Mon Sep 17 00:00:00 2001 From: rizkybiz Date: Tue, 10 Oct 2023 07:21:49 -0400 Subject: [PATCH 04/17] upd: bumping aws-sdk-go to 1.45.x for datasync task report config options --- go.sum | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/go.sum b/go.sum index 4c6228330ffb..620a35cc5742 100644 --- a/go.sum +++ b/go.sum @@ -504,24 +504,6 @@ golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= -google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= -google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/dnaeon/go-vcr.v3 v3.1.2 h1:F1smfXBqQqwpVifDfUBQG6zzaGjzT+EnVZakrOdr5wA= -gopkg.in/dnaeon/go-vcr.v3 v3.1.2/go.mod h1:2IMOnnlx9I6u9x+YBsM3tAMx6AlOxnJ0pWxQAzZ79Ag= -gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 11fc6d723cd25500506be301b7abfe4af8548e4a Mon Sep 17 00:00:00 2001 From: rizkybiz Date: Tue, 10 Oct 2023 08:09:37 -0400 Subject: [PATCH 05/17] Revert "upd: bumping aws-sdk-go to 1.45.x for datasync task report config options" This reverts commit 89036cdadbaef4f9a0b055de46c21481abd3a065. --- go.sum | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/go.sum b/go.sum index 620a35cc5742..af1c2fde7afb 100644 --- a/go.sum +++ b/go.sum @@ -480,6 +480,7 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -504,11 +505,6 @@ golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 12b883ae441e9f5a78b42d651c3b32f59069295d Mon Sep 17 00:00:00 2001 From: Bruce Harrison Date: Wed, 1 Nov 2023 14:08:30 -0500 Subject: [PATCH 06/17] update go.mod --- go.sum | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/go.sum b/go.sum index af1c2fde7afb..31994aa874e7 100644 --- a/go.sum +++ b/go.sum @@ -17,6 +17,7 @@ github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -328,6 +329,7 @@ github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -389,6 +391,7 @@ github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1 github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -424,6 +427,7 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.45.0 h1:IheWOjAlqLJB0oRsfy640dvUy4T5ARTohgUKR23705U= go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.45.0/go.mod h1:uJGvUG+4OT1N41mbAgng0iNdOTvv9chnfavACM2z2DA= go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= @@ -505,6 +509,27 @@ golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= +google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/dnaeon/go-vcr.v3 v3.1.2/go.mod h1:2IMOnnlx9I6u9x+YBsM3tAMx6AlOxnJ0pWxQAzZ79Ag= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From f806be8a80e5e623e04e3274c81646ae395103b4 Mon Sep 17 00:00:00 2001 From: Bruce Harrison Date: Wed, 1 Nov 2023 14:17:54 -0500 Subject: [PATCH 07/17] go.mod updated --- go.sum | 1 + 1 file changed, 1 insertion(+) diff --git a/go.sum b/go.sum index 31994aa874e7..c5a795b2bc7e 100644 --- a/go.sum +++ b/go.sum @@ -523,6 +523,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/dnaeon/go-vcr.v3 v3.1.2 h1:F1smfXBqQqwpVifDfUBQG6zzaGjzT+EnVZakrOdr5wA= gopkg.in/dnaeon/go-vcr.v3 v3.1.2/go.mod h1:2IMOnnlx9I6u9x+YBsM3tAMx6AlOxnJ0pWxQAzZ79Ag= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From dfca4688d56a38c90da1351f91f3b3c6e7fba107 Mon Sep 17 00:00:00 2001 From: Bruce Harrison Date: Wed, 1 Nov 2023 16:36:13 -0500 Subject: [PATCH 08/17] build out acc test --- internal/service/datasync/task_test.go | 78 ++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/internal/service/datasync/task_test.go b/internal/service/datasync/task_test.go index 601512ae3b48..8c479b8c5646 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -799,7 +799,30 @@ func TestAccDataSyncTask_DefaultSyncOptions_verifyMode(t *testing.T) { } func TestAccDataSyncTask_report_config(t *testing.T) { + ctx := acctest.Context(t) + var task1 datasync.DescribeTaskOutput + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_datasync_task.test" + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, datasync.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckTaskDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccTaskConfig_reportConfig(rName), + Check: resource.ComposeTestCheckFunc( + testAccCheckTaskExists(ctx, resourceName, &task1), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerify: true, + }, + }, + }) } func TestAccDataSyncTask_tags(t *testing.T) { @@ -1467,3 +1490,58 @@ resource "aws_datasync_task" "test" { } `, rName, key1, value1, key2, value2)) } + +func testAccTaskConfig_reportConfig(rName string) string { + return acctest.ConfigCompose( + testAccTaskConfig_baseLocationS3(rName), + testAccTaskConfig_baseLocationNFS(rName), + fmt.Sprintf(` +resource "aws_s3_bucket" "report_test" { + bucket = "%[1]s-report-test" + force_destroy = true +} + +resource "aws_iam_role" "report_test" { + name = "%[1]s-report-test" + assume_role_policy = < Date: Wed, 1 Nov 2023 17:02:26 -0500 Subject: [PATCH 09/17] test case works, need assertions --- internal/service/datasync/task.go | 35 +++++++++++++++----------- internal/service/datasync/task_test.go | 28 +++++++++++++++++++-- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/internal/service/datasync/task.go b/internal/service/datasync/task.go index 67dcc4e450f1..1ad2a9c1a289 100644 --- a/internal/service/datasync/task.go +++ b/internal/service/datasync/task.go @@ -252,12 +252,14 @@ func ResourceTask() *schema.Resource { }, }, "s3_object_versioning": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ObjectVersionIds_Values(), false), }, "output_type": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ReportOutputType_Values(), false), }, "report_overrides": { Type: schema.TypeList, @@ -266,27 +268,32 @@ func ResourceTask() *schema.Resource { Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "deleted_override": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ReportLevel_Values(), false), }, "skipped_override": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ReportLevel_Values(), false), }, "transferred_override": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ReportLevel_Values(), false), }, "verified_override": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ReportLevel_Values(), false), }, }, }, }, "report_level": { - Type: schema.TypeString, - Optional: true, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringInSlice(datasync.ReportLevel_Values(), false), }, }, }, diff --git a/internal/service/datasync/task_test.go b/internal/service/datasync/task_test.go index 8c479b8c5646..bdba719b267a 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -804,6 +804,19 @@ func TestAccDataSyncTask_report_config(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_datasync_task.test" + // map[string]string{ + // - "task_report_config.#": "1", + // - "task_report_config.0.%": "5", + // - "task_report_config.0.output_type": "STANDARD", + // - "task_report_config.0.report_level": "SUCCESSES_AND_ERRORS", + // - "task_report_config.0.s3_destination.#": "1", + // - "task_report_config.0.s3_destination.0.%": "3", + // - "task_report_config.0.s3_destination.0.bucket_access_role_arn": "arn:aws:iam::717153992618:role/tf-acc-test-7948130487504757185-report-test", + // - "task_report_config.0.s3_destination.0.s3_bucket_arn": "arn:aws:s3:::tf-acc-test-7948130487504757185-report-test", + // - "task_report_config.0.s3_destination.0.subdirectory": "/test", + // - "task_report_config.0.s3_object_versioning": "INCLUDE", + // } + resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, datasync.EndpointsID), @@ -1518,7 +1531,7 @@ resource "aws_iam_role" "report_test" { } POLICY } - + resource "aws_iam_role_policy" "report_test" { role = aws_iam_role.report_test.id policy = < Date: Wed, 1 Nov 2023 23:44:13 -0500 Subject: [PATCH 10/17] add additonal test cases --- internal/service/datasync/task.go | 48 ++++++++++++++++++++++++++ internal/service/datasync/task_test.go | 34 ++++++++++-------- 2 files changed, 68 insertions(+), 14 deletions(-) diff --git a/internal/service/datasync/task.go b/internal/service/datasync/task.go index 1ad2a9c1a289..ca0a8743d144 100644 --- a/internal/service/datasync/task.go +++ b/internal/service/datasync/task.go @@ -386,6 +386,9 @@ func resourceTaskRead(ctx context.Context, d *schema.ResourceData, meta interfac if err := d.Set("schedule", flattenTaskSchedule(output.Schedule)); err != nil { return sdkdiag.AppendErrorf(diags, "setting schedule: %s", err) } + if err := d.Set("task_report_config", flattenTaskReportConfig(output.TaskReportConfig)); err != nil { + return sdkdiag.AppendErrorf(diags, "setting task_report_config: %s", err) + } d.Set("source_location_arn", output.SourceLocationArn) return diags @@ -546,6 +549,51 @@ func flattenOptions(options *datasync.Options) []interface{} { return []interface{}{m} } +func flattenTaskReportConfig(options *datasync.TaskReportConfig) []interface{} { + if options == nil { + return []interface{}{} + } + + m := map[string]interface{}{ + "s3_object_versioning": aws.StringValue(options.ObjectVersionIds), + "output_type": aws.StringValue(options.OutputType), + "report_level": aws.StringValue(options.ReportLevel), + "s3_destination": flattenTaskReportConfigS3Destination(options.Destination.S3), + "report_overrides": flattenTaskReportConfigReportOverrides(options.Overrides), + } + + return []interface{}{m} +} + +func flattenTaskReportConfigReportOverrides(options *datasync.ReportOverrides) []interface{} { + if options == nil { + return []interface{}{} + } + + m := map[string]interface{}{ + "deleted_override": aws.StringValue(options.Deleted.ReportLevel), + "skipped_override": aws.StringValue(options.Skipped.ReportLevel), + "transferred_override": aws.StringValue(options.Transferred.ReportLevel), + "verified_override": aws.StringValue(options.Verified.ReportLevel), + } + + return []interface{}{m} +} + +func flattenTaskReportConfigS3Destination(options *datasync.ReportDestinationS3) []interface{} { + if options == nil { + return []interface{}{} + } + + m := map[string]interface{}{ + "bucket_access_role_arn": aws.StringValue(options.BucketAccessRoleArn), + "s3_bucket_arn": aws.StringValue(options.S3BucketArn), + "subdirectory": aws.StringValue(options.Subdirectory), + } + + return []interface{}{m} +} + func expandOptions(l []interface{}) *datasync.Options { if len(l) == 0 || l[0] == nil { return nil diff --git a/internal/service/datasync/task_test.go b/internal/service/datasync/task_test.go index bdba719b267a..7899ce18b83e 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -804,19 +804,6 @@ func TestAccDataSyncTask_report_config(t *testing.T) { rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_datasync_task.test" - // map[string]string{ - // - "task_report_config.#": "1", - // - "task_report_config.0.%": "5", - // - "task_report_config.0.output_type": "STANDARD", - // - "task_report_config.0.report_level": "SUCCESSES_AND_ERRORS", - // - "task_report_config.0.s3_destination.#": "1", - // - "task_report_config.0.s3_destination.0.%": "3", - // - "task_report_config.0.s3_destination.0.bucket_access_role_arn": "arn:aws:iam::717153992618:role/tf-acc-test-7948130487504757185-report-test", - // - "task_report_config.0.s3_destination.0.s3_bucket_arn": "arn:aws:s3:::tf-acc-test-7948130487504757185-report-test", - // - "task_report_config.0.s3_destination.0.subdirectory": "/test", - // - "task_report_config.0.s3_object_versioning": "INCLUDE", - // } - resource.ParallelTest(t, resource.TestCase{ PreCheck: func() { acctest.PreCheck(ctx, t); testAccPreCheck(ctx, t) }, ErrorCheck: acctest.ErrorCheck(t, datasync.EndpointsID), @@ -827,6 +814,19 @@ func TestAccDataSyncTask_report_config(t *testing.T) { Config: testAccTaskConfig_reportConfig(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTaskExists(ctx, resourceName, &task1), + resource.TestCheckResourceAttr(resourceName, "task_report_config.#", "1"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.output_type", "STANDARD"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.report_level", "SUCCESSES_AND_ERRORS"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.s3_destination.#", "1"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.s3_object_versioning", "INCLUDE"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.s3_destination.0.subdirectory", "test/"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.report_overrides.#", "1"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.report_overrides.0.deleted_override", "ERRORS_ONLY"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.report_overrides.0.skipped_override", "ERRORS_ONLY"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.report_overrides.0.transferred_override", "ERRORS_ONLY"), + resource.TestCheckResourceAttr(resourceName, "task_report_config.0.report_overrides.0.verified_override", "ERRORS_ONLY"), + resource.TestCheckResourceAttrPair(resourceName, "task_report_config.0.s3_destination.0.bucket_access_role_arn", "aws_iam_role.report_test", "arn"), + resource.TestCheckResourceAttrPair(resourceName, "task_report_config.0.s3_destination.0.s3_bucket_arn", "aws_s3_bucket.report_test", "arn"), ), }, { @@ -1560,7 +1560,13 @@ resource "aws_datasync_task" "test" { s3_destination { bucket_access_role_arn = aws_iam_role.report_test.arn s3_bucket_arn = aws_s3_bucket.report_test.arn - subdirectory = "/test" + subdirectory = "test/" + } + report_overrides { + deleted_override = "ERRORS_ONLY" + skipped_override = "ERRORS_ONLY" + transferred_override = "ERRORS_ONLY" + verified_override = "ERRORS_ONLY" } s3_object_versioning = "INCLUDE" output_type = "STANDARD" From 0f37d6ace20af31fd9dad7d3a110124e50c9fff7 Mon Sep 17 00:00:00 2001 From: Bruce Harrison Date: Wed, 1 Nov 2023 23:45:04 -0500 Subject: [PATCH 11/17] fix test formatting --- internal/service/datasync/task_test.go | 30 +++++++++++++------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/internal/service/datasync/task_test.go b/internal/service/datasync/task_test.go index 7899ce18b83e..145720f1cbce 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -1555,22 +1555,22 @@ resource "aws_datasync_task" "test" { destination_location_arn = aws_datasync_location_s3.test.arn name = %[1]q source_location_arn = aws_datasync_location_nfs.test.arn - + task_report_config { - s3_destination { - bucket_access_role_arn = aws_iam_role.report_test.arn - s3_bucket_arn = aws_s3_bucket.report_test.arn - subdirectory = "test/" - } - report_overrides { - deleted_override = "ERRORS_ONLY" - skipped_override = "ERRORS_ONLY" - transferred_override = "ERRORS_ONLY" - verified_override = "ERRORS_ONLY" - } - s3_object_versioning = "INCLUDE" - output_type = "STANDARD" - report_level = "SUCCESSES_AND_ERRORS" + s3_destination { + bucket_access_role_arn = aws_iam_role.report_test.arn + s3_bucket_arn = aws_s3_bucket.report_test.arn + subdirectory = "test/" + } + report_overrides { + deleted_override = "ERRORS_ONLY" + skipped_override = "ERRORS_ONLY" + transferred_override = "ERRORS_ONLY" + verified_override = "ERRORS_ONLY" + } + s3_object_versioning = "INCLUDE" + output_type = "STANDARD" + report_level = "SUCCESSES_AND_ERRORS" } } `, rName)) From f05508c10f1ed42a114b7b2cd7276ce55a8e6d17 Mon Sep 17 00:00:00 2001 From: Bruce Harrison Date: Thu, 2 Nov 2023 09:47:25 -0500 Subject: [PATCH 12/17] remove trailing newline --- internal/service/datasync/task.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/service/datasync/task.go b/internal/service/datasync/task.go index ca0a8743d144..d61eb77df728 100644 --- a/internal/service/datasync/task.go +++ b/internal/service/datasync/task.go @@ -434,7 +434,6 @@ func resourceTaskUpdate(ctx context.Context, d *schema.ResourceData, meta interf log.Printf("[DEBUG] Updating DataSync Task: %s", input) if _, err := conn.UpdateTaskWithContext(ctx, input); err != nil { return sdkdiag.AppendErrorf(diags, "updating DataSync Task (%s): %s", d.Id(), err) - } } From f019f23e7abcc72e2ce53d1d2070d21377b54f1a Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 2 Nov 2023 15:28:39 -0400 Subject: [PATCH 13/17] chore: go mod tidy --- go.sum | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/go.sum b/go.sum index 4a2871d8eb5f..cd069fb61365 100644 --- a/go.sum +++ b/go.sum @@ -17,7 +17,6 @@ github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= -github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -329,7 +328,6 @@ github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= -github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= @@ -391,7 +389,6 @@ github.com/pquerna/otp v1.4.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1 github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -427,7 +424,6 @@ github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.14.0 h1:/Xrd39K7DXbHzlisFP9c4pHao4yyf+/Ug9LEz+Y/yhc= github.com/zclconf/go-cty v1.14.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.45.0 h1:IheWOjAlqLJB0oRsfy640dvUy4T5ARTohgUKR23705U= go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws v0.45.0/go.mod h1:uJGvUG+4OT1N41mbAgng0iNdOTvv9chnfavACM2z2DA= go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= @@ -484,7 +480,6 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -522,10 +517,11 @@ google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/dnaeon/go-vcr.v3 v3.1.2 h1:F1smfXBqQqwpVifDfUBQG6zzaGjzT+EnVZakrOdr5wA= gopkg.in/dnaeon/go-vcr.v3 v3.1.2/go.mod h1:2IMOnnlx9I6u9x+YBsM3tAMx6AlOxnJ0pWxQAzZ79Ag= -gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 192fd2109e87717b45243d6cb95c9d208bd438e2 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 2 Nov 2023 15:41:19 -0400 Subject: [PATCH 14/17] chore: changelog --- .changelog/33861.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/33861.txt diff --git a/.changelog/33861.txt b/.changelog/33861.txt new file mode 100644 index 000000000000..d8965396d01b --- /dev/null +++ b/.changelog/33861.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_datasync_task: Add `task_report_config` argument +``` From dd585d5d7507f6e0461dca44cfeb2cc540a632ba Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 2 Nov 2023 15:50:29 -0400 Subject: [PATCH 15/17] r/aws_datasync_task(doc): link to argument reference headers --- website/docs/r/datasync_task.html.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/docs/r/datasync_task.html.markdown b/website/docs/r/datasync_task.html.markdown index 912f53d082de..08915caa1e48 100644 --- a/website/docs/r/datasync_task.html.markdown +++ b/website/docs/r/datasync_task.html.markdown @@ -71,7 +71,7 @@ This resource supports the following arguments: * `options` - (Optional) Configuration block containing option that controls the default behavior when you start an execution of this DataSync Task. For each individual task execution, you can override these options by specifying an overriding configuration in those executions. * `schedule` - (Optional) Specifies a schedule used to periodically transfer files from a source to a destination location. * `tags` - (Optional) Key-value pairs of resource tags to assign to the DataSync Task. If configured with a provider [`default_tags` configuration block](/docs/providers/aws/index.html#default_tags-configuration-block) present, tags with matching keys will overwrite those defined at the provider-level. -* `task_report_config` - (Optional) Configuration block containing the configuration of a DataSync Task Report. +* `task_report_config` - (Optional) Configuration block containing the configuration of a DataSync Task Report. See [`task_report_config`](#task_report_config-argument-reference) below. ### options Argument Reference @@ -95,17 +95,17 @@ The `options` configuration block supports the following arguments: * `uid` - (Optional) User identifier of the file's owners. Valid values: `BOTH`, `INT_VALUE`, `NAME`, `NONE`. Default: `INT_VALUE` (preserve integer value of the ID). * `verify_mode` - (Optional) Whether a data integrity verification should be performed at the end of a task execution after all data and metadata have been transferred. Valid values: `NONE`, `POINT_IN_TIME_CONSISTENT`, `ONLY_FILES_TRANSFERRED`. Default: `POINT_IN_TIME_CONSISTENT`. -### task_report_config Argument Reference +### `task_report_config` Argument Reference The following arguments are supported inside the `task_report_config` configuration block: -* `s3_destination` - (Required) Configuration block containing the configuration for the Amazon S3 bucket where DataSync uploads your task report. +* `s3_destination` - (Required) Configuration block containing the configuration for the Amazon S3 bucket where DataSync uploads your task report. See [`s3_destination`](#s3_destination-argument-reference) below. * `s3_object_versioning` - (Optional) Specifies whether your task report includes the new version of each object transferred into an S3 bucket. This only applies if you enable versioning on your bucket. Keep in mind that setting this to INCLUDE can increase the duration of your task execution. Valid values: `INCLUDE` and `NONE`. * `output_type` - (Optional) Specifies the type of task report you'd like. Valid values: `SUMMARY_ONLY` and `STANDARD`. -* `report_overrides` - (Optional) Configuration block containing the configuration of the reporting level for aspects of your task report. +* `report_overrides` - (Optional) Configuration block containing the configuration of the reporting level for aspects of your task report. See [`report_overrides`](#report_overrides-argument-reference) below. * `report_level` - Specifies whether you want your task report to include only what went wrong with your transfer or a list of what succeeded and didn't. Valid values: `ERRORS_ONLY` and `SUCCESSES_AND_ERRORS`. -### s3_destination Argument Reference +### `s3_destination` Argument Reference The following arguments are supported inside the `s3_destination` configuration block: @@ -113,7 +113,7 @@ The following arguments are supported inside the `s3_destination` configuration * `s3_bucket_arn` - (Required) Specifies the ARN of the S3 bucket where DataSync uploads your report. * `subdirectory` - (Optional) Specifies a bucket prefix for your report. -### report_overrides Argument Reference +### `report_overrides` Argument Reference The following arguments are supported inside the `report_overrides` configuration block: From a1bb45d11b800e5e0330e2051eaae5144cc905d5 Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 2 Nov 2023 15:51:01 -0400 Subject: [PATCH 16/17] r/aws_datasync_task: rm update input log --- internal/service/datasync/task.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/service/datasync/task.go b/internal/service/datasync/task.go index d61eb77df728..3ac39fad143b 100644 --- a/internal/service/datasync/task.go +++ b/internal/service/datasync/task.go @@ -431,7 +431,6 @@ func resourceTaskUpdate(ctx context.Context, d *schema.ResourceData, meta interf input.TaskReportConfig = expandTaskReportConfig(d.Get("task_report_config").([]interface{})) } - log.Printf("[DEBUG] Updating DataSync Task: %s", input) if _, err := conn.UpdateTaskWithContext(ctx, input); err != nil { return sdkdiag.AppendErrorf(diags, "updating DataSync Task (%s): %s", d.Id(), err) } From bfa8fc3e4ceb20122169ec6f115d068ce84cf54c Mon Sep 17 00:00:00 2001 From: Jared Baker Date: Thu, 2 Nov 2023 15:53:19 -0400 Subject: [PATCH 17/17] r/aws_datasync_task(test): standardize task report config test naming --- internal/service/datasync/task_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/service/datasync/task_test.go b/internal/service/datasync/task_test.go index 145720f1cbce..db7d236f3abb 100644 --- a/internal/service/datasync/task_test.go +++ b/internal/service/datasync/task_test.go @@ -798,7 +798,7 @@ func TestAccDataSyncTask_DefaultSyncOptions_verifyMode(t *testing.T) { }) } -func TestAccDataSyncTask_report_config(t *testing.T) { +func TestAccDataSyncTask_taskReportConfig(t *testing.T) { ctx := acctest.Context(t) var task1 datasync.DescribeTaskOutput rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -811,7 +811,7 @@ func TestAccDataSyncTask_report_config(t *testing.T) { CheckDestroy: testAccCheckTaskDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccTaskConfig_reportConfig(rName), + Config: testAccTaskConfig_taskReportConfig(rName), Check: resource.ComposeTestCheckFunc( testAccCheckTaskExists(ctx, resourceName, &task1), resource.TestCheckResourceAttr(resourceName, "task_report_config.#", "1"), @@ -1504,7 +1504,7 @@ resource "aws_datasync_task" "test" { `, rName, key1, value1, key2, value2)) } -func testAccTaskConfig_reportConfig(rName string) string { +func testAccTaskConfig_taskReportConfig(rName string) string { return acctest.ConfigCompose( testAccTaskConfig_baseLocationS3(rName), testAccTaskConfig_baseLocationNFS(rName),