From 982a7207e35e4acfb75886f13127ed210dc85a01 Mon Sep 17 00:00:00 2001 From: Jakob Date: Wed, 12 Apr 2023 20:13:07 -0500 Subject: [PATCH 01/56] allows move to new instance arn --- internal/service/dms/consts.go | 1 + internal/service/dms/replication_task.go | 33 ++++++++++++++++++++++-- internal/service/dms/wait.go | 17 ++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/internal/service/dms/consts.go b/internal/service/dms/consts.go index ab045b634c71..cabd7d018287 100644 --- a/internal/service/dms/consts.go +++ b/internal/service/dms/consts.go @@ -7,6 +7,7 @@ const ( replicationTaskStatusDeleting = "deleting" replicationTaskStatusFailed = "failed" replicationTaskStatusModifying = "modifying" + replicationTaskStatusMoving = "moving" replicationTaskStatusReady = "ready" replicationTaskStatusStopped = "stopped" replicationTaskStatusStopping = "stopping" diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index d58647028543..9558db6923f8 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -60,7 +60,6 @@ func ResourceReplicationTask() *schema.Resource { "replication_instance_arn": { Type: schema.TypeString, Required: true, - ForceNew: true, ValidateFunc: verify.ValidARN, }, "replication_task_arn": { @@ -212,7 +211,7 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DMSConn() - if d.HasChangesExcept("tags", "tags_all", "start_replication_task") { + if d.HasChangesExcept("tags", "tags_all", "start_replication_task", "replication_instance_arn") { input := &dms.ModifyReplicationTaskInput{ ReplicationTaskArn: aws.String(d.Get("replication_task_arn").(string)), MigrationType: aws.String(d.Get("migration_type").(string)), @@ -261,6 +260,36 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } } + if d.HasChange("replication_instance_arn") { + input := &dms.MoveReplicationTaskInput{ + ReplicationTaskArn: aws.String(d.Get("replication_task_arn").(string)), + TargetReplicationInstanceArn: aws.String(d.Get("replication_instance_arn").(string)), + } + status := d.Get("status").(string) + if status == replicationTaskStatusRunning { + log.Println("[DEBUG] stopping DMS replication task:", input) + if err := stopReplicationTask(ctx, d.Id(), conn); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + } + log.Println("[DEBUG] moving DMS replication task:", input) + _, err := conn.MoveReplicationTaskWithContext(ctx, input) + if err != nil { + return sdkdiag.AppendErrorf(diags, "moving DMS Replication Task (%s): %s", d.Id(), err) + } + + if err := waitReplicationTaskMoved(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { + return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) update: %s", d.Id(), err) + } + + if d.Get("start_replication_task").(bool) { + err := startReplicationTask(ctx, d.Id(), conn) + if err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + } + } + if d.HasChanges("start_replication_task") { status := d.Get("status").(string) if d.Get("start_replication_task").(bool) { diff --git a/internal/service/dms/wait.go b/internal/service/dms/wait.go index 05b1b739ac81..c0736382b371 100644 --- a/internal/service/dms/wait.go +++ b/internal/service/dms/wait.go @@ -11,6 +11,7 @@ import ( const ( propagationTimeout = 2 * time.Minute replicationTaskRunningTimeout = 5 * time.Minute + moveTaskTimeout = 10 * time.Minute ) func waitEndpointDeleted(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { @@ -58,6 +59,22 @@ func waitReplicationTaskModified(ctx context.Context, conn *dms.DatabaseMigratio return err } +func waitReplicationTaskMoved(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { + stateConf := &retry.StateChangeConf{ + Pending: []string{replicationTaskStatusModifying, replicationTaskStatusMoving}, + Target: []string{replicationTaskStatusReady, replicationTaskStatusStopped, replicationTaskStatusFailed}, + Refresh: statusReplicationTask(ctx, conn, id), + Timeout: timeout, + MinTimeout: 10 * time.Second, + Delay: 30 * time.Second, // Wait 30 secs before starting + } + + // Wait, catching any errors + _, err := stateConf.WaitForStateContext(ctx) + + return err +} + func waitReplicationTaskReady(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusCreating}, From c6b05aa19744a21a60d019bd0bd389f538613ab1 Mon Sep 17 00:00:00 2001 From: Jakob Date: Thu, 13 Apr 2023 21:14:18 -0500 Subject: [PATCH 02/56] fixes acc tests --- internal/service/dms/replication_task_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 04f182fe7d51..37eb60d2782b 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -410,7 +410,7 @@ resource "aws_dms_replication_task" "test" { migration_type = "full-load" replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn replication_task_id = %[1]q - replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"EnableLogContext\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" @@ -432,7 +432,7 @@ resource "aws_dms_replication_task" "test" { migration_type = %[2]q replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn replication_task_id = %[1]q - replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":%[3]d,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":%[3]d,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"EnableLogContext\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"%[4]s\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" @@ -454,7 +454,7 @@ resource "aws_dms_replication_task" "test" { migration_type = "cdc" replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn replication_task_id = %[2]q - replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"EnableLogContext\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn @@ -552,7 +552,7 @@ resource "aws_rds_cluster_parameter_group" "test" { resource "aws_rds_cluster" "test1" { cluster_identifier = "%[1]s-aurora-cluster-source" engine = "aurora-mysql" - engine_version = "5.7.mysql_aurora.2.11.0" + engine_version = "5.7.mysql_aurora.2.11.2" database_name = "tftest" master_username = "tftest" master_password = "mustbeeightcharaters" @@ -574,7 +574,7 @@ resource "aws_rds_cluster_instance" "test1" { resource "aws_rds_cluster" "test2" { cluster_identifier = "%[1]s-aurora-cluster-target" engine = "aurora-mysql" - engine_version = "5.7.mysql_aurora.2.11.0" + engine_version = "5.7.mysql_aurora.2.11.2" database_name = "tftest" master_username = "tftest" master_password = "mustbeeightcharaters" @@ -635,7 +635,7 @@ resource "aws_dms_replication_task" "test" { migration_type = "full-load-and-cdc" replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn replication_task_id = %[1]q - replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"EnableLogContext\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"%[3]s\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" @@ -820,7 +820,7 @@ resource "aws_dms_replication_task" "test" { migration_type = "full-load-and-cdc" replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn replication_task_id = %[1]q - replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"EnableLogContext\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" source_endpoint_arn = aws_dms_s3_endpoint.source.endpoint_arn table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" From ef79b678aa329134ecc3139f53c69ec9c8b14721 Mon Sep 17 00:00:00 2001 From: Jakob Ondrey Date: Thu, 13 Apr 2023 22:24:22 -0500 Subject: [PATCH 03/56] adds changelog --- .changelog/30721.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/30721.txt diff --git a/.changelog/30721.txt b/.changelog/30721.txt new file mode 100644 index 000000000000..464706991f9f --- /dev/null +++ b/.changelog/30721.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_dms_replication_task: Allow in-place migration between DMS instances +``` \ No newline at end of file From fb8b829e58c2ad24683f83e4bb69dab0c450a87c Mon Sep 17 00:00:00 2001 From: Jakob Date: Fri, 14 Apr 2023 11:01:58 -0500 Subject: [PATCH 04/56] add acc test --- internal/service/dms/replication_task_test.go | 140 ++++++++++++++++++ 1 file changed, 140 insertions(+) diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 37eb60d2782b..dca2e1ccc5d5 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -151,6 +151,39 @@ func TestAccDMSReplicationTask_update(t *testing.T) { }) } +func TestAccDMSReplicationTask_move(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_dms_replication_task.test" + instanceOne := "aws_dms_replication_instance.test" + instanceTwo := "aws_dms_replication_instance.test2" + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, dms.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckReplicationTaskDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccReplicationTaskConfig_move(rName, "aws_dms_replication_instance.test.replication_instance_arn"), + Check: resource.ComposeTestCheckFunc( + testAccCheckReplicationInstanceExists(ctx, resourceName), + resource.TestCheckResourceAttrSet(resourceName, "replication_task_arn"), + resource.TestCheckResourceAttrPair(resourceName, "replication_instance_arn", instanceOne, "replication_instance_arn"), + ), + }, + { + Config: testAccReplicationTaskConfig_move(rName, "aws_dms_replication_instance.test2.replication_instance_arn"), + Check: resource.ComposeTestCheckFunc( + testAccCheckReplicationInstanceExists(ctx, resourceName), + resource.TestCheckResourceAttrSet(resourceName, "replication_task_arn"), + resource.TestCheckResourceAttrPair(resourceName, "replication_instance_arn", instanceTwo, "replication_instance_arn"), + ), + }, + }, + }) +} + func TestAccDMSReplicationTask_cdcStartPosition(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) @@ -402,6 +435,91 @@ resource "aws_dms_replication_instance" "test" { `, rName)) } +func replicationTaskConfigMove(rName string) string { + return acctest.ConfigCompose( + acctest.ConfigAvailableAZsNoOptIn(), + fmt.Sprintf(` +data "aws_partition" "current" {} + +data "aws_region" "current" {} + +resource "aws_vpc" "test" { + cidr_block = "10.1.0.0/16" + + tags = { + Name = %[1]q + } +} + +resource "aws_subnet" "test1" { + cidr_block = "10.1.1.0/24" + availability_zone = data.aws_availability_zones.available.names[0] + vpc_id = aws_vpc.test.id + + tags = { + Name = %[1]q + } +} + +resource "aws_subnet" "test2" { + cidr_block = "10.1.2.0/24" + availability_zone = data.aws_availability_zones.available.names[1] + vpc_id = aws_vpc.test.id + + tags = { + Name = "%[1]s-2" + } +} + +resource "aws_dms_endpoint" "source" { + database_name = %[1]q + endpoint_id = "%[1]s-source" + endpoint_type = "source" + engine_name = "aurora" + server_name = "tf-test-cluster.cluster-xxxxxxx.${data.aws_region.current.name}.rds.${data.aws_partition.current.dns_suffix}" + port = 3306 + username = "tftest" + password = "tftest" +} + +resource "aws_dms_endpoint" "target" { + database_name = %[1]q + endpoint_id = "%[1]s-target" + endpoint_type = "target" + engine_name = "aurora" + server_name = "tf-test-cluster.cluster-xxxxxxx.${data.aws_region.current.name}.rds.${data.aws_partition.current.dns_suffix}" + port = 3306 + username = "tftest" + password = "tftest" +} + +resource "aws_dms_replication_subnet_group" "test" { + replication_subnet_group_id = %[1]q + replication_subnet_group_description = "terraform test for replication subnet group" + subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] +} + +resource "aws_dms_replication_instance" "test" { + allocated_storage = 5 + auto_minor_version_upgrade = true + replication_instance_class = "dms.c4.large" + replication_instance_id = %[1]q + preferred_maintenance_window = "sun:00:30-sun:02:30" + publicly_accessible = false + replication_subnet_group_id = aws_dms_replication_subnet_group.test.replication_subnet_group_id +} +resource "aws_dms_replication_instance" "test2" { + allocated_storage = 5 + auto_minor_version_upgrade = true + replication_instance_class = "dms.c4.large" + replication_instance_id = "%[1]s-2" + preferred_maintenance_window = "sun:00:30-sun:02:30" + publicly_accessible = false + replication_subnet_group_id = aws_dms_replication_subnet_group.test.replication_subnet_group_id +} +`, rName)) +} + func testAccReplicationTaskConfig_basic(rName, tags string) string { return acctest.ConfigCompose( replicationTaskConfigBase(rName), @@ -445,6 +563,28 @@ resource "aws_dms_replication_task" "test" { `, rName, migType, memLimitTotal, ruleName)) } +func testAccReplicationTaskConfig_move(rName, rInstanceArn string) string { + + return acctest.ConfigCompose( + replicationTaskConfigMove(rName), + fmt.Sprintf(` +resource "aws_dms_replication_task" "test" { + migration_type = "full-load" + replication_instance_arn = %[2]s + replication_task_id = %[1]q + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"EnableLogContext\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn + table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" + + tags = { + Name = %[1]q + } + + target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn +} +`, rName, rInstanceArn)) +} + func testAccReplicationTaskConfig_cdcStartPosition(rName, cdcStartPosition string) string { return acctest.ConfigCompose( replicationTaskConfigBase(rName), From 34f450c6f2d8bffc04455cec506289513332b2d1 Mon Sep 17 00:00:00 2001 From: Jakob Date: Thu, 20 Apr 2023 17:21:49 -0500 Subject: [PATCH 05/56] increases some timeouts --- internal/service/dms/wait.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/service/dms/wait.go b/internal/service/dms/wait.go index c0736382b371..1b872f1750e3 100644 --- a/internal/service/dms/wait.go +++ b/internal/service/dms/wait.go @@ -10,8 +10,8 @@ import ( const ( propagationTimeout = 2 * time.Minute - replicationTaskRunningTimeout = 5 * time.Minute - moveTaskTimeout = 10 * time.Minute + replicationTaskRunningTimeout = 7 * time.Minute + moveTaskTimeout = 15 * time.Minute ) func waitEndpointDeleted(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { From d2bcc3f781d7be13b9b9b05d3afe91766002868f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?CHAUVET=2C=20J=C3=A9r=C3=A9my=20=28EH=3AGROUP=29?= Date: Mon, 12 Jun 2023 22:42:44 +0200 Subject: [PATCH 06/56] feat: use RFC3339 date for cdc_start_time --- internal/service/dms/replication_task.go | 24 ++++---- internal/service/dms/replication_task_test.go | 55 ++++++++++++++++++- .../docs/r/dms_replication_task.html.markdown | 6 +- 3 files changed, 67 insertions(+), 18 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 81740fae5ea4..b9bf75963b84 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "log" - "strconv" "time" "github.com/aws/aws-sdk-go/aws" @@ -43,9 +42,9 @@ func ResourceReplicationTask() *schema.Resource { ConflictsWith: []string{"cdc_start_time"}, }, "cdc_start_time": { - Type: schema.TypeString, - Optional: true, - // Requires a Unix timestamp in seconds. Example 1484346880 + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.IsRFC3339Time, ConflictsWith: []string{"cdc_start_position"}, }, "migration_type": { @@ -135,11 +134,9 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, } if v, ok := d.GetOk("cdc_start_time"); ok { - seconds, err := strconv.ParseInt(v.(string), 10, 64) - if err != nil { - return sdkdiag.AppendErrorf(diags, "DMS create replication task. Invalid CDC Unix timestamp: %s", err) - } - request.CdcStartTime = aws.Time(time.Unix(seconds, 0)) + // Parse the RFC3339 date string into a time.Time object + dateTime, _ := time.Parse(time.RFC3339, v.(string)) + request.CdcStartTime = aws.Time(dateTime) } if v, ok := d.GetOk("replication_task_settings"); ok { @@ -224,11 +221,14 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } if d.HasChange("cdc_start_time") { - seconds, err := strconv.ParseInt(d.Get("cdc_start_time").(string), 10, 64) + // Parse the RFC3339 date string into a time.Time object + dateTime, err := time.Parse(time.RFC3339, d.Get("cdc_start_time").(string)) + if err != nil { - return sdkdiag.AppendErrorf(diags, "DMS update replication task. Invalid CRC Unix timestamp: %s", err) + return sdkdiag.AppendErrorf(diags, "DMS update replication task. Invalid cdc_start_time value: %s", err) } - input.CdcStartTime = aws.Time(time.Unix(seconds, 0)) + + input.CdcStartTime = aws.Time(dateTime) } if d.HasChange("replication_task_settings") { diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 141884dd57c0..0e73f5563b9c 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -3,9 +3,6 @@ package dms_test import ( "context" "fmt" - "regexp" - "testing" - dms "github.com/aws/aws-sdk-go/service/databasemigrationservice" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -14,6 +11,10 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" tfdms "github.com/hashicorp/terraform-provider-aws/internal/service/dms" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "regexp" + "strings" + "testing" + "time" ) func TestAccDMSReplicationTask_basic(t *testing.T) { @@ -179,6 +180,37 @@ func TestAccDMSReplicationTask_cdcStartPosition(t *testing.T) { }) } +func TestAccDMSReplicationTask_cdcStartTime(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_dms_replication_task.test" + + currentTime := time.Now().UTC() + rfc3339Time := currentTime.Format(time.RFC3339) + awsDmsExpectedOutput := strings.TrimRight(rfc3339Time, "Z") // AWS API drop "Z" part. + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, dms.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckReplicationTaskDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccReplicationTaskConfig_cdcStartTime(rName, rfc3339Time), + Check: resource.ComposeTestCheckFunc( + testAccCheckReplicationTaskExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "cdc_start_position", awsDmsExpectedOutput), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerifyIgnore: []string{"start_replication_task"}, + }, + }, + }) +} + func TestAccDMSReplicationTask_startReplicationTask(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -462,6 +494,23 @@ resource "aws_dms_replication_task" "test" { `, cdcStartPosition, rName)) } +func testAccReplicationTaskConfig_cdcStartTime(rName, cdcStartPosition string) string { + return acctest.ConfigCompose( + replicationTaskConfigBase(rName), + fmt.Sprintf(` +resource "aws_dms_replication_task" "test" { + cdc_start_time = %[1]q + migration_type = "cdc" + replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn + replication_task_id = %[2]q + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn + table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" + target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn +} +`, cdcStartPosition, rName)) +} + func testAccReplicationTaskConfig_start(rName string, startTask bool, ruleName string) string { return acctest.ConfigCompose( acctest.ConfigAvailableAZsNoOptIn(), diff --git a/website/docs/r/dms_replication_task.html.markdown b/website/docs/r/dms_replication_task.html.markdown index 35f486cbbd76..01726a887e5f 100644 --- a/website/docs/r/dms_replication_task.html.markdown +++ b/website/docs/r/dms_replication_task.html.markdown @@ -17,7 +17,7 @@ Provides a DMS (Data Migration Service) replication task resource. DMS replicati ```terraform # Create a new replication task resource "aws_dms_replication_task" "test" { - cdc_start_time = 1484346880 + cdc_start_time = "2023-06-09T18:27:12Z" migration_type = "full-load" replication_instance_arn = aws_dms_replication_instance.test-dms-replication-instance-tf.replication_instance_arn replication_task_id = "test-dms-replication-task-tf" @@ -37,8 +37,8 @@ resource "aws_dms_replication_task" "test" { The following arguments are supported: -* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) operation to start. The value can be in date, checkpoint, or LSN/SCN format depending on the source engine. For more information, see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). -* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) The Unix timestamp integer for the start of the Change Data Capture (CDC) operation. +* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) operation to start. The value can be a RFC3339 formatted date, a checkpoint, or a LSN/SCN format depending on the source engine. For more information, see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). +* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) RFC3339 formatted date string for the start of the Change Data Capture (CDC) operation. * `migration_type` - (Required) The migration type. Can be one of `full-load | cdc | full-load-and-cdc`. * `replication_instance_arn` - (Required) The Amazon Resource Name (ARN) of the replication instance. * `replication_task_id` - (Required) The replication task identifier. From 006d5546d1e9c4d030c7a336c1e60b5000ae1497 Mon Sep 17 00:00:00 2001 From: Jeremy Chauvet Date: Mon, 12 Jun 2023 22:42:44 +0200 Subject: [PATCH 07/56] feat: use RFC3339 date for cdc_start_time --- internal/service/dms/replication_task.go | 24 ++++---- internal/service/dms/replication_task_test.go | 55 ++++++++++++++++++- .../docs/r/dms_replication_task.html.markdown | 6 +- 3 files changed, 67 insertions(+), 18 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 81740fae5ea4..b9bf75963b84 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -5,7 +5,6 @@ import ( "encoding/json" "fmt" "log" - "strconv" "time" "github.com/aws/aws-sdk-go/aws" @@ -43,9 +42,9 @@ func ResourceReplicationTask() *schema.Resource { ConflictsWith: []string{"cdc_start_time"}, }, "cdc_start_time": { - Type: schema.TypeString, - Optional: true, - // Requires a Unix timestamp in seconds. Example 1484346880 + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.IsRFC3339Time, ConflictsWith: []string{"cdc_start_position"}, }, "migration_type": { @@ -135,11 +134,9 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, } if v, ok := d.GetOk("cdc_start_time"); ok { - seconds, err := strconv.ParseInt(v.(string), 10, 64) - if err != nil { - return sdkdiag.AppendErrorf(diags, "DMS create replication task. Invalid CDC Unix timestamp: %s", err) - } - request.CdcStartTime = aws.Time(time.Unix(seconds, 0)) + // Parse the RFC3339 date string into a time.Time object + dateTime, _ := time.Parse(time.RFC3339, v.(string)) + request.CdcStartTime = aws.Time(dateTime) } if v, ok := d.GetOk("replication_task_settings"); ok { @@ -224,11 +221,14 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } if d.HasChange("cdc_start_time") { - seconds, err := strconv.ParseInt(d.Get("cdc_start_time").(string), 10, 64) + // Parse the RFC3339 date string into a time.Time object + dateTime, err := time.Parse(time.RFC3339, d.Get("cdc_start_time").(string)) + if err != nil { - return sdkdiag.AppendErrorf(diags, "DMS update replication task. Invalid CRC Unix timestamp: %s", err) + return sdkdiag.AppendErrorf(diags, "DMS update replication task. Invalid cdc_start_time value: %s", err) } - input.CdcStartTime = aws.Time(time.Unix(seconds, 0)) + + input.CdcStartTime = aws.Time(dateTime) } if d.HasChange("replication_task_settings") { diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 141884dd57c0..0e73f5563b9c 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -3,9 +3,6 @@ package dms_test import ( "context" "fmt" - "regexp" - "testing" - dms "github.com/aws/aws-sdk-go/service/databasemigrationservice" sdkacctest "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -14,6 +11,10 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" tfdms "github.com/hashicorp/terraform-provider-aws/internal/service/dms" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" + "regexp" + "strings" + "testing" + "time" ) func TestAccDMSReplicationTask_basic(t *testing.T) { @@ -179,6 +180,37 @@ func TestAccDMSReplicationTask_cdcStartPosition(t *testing.T) { }) } +func TestAccDMSReplicationTask_cdcStartTime(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_dms_replication_task.test" + + currentTime := time.Now().UTC() + rfc3339Time := currentTime.Format(time.RFC3339) + awsDmsExpectedOutput := strings.TrimRight(rfc3339Time, "Z") // AWS API drop "Z" part. + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, dms.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckReplicationTaskDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccReplicationTaskConfig_cdcStartTime(rName, rfc3339Time), + Check: resource.ComposeTestCheckFunc( + testAccCheckReplicationTaskExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "cdc_start_position", awsDmsExpectedOutput), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerifyIgnore: []string{"start_replication_task"}, + }, + }, + }) +} + func TestAccDMSReplicationTask_startReplicationTask(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { @@ -462,6 +494,23 @@ resource "aws_dms_replication_task" "test" { `, cdcStartPosition, rName)) } +func testAccReplicationTaskConfig_cdcStartTime(rName, cdcStartPosition string) string { + return acctest.ConfigCompose( + replicationTaskConfigBase(rName), + fmt.Sprintf(` +resource "aws_dms_replication_task" "test" { + cdc_start_time = %[1]q + migration_type = "cdc" + replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn + replication_task_id = %[2]q + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn + table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" + target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn +} +`, cdcStartPosition, rName)) +} + func testAccReplicationTaskConfig_start(rName string, startTask bool, ruleName string) string { return acctest.ConfigCompose( acctest.ConfigAvailableAZsNoOptIn(), diff --git a/website/docs/r/dms_replication_task.html.markdown b/website/docs/r/dms_replication_task.html.markdown index 35f486cbbd76..01726a887e5f 100644 --- a/website/docs/r/dms_replication_task.html.markdown +++ b/website/docs/r/dms_replication_task.html.markdown @@ -17,7 +17,7 @@ Provides a DMS (Data Migration Service) replication task resource. DMS replicati ```terraform # Create a new replication task resource "aws_dms_replication_task" "test" { - cdc_start_time = 1484346880 + cdc_start_time = "2023-06-09T18:27:12Z" migration_type = "full-load" replication_instance_arn = aws_dms_replication_instance.test-dms-replication-instance-tf.replication_instance_arn replication_task_id = "test-dms-replication-task-tf" @@ -37,8 +37,8 @@ resource "aws_dms_replication_task" "test" { The following arguments are supported: -* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) operation to start. The value can be in date, checkpoint, or LSN/SCN format depending on the source engine. For more information, see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). -* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) The Unix timestamp integer for the start of the Change Data Capture (CDC) operation. +* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) operation to start. The value can be a RFC3339 formatted date, a checkpoint, or a LSN/SCN format depending on the source engine. For more information, see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). +* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) RFC3339 formatted date string for the start of the Change Data Capture (CDC) operation. * `migration_type` - (Required) The migration type. Can be one of `full-load | cdc | full-load-and-cdc`. * `replication_instance_arn` - (Required) The Amazon Resource Name (ARN) of the replication instance. * `replication_task_id` - (Required) The replication task identifier. From 2472e542365cca84ee897d7ff71eb4f0dab0349e Mon Sep 17 00:00:00 2001 From: Jeremy Chauvet Date: Mon, 12 Jun 2023 23:33:47 +0200 Subject: [PATCH 08/56] feat: use RFC3339 date for cdc_start_time --- .changelog/31917.txt | 3 +++ website/docs/r/dms_replication_task.html.markdown | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .changelog/31917.txt diff --git a/.changelog/31917.txt b/.changelog/31917.txt new file mode 100644 index 000000000000..df12fe538a11 --- /dev/null +++ b/.changelog/31917.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/aws_dms_replication_task: cdc_start_time parameter now use RFC3339 formatted date instead of UNIX timestamp. +``` \ No newline at end of file diff --git a/website/docs/r/dms_replication_task.html.markdown b/website/docs/r/dms_replication_task.html.markdown index 01726a887e5f..77a4860d2f41 100644 --- a/website/docs/r/dms_replication_task.html.markdown +++ b/website/docs/r/dms_replication_task.html.markdown @@ -17,7 +17,7 @@ Provides a DMS (Data Migration Service) replication task resource. DMS replicati ```terraform # Create a new replication task resource "aws_dms_replication_task" "test" { - cdc_start_time = "2023-06-09T18:27:12Z" + cdc_start_time = "1993-05-21T05:50:00Z" migration_type = "full-load" replication_instance_arn = aws_dms_replication_instance.test-dms-replication-instance-tf.replication_instance_arn replication_task_id = "test-dms-replication-task-tf" From d26698b61a0c8e151a3c4b3796c2153f7a61a329 Mon Sep 17 00:00:00 2001 From: Jeremy Chauvet Date: Tue, 13 Jun 2023 09:21:14 +0200 Subject: [PATCH 09/56] feat: allow RFC3339 date for cdc_start_time --- .changelog/31917.txt | 2 +- internal/service/dms/replication_task.go | 2 +- website/docs/r/dms_replication_task.html.markdown | 8 ++++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.changelog/31917.txt b/.changelog/31917.txt index df12fe538a11..b6f0cbda065c 100644 --- a/.changelog/31917.txt +++ b/.changelog/31917.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/aws_dms_replication_task: cdc_start_time parameter now use RFC3339 formatted date instead of UNIX timestamp. +resource/aws_dms_replication_task: allow cdc_start_time parameter to use RFC3339 formatted date additionally to a UNIX timestamp. ``` \ No newline at end of file diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index b9bf75963b84..89a038f3b261 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -44,7 +44,7 @@ func ResourceReplicationTask() *schema.Resource { "cdc_start_time": { Type: schema.TypeString, Optional: true, - ValidateFunc: validation.IsRFC3339Time, + ValidateFunc: verify.ValidStringDateOrPositiveInt, ConflictsWith: []string{"cdc_start_position"}, }, "migration_type": { diff --git a/website/docs/r/dms_replication_task.html.markdown b/website/docs/r/dms_replication_task.html.markdown index 77a4860d2f41..35e672c6905e 100644 --- a/website/docs/r/dms_replication_task.html.markdown +++ b/website/docs/r/dms_replication_task.html.markdown @@ -37,8 +37,12 @@ resource "aws_dms_replication_task" "test" { The following arguments are supported: -* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) operation to start. The value can be a RFC3339 formatted date, a checkpoint, or a LSN/SCN format depending on the source engine. For more information, see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). -* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) RFC3339 formatted date string for the start of the Change Data Capture (CDC) operation. +* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) + operation to start. The value can be a RFC3339 formatted date, a checkpoint, or a LSN/SCN format depending on the + source engine. For more information, + see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). +* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) RFC3339 formatted date string or UNIX timestamp for + the start of the Change Data Capture (CDC) operation. * `migration_type` - (Required) The migration type. Can be one of `full-load | cdc | full-load-and-cdc`. * `replication_instance_arn` - (Required) The Amazon Resource Name (ARN) of the replication instance. * `replication_task_id` - (Required) The replication task identifier. From 6ab260e1e5ace4a802f78da379b2c3ab61094e2a Mon Sep 17 00:00:00 2001 From: Jeremy Chauvet Date: Tue, 13 Jun 2023 18:00:29 +0200 Subject: [PATCH 10/56] feat: allow RFC3339 date for cdc_start_time --- internal/service/dms/replication_task.go | 17 +++++++-- internal/service/dms/replication_task_test.go | 36 ++++++++++++++++++- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 89a038f3b261..f5a384bcd756 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "log" + "strconv" "time" "github.com/aws/aws-sdk-go/aws" @@ -134,9 +135,19 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, } if v, ok := d.GetOk("cdc_start_time"); ok { - // Parse the RFC3339 date string into a time.Time object - dateTime, _ := time.Parse(time.RFC3339, v.(string)) - request.CdcStartTime = aws.Time(dateTime) + // Check if input is RFC3339 date string or UNIX timestamp. + dateTime, err := time.Parse(time.RFC3339, v.(string)) + + if err != nil { + // Not a valid RF3339 date, checking if this is a UNIX timestamp. + seconds, err := strconv.ParseInt(v.(string), 10, 64) + if err != nil { + return sdkdiag.AppendErrorf(diags, "DMS create replication task. Invalid Unix timestamp given for cdc_start_time parameter: %s", err) + } + request.CdcStartTime = aws.Time(time.Unix(seconds, 0)) + } else { + request.CdcStartTime = aws.Time(dateTime) + } } if v, ok := d.GetOk("replication_task_settings"); ok { diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 0e73f5563b9c..79da6d7c0479 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -12,6 +12,7 @@ import ( tfdms "github.com/hashicorp/terraform-provider-aws/internal/service/dms" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "regexp" + "strconv" "strings" "testing" "time" @@ -180,7 +181,7 @@ func TestAccDMSReplicationTask_cdcStartPosition(t *testing.T) { }) } -func TestAccDMSReplicationTask_cdcStartTime(t *testing.T) { +func TestAccDMSReplicationTask_cdcStartTime_rfc3339_date(t *testing.T) { ctx := acctest.Context(t) rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) resourceName := "aws_dms_replication_task.test" @@ -211,6 +212,39 @@ func TestAccDMSReplicationTask_cdcStartTime(t *testing.T) { }) } +func TestAccDMSReplicationTask_cdcStartTime_unix_timestamp(t *testing.T) { + ctx := acctest.Context(t) + rName := sdkacctest.RandomWithPrefix(acctest.ResourcePrefix) + resourceName := "aws_dms_replication_task.test" + + currentTime := time.Now().UTC() + rfc3339Time := currentTime.Format(time.RFC3339) + awsDmsExpectedOutput := strings.TrimRight(rfc3339Time, "Z") // AWS API drop "Z" part. + dateTime, _ := time.Parse(time.RFC3339, rfc3339Time) + unixDateTime := strconv.Itoa(int(dateTime.Unix())) + + resource.ParallelTest(t, resource.TestCase{ + PreCheck: func() { acctest.PreCheck(ctx, t) }, + ErrorCheck: acctest.ErrorCheck(t, dms.EndpointsID), + ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories, + CheckDestroy: testAccCheckReplicationTaskDestroy(ctx), + Steps: []resource.TestStep{ + { + Config: testAccReplicationTaskConfig_cdcStartTime(rName, unixDateTime), + Check: resource.ComposeTestCheckFunc( + testAccCheckReplicationTaskExists(ctx, resourceName), + resource.TestCheckResourceAttr(resourceName, "cdc_start_position", awsDmsExpectedOutput), + ), + }, + { + ResourceName: resourceName, + ImportState: true, + ImportStateVerifyIgnore: []string{"start_replication_task"}, + }, + }, + }) +} + func TestAccDMSReplicationTask_startReplicationTask(t *testing.T) { ctx := acctest.Context(t) if testing.Short() { From b8b643b39f2404bec09cf28bff9eb51cb01b3694 Mon Sep 17 00:00:00 2001 From: Daniel Rieske Date: Sat, 11 Nov 2023 01:03:26 +0100 Subject: [PATCH 11/56] feat: remove readonly properties and updated tests --- internal/service/dms/replication_config.go | 44 +++++++++++++++++-- .../service/dms/replication_config_test.go | 1 + 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index 0e28a8783887..efa7bae2003b 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -5,6 +5,7 @@ package dms import ( "context" + "encoding/json" "fmt" "log" "time" @@ -112,9 +113,11 @@ func ResourceReplicationConfig() *schema.Resource { ForceNew: true, }, "replication_settings": { - Type: schema.TypeString, - Optional: true, - Computed: true, + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: verify.SuppressEquivalentJSONDiffs, }, "replication_type": { Type: schema.TypeString, @@ -230,13 +233,19 @@ func resourceReplicationConfigRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "setting compute_config: %s", err) } d.Set("replication_config_identifier", replicationConfig.ReplicationConfigIdentifier) - d.Set("replication_settings", replicationConfig.ReplicationSettings) d.Set("replication_type", replicationConfig.ReplicationType) d.Set("source_endpoint_arn", replicationConfig.SourceEndpointArn) d.Set("supplemental_settings", replicationConfig.SupplementalSettings) d.Set("table_mappings", replicationConfig.TableMappings) d.Set("target_endpoint_arn", replicationConfig.TargetEndpointArn) + settings, err := replicationConfigRemoveReadOnlySettings(aws.StringValue(replicationConfig.ReplicationSettings)) + if err != nil { + return sdkdiag.AppendErrorf(diags, "reading DMS Replication Config (%s): %s", d.Id(), err) + } + + d.Set("replication_settings", settings) + return diags } @@ -655,3 +664,30 @@ func expandComputeConfigInput(tfMap map[string]interface{}) *dms.ComputeConfig { return apiObject } + +func replicationConfigRemoveReadOnlySettings(settings string) (*string, error) { + var settingsData map[string]interface{} + if err := json.Unmarshal([]byte(settings), &settingsData); err != nil { + return nil, err + } + + controlTablesSettings, ok := settingsData["ControlTablesSettings"].(map[string]interface{}) + if ok { + delete(controlTablesSettings, "historyTimeslotInMinutes") + } + + logging, ok := settingsData["Logging"].(map[string]interface{}) + if ok { + delete(logging, "EnableLogContext") + delete(logging, "CloudWatchLogGroup") + delete(logging, "CloudWatchLogStream") + } + + cleanedSettings, err := json.Marshal(settingsData) + if err != nil { + return nil, err + } + + cleanedSettingsString := string(cleanedSettings) + return &cleanedSettingsString, nil +} diff --git a/internal/service/dms/replication_config_test.go b/internal/service/dms/replication_config_test.go index 3f009e15b7b4..fa2a9dfe610a 100644 --- a/internal/service/dms/replication_config_test.go +++ b/internal/service/dms/replication_config_test.go @@ -386,6 +386,7 @@ resource "aws_dms_replication_config" "test" { source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" + replication_settings = "{\"BeforeImageSettings\":null,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"CommitPositionTableEnabled\":false,\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FailTaskWhenCleanTaskResourceFailed\":false,\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TTSettings\":{\"EnableTT\":false,\"FailTaskOnTTFailure\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false}}" compute_config { replication_subnet_group_id = aws_dms_replication_subnet_group.test.replication_subnet_group_id From 942efeacf5f1caf2b3cbbc0b1ed010b345cbe748 Mon Sep 17 00:00:00 2001 From: Daniel Rieske Date: Sat, 11 Nov 2023 01:31:07 +0100 Subject: [PATCH 12/56] chore: added changelog --- .changelog/34356.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/34356.txt diff --git a/.changelog/34356.txt b/.changelog/34356.txt new file mode 100644 index 000000000000..2d9f2866f79b --- /dev/null +++ b/.changelog/34356.txt @@ -0,0 +1,3 @@ +```release-note:bug +resource/aws_dms_replication_config: Remove read-only properties from `replication_settings` to supress diffs +``` From b5b160a84d51c40da8460a0ccf2af06f28793dd4 Mon Sep 17 00:00:00 2001 From: Daniel Rieske Date: Sat, 11 Nov 2023 01:32:46 +0100 Subject: [PATCH 13/56] chore: fmt changelog --- .changelog/34356.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/34356.txt b/.changelog/34356.txt index 2d9f2866f79b..1dd0e3aafe16 100644 --- a/.changelog/34356.txt +++ b/.changelog/34356.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/aws_dms_replication_config: Remove read-only properties from `replication_settings` to supress diffs +resource/aws_dms_replication_config: Remove read-only properties from `replication_settings` to suppress diffs ``` From 87ba32eac9f05c1f791ef68e840ad6c442f88291 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 08:02:39 -0500 Subject: [PATCH 14/56] Add 'internal/json' package. --- .teamcity/scripts/provider_tests/acceptance_tests.sh | 1 + .teamcity/scripts/provider_tests/unit_tests.sh | 1 + internal/json/remove.go | 4 ++++ 3 files changed, 6 insertions(+) create mode 100644 internal/json/remove.go diff --git a/.teamcity/scripts/provider_tests/acceptance_tests.sh b/.teamcity/scripts/provider_tests/acceptance_tests.sh index 40e32576ad8b..3a8a7fdaf7cd 100644 --- a/.teamcity/scripts/provider_tests/acceptance_tests.sh +++ b/.teamcity/scripts/provider_tests/acceptance_tests.sh @@ -44,6 +44,7 @@ TF_ACC=1 go test \ ./internal/flex/... \ ./internal/framework/... \ ./internal/generate/... \ + ./internal/json/... \ ./internal/logging/... \ ./internal/maps/... \ ./internal/provider/... \ diff --git a/.teamcity/scripts/provider_tests/unit_tests.sh b/.teamcity/scripts/provider_tests/unit_tests.sh index 02fe6c3c2c4c..582a9af99c2b 100644 --- a/.teamcity/scripts/provider_tests/unit_tests.sh +++ b/.teamcity/scripts/provider_tests/unit_tests.sh @@ -16,6 +16,7 @@ go test \ ./internal/flex/... \ ./internal/framework/... \ ./internal/generate/... \ + ./internal/json/... \ ./internal/logging/... \ ./internal/maps/... \ ./internal/provider/... \ diff --git a/internal/json/remove.go b/internal/json/remove.go new file mode 100644 index 000000000000..6d271c22339e --- /dev/null +++ b/internal/json/remove.go @@ -0,0 +1,4 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package json From 9613585b6d52044c2285ab32196b1a06b2910000 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 08:10:50 -0500 Subject: [PATCH 15/56] 'internal/ujson' -> 'internal/json/ujson'. --- .teamcity/scripts/provider_tests/acceptance_tests.sh | 1 - .teamcity/scripts/provider_tests/unit_tests.sh | 1 - internal/{ => json}/ujson/LICENSE | 0 internal/{ => json}/ujson/quote.go | 0 internal/{ => json}/ujson/quote_test.go | 2 +- .../\302\265json.go" => "internal/json/ujson/\302\265json.go" | 0 .../json/ujson/\302\265json_test.go" | 0 internal/service/fms/managed_service_data.go | 2 +- 8 files changed, 2 insertions(+), 4 deletions(-) rename internal/{ => json}/ujson/LICENSE (100%) rename internal/{ => json}/ujson/quote.go (100%) rename internal/{ => json}/ujson/quote_test.go (98%) rename "internal/ujson/\302\265json.go" => "internal/json/ujson/\302\265json.go" (100%) rename "internal/ujson/\302\265json_test.go" => "internal/json/ujson/\302\265json_test.go" (100%) diff --git a/.teamcity/scripts/provider_tests/acceptance_tests.sh b/.teamcity/scripts/provider_tests/acceptance_tests.sh index 3a8a7fdaf7cd..4b2642d92d51 100644 --- a/.teamcity/scripts/provider_tests/acceptance_tests.sh +++ b/.teamcity/scripts/provider_tests/acceptance_tests.sh @@ -55,7 +55,6 @@ TF_ACC=1 go test \ ./internal/tags/... \ ./internal/tfresource/... \ ./internal/types/... \ - ./internal/ujson/... \ ./internal/vault/... \ ./internal/verify/... \ -json -v -count=1 -parallel "%ACCTEST_PARALLELISM%" -timeout=0 -run=TestAcc diff --git a/.teamcity/scripts/provider_tests/unit_tests.sh b/.teamcity/scripts/provider_tests/unit_tests.sh index 582a9af99c2b..91580f3e5907 100644 --- a/.teamcity/scripts/provider_tests/unit_tests.sh +++ b/.teamcity/scripts/provider_tests/unit_tests.sh @@ -27,7 +27,6 @@ go test \ ./internal/tags/... \ ./internal/tfresource/... \ ./internal/types/... \ - ./internal/ujson/... \ ./internal/vault/... \ ./internal/verify/... \ -json diff --git a/internal/ujson/LICENSE b/internal/json/ujson/LICENSE similarity index 100% rename from internal/ujson/LICENSE rename to internal/json/ujson/LICENSE diff --git a/internal/ujson/quote.go b/internal/json/ujson/quote.go similarity index 100% rename from internal/ujson/quote.go rename to internal/json/ujson/quote.go diff --git a/internal/ujson/quote_test.go b/internal/json/ujson/quote_test.go similarity index 98% rename from internal/ujson/quote_test.go rename to internal/json/ujson/quote_test.go index 9c7c47748e50..21b19dc3f28a 100644 --- a/internal/ujson/quote_test.go +++ b/internal/json/ujson/quote_test.go @@ -7,7 +7,7 @@ import ( "errors" "testing" - "github.com/hashicorp/terraform-provider-aws/internal/ujson" + "github.com/hashicorp/terraform-provider-aws/internal/json/ujson" ) type quoteTest struct { diff --git "a/internal/ujson/\302\265json.go" "b/internal/json/ujson/\302\265json.go" similarity index 100% rename from "internal/ujson/\302\265json.go" rename to "internal/json/ujson/\302\265json.go" diff --git "a/internal/ujson/\302\265json_test.go" "b/internal/json/ujson/\302\265json_test.go" similarity index 100% rename from "internal/ujson/\302\265json_test.go" rename to "internal/json/ujson/\302\265json_test.go" diff --git a/internal/service/fms/managed_service_data.go b/internal/service/fms/managed_service_data.go index dfe0409ad02e..462b9ce87561 100644 --- a/internal/service/fms/managed_service_data.go +++ b/internal/service/fms/managed_service_data.go @@ -7,7 +7,7 @@ import ( "encoding/json" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-provider-aws/internal/ujson" + "github.com/hashicorp/terraform-provider-aws/internal/json/ujson" "github.com/hashicorp/terraform-provider-aws/internal/verify" ) From 71251ea5cf3db04440179301a21f877268e0a3ab Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 08:20:22 -0500 Subject: [PATCH 16/56] Add 'json.RemoveReadOnlyFields'. --- internal/json/remove.go | 40 ++++++++++++++++++++++++++++++++ internal/json/remove_test.go | 45 ++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 internal/json/remove_test.go diff --git a/internal/json/remove.go b/internal/json/remove.go index 6d271c22339e..cd22e993b2af 100644 --- a/internal/json/remove.go +++ b/internal/json/remove.go @@ -2,3 +2,43 @@ // SPDX-License-Identifier: MPL-2.0 package json + +import ( + "bytes" + + "github.com/hashicorp/terraform-provider-aws/internal/json/ujson" +) + +// RemoveReadOnlyFields removes read-only (can't be specified in configuration) fields from a valid JSON string. +func RemoveReadOnlyFields(in string, roFields ...string) string { + out := make([]byte, 0, len(in)) + + err := ujson.Walk([]byte(in), func(_ int, key, value []byte) bool { + if len(key) != 0 { + for _, roField := range roFields { + if bytes.Equal(key, []byte(roField)) { + // Remove the key and value from the output. + return false + } + } + } + + // Write to output. + if len(out) != 0 && ujson.ShouldAddComma(value, out[len(out)-1]) { + out = append(out, ',') + } + if len(key) > 0 { + out = append(out, key...) + out = append(out, ':') + } + out = append(out, value...) + + return true + }) + + if err != nil { + return "" + } + + return string(out) +} diff --git a/internal/json/remove_test.go b/internal/json/remove_test.go new file mode 100644 index 000000000000..8c5bc527251f --- /dev/null +++ b/internal/json/remove_test.go @@ -0,0 +1,45 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package json + +import ( + "testing" +) + +func TestRemoveReadOnlyFields(t *testing.T) { + t.Parallel() + + testCases := []struct { + testName string + input string + want string + }{ + { + testName: "empty JSON", + input: "{}", + want: "{}", + }, + { + testName: "single field", + input: `{ "key": 42 }`, + want: `{"key":42}`, + }, + { + testName: "with read-only field", + input: "{\"unifiedAlerting\": {\"enabled\": true}, \"plugins\": {\"pluginAdminEnabled\" :false}}", + want: "{\"unifiedAlerting\":{\"enabled\":true}}", + }, + } + + for _, testCase := range testCases { + testCase := testCase + t.Run(testCase.testName, func(t *testing.T) { + t.Parallel() + + if got, want := RemoveReadOnlyFields(testCase.input, `"plugins"`), testCase.want; got != want { + t.Errorf("RemoveReadOnlyFields(%q) = %q, want %q", testCase.input, got, want) + } + }) + } +} From 6ce0b892f04df891f11eccc355d91625e7849480 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 08:32:54 -0500 Subject: [PATCH 17/56] Add 'verify.SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs'. --- internal/verify/json.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/internal/verify/json.go b/internal/verify/json.go index 27aa395ffc1b..1439938560f9 100644 --- a/internal/verify/json.go +++ b/internal/verify/json.go @@ -15,6 +15,7 @@ import ( awspolicy "github.com/hashicorp/awspolicyequivalence" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure" + tfjson "github.com/hashicorp/terraform-provider-aws/internal/json" ) // SuppressEquivalentPolicyDiffs returns a difference suppression function that compares @@ -208,3 +209,18 @@ func LegacyPolicyToSet(exist, new string) (string, error) { return policyToSet, nil } + +// SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs returns a difference suppression function that compares +// two JSON strings and returns `true` if they are equivalent once read-only fields have been removed. +// Read-only fields are those that can't be specified in configuration (returned only from AWS API). +func SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs(roFields ...string) schema.SchemaDiffSuppressFunc { + return func(k, old, new string, d *schema.ResourceData) bool { + if !json.Valid([]byte(old)) || !json.Valid([]byte(new)) { + return old == new + } + + old, new = tfjson.RemoveReadOnlyFields(old, roFields...), tfjson.RemoveReadOnlyFields(new, roFields...) + + return JSONStringsEqual(old, new) + } +} From 44c774e002a1a9ee09b75403c978e931665345d6 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 08:38:25 -0500 Subject: [PATCH 18/56] r/aws_dms_replication_config: Use 'verify.SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs'. --- internal/service/dms/replication_config.go | 57 +++++++--------------- 1 file changed, 17 insertions(+), 40 deletions(-) diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index 83cb89640f6c..c5a8b15bf7d6 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -5,7 +5,6 @@ package dms import ( "context" - "encoding/json" "fmt" "log" "time" @@ -16,6 +15,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" @@ -113,11 +113,21 @@ func ResourceReplicationConfig() *schema.Resource { ForceNew: true, }, "replication_settings": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.StringIsJSON, - DiffSuppressFunc: verify.SuppressEquivalentJSONDiffs, + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: verify.SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs( + `"historyTimeslotInMinutes"`, + `"EnableLogContext"`, + `"CloudWatchLogGroup"`, + `"CloudWatchLogStream"`, + ), + DiffSuppressOnRefresh: true, + StateFunc: func(v interface{}) string { + json, _ := structure.NormalizeJsonString(v) + return json + }, }, "replication_type": { Type: schema.TypeString, @@ -233,19 +243,13 @@ func resourceReplicationConfigRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "setting compute_config: %s", err) } d.Set("replication_config_identifier", replicationConfig.ReplicationConfigIdentifier) + d.Set("replication_settings", replicationConfig.ReplicationSettings) d.Set("replication_type", replicationConfig.ReplicationType) d.Set("source_endpoint_arn", replicationConfig.SourceEndpointArn) d.Set("supplemental_settings", replicationConfig.SupplementalSettings) d.Set("table_mappings", replicationConfig.TableMappings) d.Set("target_endpoint_arn", replicationConfig.TargetEndpointArn) - settings, err := replicationConfigRemoveReadOnlySettings(aws.StringValue(replicationConfig.ReplicationSettings)) - if err != nil { - return sdkdiag.AppendErrorf(diags, "reading DMS Replication Config (%s): %s", d.Id(), err) - } - - d.Set("replication_settings", settings) - return diags } @@ -664,30 +668,3 @@ func expandComputeConfigInput(tfMap map[string]interface{}) *dms.ComputeConfig { return apiObject } - -func replicationConfigRemoveReadOnlySettings(settings string) (*string, error) { - var settingsData map[string]interface{} - if err := json.Unmarshal([]byte(settings), &settingsData); err != nil { - return nil, err - } - - controlTablesSettings, ok := settingsData["ControlTablesSettings"].(map[string]interface{}) - if ok { - delete(controlTablesSettings, "historyTimeslotInMinutes") - } - - logging, ok := settingsData["Logging"].(map[string]interface{}) - if ok { - delete(logging, "EnableLogContext") - delete(logging, "CloudWatchLogGroup") - delete(logging, "CloudWatchLogStream") - } - - cleanedSettings, err := json.Marshal(settingsData) - if err != nil { - return nil, err - } - - cleanedSettingsString := string(cleanedSettings) - return &cleanedSettingsString, nil -} From 144aeb8cf5dadc22a6e27d50323734bd150826b8 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 10:27:47 -0500 Subject: [PATCH 19/56] startReplication: replication NotFound is OK. --- internal/service/dms/replication_config.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index c5a8b15bf7d6..b81793f6568b 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -576,6 +576,10 @@ func startReplication(ctx context.Context, conn *dms.DatabaseMigrationService, a func stopReplication(ctx context.Context, conn *dms.DatabaseMigrationService, arn string, timeout time.Duration) error { replication, err := findReplicationByReplicationConfigARN(ctx, conn, arn) + if tfresource.NotFound(err) { + return nil + } + if err != nil { return fmt.Errorf("reading DMS Replication Config (%s) replication: %s", arn, err) } From 99d7818b8b18db0733a8e69fb8ee2adcaf3c7f67 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 12:56:43 -0500 Subject: [PATCH 20/56] dms: Add 'TaskSettings'. --- internal/service/dms/replication_config.go | 22 +-- internal/service/dms/task_settings_json.go | 158 +++++++++++++++++++++ 2 files changed, 164 insertions(+), 16 deletions(-) create mode 100644 internal/service/dms/task_settings_json.go diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index b81793f6568b..73cc81bf6973 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -15,7 +15,6 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" @@ -113,21 +112,12 @@ func ResourceReplicationConfig() *schema.Resource { ForceNew: true, }, "replication_settings": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ValidateFunc: validation.StringIsJSON, - DiffSuppressFunc: verify.SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs( - `"historyTimeslotInMinutes"`, - `"EnableLogContext"`, - `"CloudWatchLogGroup"`, - `"CloudWatchLogStream"`, - ), + Type: schema.TypeString, + Optional: true, + Computed: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: verify.SuppressEquivalentJSONDiffs, DiffSuppressOnRefresh: true, - StateFunc: func(v interface{}) string { - json, _ := structure.NormalizeJsonString(v) - return json - }, }, "replication_type": { Type: schema.TypeString, @@ -243,7 +233,7 @@ func resourceReplicationConfigRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "setting compute_config: %s", err) } d.Set("replication_config_identifier", replicationConfig.ReplicationConfigIdentifier) - d.Set("replication_settings", replicationConfig.ReplicationSettings) + d.Set("replication_settings", flattenSettings(aws.StringValue(replicationConfig.ReplicationSettings))) d.Set("replication_type", replicationConfig.ReplicationType) d.Set("source_endpoint_arn", replicationConfig.SourceEndpointArn) d.Set("supplemental_settings", replicationConfig.SupplementalSettings) diff --git a/internal/service/dms/task_settings_json.go b/internal/service/dms/task_settings_json.go new file mode 100644 index 000000000000..e67f14943cb1 --- /dev/null +++ b/internal/service/dms/task_settings_json.go @@ -0,0 +1,158 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package dms + +import ( + "encoding/json" +) + +// https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.html#CHAP_Tasks.CustomizingTasks.TaskSettings.Example +// https://mholt.github.io/json-to-go/ + +type TaskSettings struct { + TargetMetadata struct { + TargetSchema string `json:"TargetSchema,omitempty"` + SupportLobs bool `json:"SupportLobs,omitempty"` + FullLobMode bool `json:"FullLobMode,omitempty"` + LobChunkSize int `json:"LobChunkSize,omitempty"` + LimitedSizeLobMode bool `json:"LimitedSizeLobMode,omitempty"` + LobMaxSize int `json:"LobMaxSize,omitempty"` + InlineLobMaxSize int `json:"InlineLobMaxSize,omitempty"` + LoadMaxFileSize int `json:"LoadMaxFileSize,omitempty"` + ParallelLoadThreads int `json:"ParallelLoadThreads,omitempty"` + ParallelLoadBufferSize int `json:"ParallelLoadBufferSize,omitempty"` + ParallelLoadQueuesPerThread int `json:"ParallelLoadQueuesPerThread,omitempty"` + ParallelApplyThreads int `json:"ParallelApplyThreads,omitempty"` + ParallelApplyBufferSize int `json:"ParallelApplyBufferSize,omitempty"` + ParallelApplyQueuesPerThread int `json:"ParallelApplyQueuesPerThread,omitempty"` + BatchApplyEnabled bool `json:"BatchApplyEnabled,omitempty"` + TaskRecoveryTableEnabled bool `json:"TaskRecoveryTableEnabled,omitempty"` + } `json:"TargetMetadata,omitempty"` + FullLoadSettings struct { + TargetTablePrepMode string `json:"TargetTablePrepMode,omitempty"` + CreatePkAfterFullLoad bool `json:"CreatePkAfterFullLoad,omitempty"` + StopTaskCachedChangesApplied bool `json:"StopTaskCachedChangesApplied,omitempty"` + StopTaskCachedChangesNotApplied bool `json:"StopTaskCachedChangesNotApplied,omitempty"` + MaxFullLoadSubTasks int `json:"MaxFullLoadSubTasks,omitempty"` + TransactionConsistencyTimeout int `json:"TransactionConsistencyTimeout,omitempty"` + CommitRate int `json:"CommitRate,omitempty"` + } `json:"FullLoadSettings,omitempty"` + TTSettings struct { + EnableTT bool `json:"EnableTT,omitempty"` + TTS3Settings struct { + EncryptionMode string `json:"EncryptionMode,omitempty"` + ServerSideEncryptionKmsKeyID string `json:"ServerSideEncryptionKmsKeyId,omitempty"` + ServiceAccessRoleArn string `json:"ServiceAccessRoleArn,omitempty"` + BucketName string `json:"BucketName,omitempty"` + BucketFolder string `json:"BucketFolder,omitempty"` + EnableDeletingFromS3OnTaskDelete bool `json:"EnableDeletingFromS3OnTaskDelete,omitempty"` + } `json:"TTS3Settings,omitempty"` + TTRecordSettings struct { + EnableRawData bool `json:"EnableRawData,omitempty"` + OperationsToLog string `json:"OperationsToLog,omitempty"` + MaxRecordSize int `json:"MaxRecordSize,omitempty"` + } `json:"TTRecordSettings,omitempty"` + } `json:"TTSettings,omitempty"` + Logging struct { + EnableLogging bool `json:"EnableLogging,omitempty"` + } `json:"Logging,omitempty"` + ControlTablesSettings struct { + ControlSchema string `json:"ControlSchema,omitempty"` + HistoryTimeslotInMinutes int `json:"HistoryTimeslotInMinutes,omitempty"` + HistoryTableEnabled bool `json:"HistoryTableEnabled,omitempty"` + SuspendedTablesTableEnabled bool `json:"SuspendedTablesTableEnabled,omitempty"` + StatusTableEnabled bool `json:"StatusTableEnabled,omitempty"` + } `json:"ControlTablesSettings,omitempty"` + StreamBufferSettings struct { + StreamBufferCount int `json:"StreamBufferCount,omitempty"` + StreamBufferSizeInMB int `json:"StreamBufferSizeInMB,omitempty"` + } `json:"StreamBufferSettings,omitempty"` + ChangeProcessingTuning struct { + BatchApplyPreserveTransaction bool `json:"BatchApplyPreserveTransaction,omitempty"` + BatchApplyTimeoutMin int `json:"BatchApplyTimeoutMin,omitempty"` + BatchApplyTimeoutMax int `json:"BatchApplyTimeoutMax,omitempty"` + BatchApplyMemoryLimit int `json:"BatchApplyMemoryLimit,omitempty"` + BatchSplitSize int `json:"BatchSplitSize,omitempty"` + MinTransactionSize int `json:"MinTransactionSize,omitempty"` + CommitTimeout int `json:"CommitTimeout,omitempty"` + MemoryLimitTotal int `json:"MemoryLimitTotal,omitempty"` + MemoryKeepTime int `json:"MemoryKeepTime,omitempty"` + StatementCacheSize int `json:"StatementCacheSize,omitempty"` + } `json:"ChangeProcessingTuning,omitempty"` + ChangeProcessingDdlHandlingPolicy struct { + HandleSourceTableDropped bool `json:"HandleSourceTableDropped,omitempty"` + HandleSourceTableTruncated bool `json:"HandleSourceTableTruncated,omitempty"` + HandleSourceTableAltered bool `json:"HandleSourceTableAltered,omitempty"` + } `json:"ChangeProcessingDdlHandlingPolicy,omitempty"` + LoopbackPreventionSettings struct { + EnableLoopbackPrevention bool `json:"EnableLoopbackPrevention,omitempty"` + SourceSchema string `json:"SourceSchema,omitempty"` + TargetSchema string `json:"TargetSchema,omitempty"` + } `json:"LoopbackPreventionSettings,omitempty"` + CharacterSetSettings struct { + CharacterReplacements []struct { + SourceCharacterCodePoint int `json:"SourceCharacterCodePoint,omitempty"` + TargetCharacterCodePoint int `json:"TargetCharacterCodePoint,omitempty"` + } `json:"CharacterReplacements,omitempty"` + CharacterSetSupport struct { + CharacterSet string `json:"CharacterSet,omitempty"` + ReplaceWithCharacterCodePoint int `json:"ReplaceWithCharacterCodePoint,omitempty"` + } `json:"CharacterSetSupport,omitempty"` + } `json:"CharacterSetSettings,omitempty"` + BeforeImageSettings struct { + EnableBeforeImage bool `json:"EnableBeforeImage,omitempty"` + FieldName string `json:"FieldName,omitempty"` + ColumnFilter string `json:"ColumnFilter,omitempty"` + } `json:"BeforeImageSettings,omitempty"` + ErrorBehavior struct { + DataErrorPolicy string `json:"DataErrorPolicy,omitempty"` + DataTruncationErrorPolicy string `json:"DataTruncationErrorPolicy,omitempty"` + DataErrorEscalationPolicy string `json:"DataErrorEscalationPolicy,omitempty"` + DataErrorEscalationCount int `json:"DataErrorEscalationCount,omitempty"` + TableErrorPolicy string `json:"TableErrorPolicy,omitempty"` + TableErrorEscalationPolicy string `json:"TableErrorEscalationPolicy,omitempty"` + TableErrorEscalationCount int `json:"TableErrorEscalationCount,omitempty"` + RecoverableErrorCount int `json:"RecoverableErrorCount,omitempty"` + RecoverableErrorInterval int `json:"RecoverableErrorInterval,omitempty"` + RecoverableErrorThrottling bool `json:"RecoverableErrorThrottling,omitempty"` + RecoverableErrorThrottlingMax int `json:"RecoverableErrorThrottlingMax,omitempty"` + ApplyErrorDeletePolicy string `json:"ApplyErrorDeletePolicy,omitempty"` + ApplyErrorInsertPolicy string `json:"ApplyErrorInsertPolicy,omitempty"` + ApplyErrorUpdatePolicy string `json:"ApplyErrorUpdatePolicy,omitempty"` + ApplyErrorEscalationPolicy string `json:"ApplyErrorEscalationPolicy,omitempty"` + ApplyErrorEscalationCount int `json:"ApplyErrorEscalationCount,omitempty"` + FullLoadIgnoreConflicts bool `json:"FullLoadIgnoreConflicts,omitempty"` + } `json:"ErrorBehavior,omitempty"` + ValidationSettings struct { + EnableValidation bool `json:"EnableValidation,omitempty"` + ValidationMode string `json:"ValidationMode,omitempty"` + ThreadCount int `json:"ThreadCount,omitempty"` + PartitionSize int `json:"PartitionSize,omitempty"` + FailureMaxCount int `json:"FailureMaxCount,omitempty"` + RecordFailureDelayInMinutes int `json:"RecordFailureDelayInMinutes,omitempty"` + RecordSuspendDelayInMinutes int `json:"RecordSuspendDelayInMinutes,omitempty"` + MaxKeyColumnSize int `json:"MaxKeyColumnSize,omitempty"` + TableFailureMaxCount int `json:"TableFailureMaxCount,omitempty"` + ValidationOnly bool `json:"ValidationOnly,omitempty"` + HandleCollationDiff bool `json:"HandleCollationDiff,omitempty"` + RecordFailureDelayLimitInMinutes int `json:"RecordFailureDelayLimitInMinutes,omitempty"` + SkipLobColumns bool `json:"SkipLobColumns,omitempty"` + ValidationPartialLobSize int `json:"ValidationPartialLobSize,omitempty"` + ValidationQueryCdcDelaySeconds int `json:"ValidationQueryCdcDelaySeconds,omitempty"` + } `json:"ValidationSettings,omitempty"` +} + +func flattenSettings(apiObject string) string { + var taskSettings TaskSettings + + if err := json.Unmarshal([]byte(apiObject), &taskSettings); err != nil { + return apiObject + } + + if b, err := json.Marshal(&taskSettings); err != nil { + return apiObject + } else { + return string(b) + } +} From e455fcf278bfa0b3f9ae9b49886c264f3e9b287e Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Thu, 14 Dec 2023 14:36:56 -0500 Subject: [PATCH 21/56] 'RemoveReadOnlyFields' -> 'RemoveFields'. --- internal/json/remove.go | 8 ++++---- internal/json/remove_test.go | 4 ++-- internal/verify/json.go | 9 ++++----- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/internal/json/remove.go b/internal/json/remove.go index cd22e993b2af..43233c5db2dd 100644 --- a/internal/json/remove.go +++ b/internal/json/remove.go @@ -9,14 +9,14 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/json/ujson" ) -// RemoveReadOnlyFields removes read-only (can't be specified in configuration) fields from a valid JSON string. -func RemoveReadOnlyFields(in string, roFields ...string) string { +// RemoveFields removes the specified fields from a valid JSON string. +func RemoveFields(in string, fields ...string) string { out := make([]byte, 0, len(in)) err := ujson.Walk([]byte(in), func(_ int, key, value []byte) bool { if len(key) != 0 { - for _, roField := range roFields { - if bytes.Equal(key, []byte(roField)) { + for _, field := range fields { + if bytes.Equal(key, []byte(field)) { // Remove the key and value from the output. return false } diff --git a/internal/json/remove_test.go b/internal/json/remove_test.go index 8c5bc527251f..541ee288a56c 100644 --- a/internal/json/remove_test.go +++ b/internal/json/remove_test.go @@ -7,7 +7,7 @@ import ( "testing" ) -func TestRemoveReadOnlyFields(t *testing.T) { +func TestRemoveFields(t *testing.T) { t.Parallel() testCases := []struct { @@ -37,7 +37,7 @@ func TestRemoveReadOnlyFields(t *testing.T) { t.Run(testCase.testName, func(t *testing.T) { t.Parallel() - if got, want := RemoveReadOnlyFields(testCase.input, `"plugins"`), testCase.want; got != want { + if got, want := RemoveFields(testCase.input, `"plugins"`), testCase.want; got != want { t.Errorf("RemoveReadOnlyFields(%q) = %q, want %q", testCase.input, got, want) } }) diff --git a/internal/verify/json.go b/internal/verify/json.go index 1439938560f9..4d1a43d6ce61 100644 --- a/internal/verify/json.go +++ b/internal/verify/json.go @@ -210,16 +210,15 @@ func LegacyPolicyToSet(exist, new string) (string, error) { return policyToSet, nil } -// SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs returns a difference suppression function that compares -// two JSON strings and returns `true` if they are equivalent once read-only fields have been removed. -// Read-only fields are those that can't be specified in configuration (returned only from AWS API). -func SuppressEquivalentJSONRemovingReadOnlyFieldsDiffs(roFields ...string) schema.SchemaDiffSuppressFunc { +// SuppressEquivalentJSONRemovingFieldsDiffs returns a difference suppression function that compares +// two JSON strings and returns `true` if they are equivalent once the specified fields have been removed. +func SuppressEquivalentJSONRemovingFieldsDiffs(fields ...string) schema.SchemaDiffSuppressFunc { return func(k, old, new string, d *schema.ResourceData) bool { if !json.Valid([]byte(old)) || !json.Valid([]byte(new)) { return old == new } - old, new = tfjson.RemoveReadOnlyFields(old, roFields...), tfjson.RemoveReadOnlyFields(new, roFields...) + old, new = tfjson.RemoveFields(old, fields...), tfjson.RemoveFields(new, fields...) return JSONStringsEqual(old, new) } From 5c371181bb857e9fd8b1a656128491297031e3b6 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 15:48:54 -0500 Subject: [PATCH 22/56] Move 'internal/experimental/depgraph/stack' -> 'internal/types/stack'. --- .../experimental/depgraph/dependency_graph.go | 15 ++--- internal/experimental/depgraph/stack.go | 56 ------------------ internal/types/stack/stack.go | 58 +++++++++++++++++++ .../depgraph => types/stack}/stack_test.go | 32 +++++----- 4 files changed, 82 insertions(+), 79 deletions(-) delete mode 100644 internal/experimental/depgraph/stack.go create mode 100644 internal/types/stack/stack.go rename internal/{experimental/depgraph => types/stack}/stack_test.go (56%) diff --git a/internal/experimental/depgraph/dependency_graph.go b/internal/experimental/depgraph/dependency_graph.go index b4a5bfd291bd..e599f1220599 100644 --- a/internal/experimental/depgraph/dependency_graph.go +++ b/internal/experimental/depgraph/dependency_graph.go @@ -8,6 +8,7 @@ import ( "strings" tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" + "github.com/hashicorp/terraform-provider-aws/internal/types/stack" "golang.org/x/exp/slices" ) @@ -204,20 +205,20 @@ func depthFirstSearch(edges map[string][]string) func(s string) ([]string, error inCurrentPath := make(map[string]struct{}) currentPath := make([]string, 0) - todo := newStack() + todo := stack.New[*todoValue]() - todo.push(&todoValue{ + todo.Push(&todoValue{ node: s, }) - for todo.len() > 0 { - current := todo.peek().(*todoValue) + for todo.Len() > 0 { + current := todo.Peek() node := current.node if !current.processed { // Visit edges. if slices.Contains(visited, node) { - todo.pop() + todo.Pop() continue } @@ -232,7 +233,7 @@ func depthFirstSearch(edges map[string][]string) func(s string) ([]string, error nodeEdges := edges[node] for i := len(nodeEdges) - 1; i >= 0; i-- { - todo.push(&todoValue{ + todo.Push(&todoValue{ node: nodeEdges[i], }) } @@ -241,7 +242,7 @@ func depthFirstSearch(edges map[string][]string) func(s string) ([]string, error } else { // Edges have been visited. // Unroll the stack. - todo.pop() + todo.Pop() if n := len(currentPath); n > 0 { currentPath = currentPath[:n-1] } diff --git a/internal/experimental/depgraph/stack.go b/internal/experimental/depgraph/stack.go deleted file mode 100644 index 050955424603..000000000000 --- a/internal/experimental/depgraph/stack.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 - -package depgraph - -type stack struct { - top *stackNode - length int -} - -type stackNode struct { - value interface{} - prev *stackNode -} - -// newStack returns a new, empty stack. -func newStack() *stack { - return &stack{} -} - -// len returns the stack's depth. -func (s *stack) len() int { - return s.length -} - -// peek returns the top item on the stack. -func (s *stack) peek() interface{} { - if s.length == 0 { - return nil - } - - return s.top.value -} - -// pop returns the top item on the stack and removes it from the stack. -func (s *stack) pop() interface{} { - if s.length == 0 { - return nil - } - - top := s.top - s.top = top.prev - s.length-- - - return top.value -} - -// push puts the specified item on the top of the stack. -func (s *stack) push(value interface{}) { - node := &stackNode{ - value: value, - prev: s.top, - } - s.top = node - s.length++ -} diff --git a/internal/types/stack/stack.go b/internal/types/stack/stack.go new file mode 100644 index 000000000000..72f1fdbb2e51 --- /dev/null +++ b/internal/types/stack/stack.go @@ -0,0 +1,58 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package stack + +type stack[T any] struct { + top *stackNode[T] + length int +} + +type stackNode[T any] struct { + value T + prev *stackNode[T] +} + +// New returns a new, empty stack. +func New[T any]() *stack[T] { + return &stack[T]{} +} + +// Len returns the stack's depth. +func (s *stack[T]) Len() int { + return s.length +} + +// Peek returns the top item on the stack. +func (s *stack[T]) Peek() T { + if s.length == 0 { + var zero T + return zero + } + + return s.top.value +} + +// Pop returns the top item on the stack and removes it from the stack. +func (s *stack[T]) Pop() T { + if s.length == 0 { + var zero T + return zero + } + + top := s.top + s.top = top.prev + s.length-- + + return top.value +} + +// Push puts the specified item on the top of the stack. +func (s *stack[T]) Push(value T) { + node := &stackNode[T]{ + value: value, + prev: s.top, + } + s.top = node + s.length++ +} diff --git a/internal/experimental/depgraph/stack_test.go b/internal/types/stack/stack_test.go similarity index 56% rename from internal/experimental/depgraph/stack_test.go rename to internal/types/stack/stack_test.go index 7bf653e9db4a..fd8c70309ad8 100644 --- a/internal/experimental/depgraph/stack_test.go +++ b/internal/types/stack/stack_test.go @@ -1,7 +1,7 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 -package depgraph +package stack import ( "testing" @@ -10,54 +10,54 @@ import ( func TestStack(t *testing.T) { t.Parallel() - s := newStack() + s := New[int]() - if got, expected := s.len(), 0; got != expected { + if got, expected := s.Len(), 0; got != expected { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.peek(), interface{}(nil); got != expected { + if got, expected := s.Peek(), interface{}(nil); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.pop(), interface{}(nil); got != expected { + if got, expected := s.Pop(), interface{}(nil); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - s.push(1) + s.Push(1) - if got, expected := s.len(), 1; got != expected { + if got, expected := s.Len(), 1; got != expected { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.peek(), interface{}(1); got != expected { + if got, expected := s.Peek(), interface{}(1); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.pop(), interface{}(1); got != expected { + if got, expected := s.Pop(), interface{}(1); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.len(), 0; got != expected { + if got, expected := s.Len(), 0; got != expected { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - s.push(2) - s.push(3) + s.Push(2) + s.Push(3) - if got, expected := s.len(), 2; got != expected { + if got, expected := s.Len(), 2; got != expected { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.peek(), interface{}(3); got != expected { + if got, expected := s.Peek(), interface{}(3); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.pop(), interface{}(3); got != expected { + if got, expected := s.Pop(), interface{}(3); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.peek(), interface{}(2); got != expected { + if got, expected := s.Peek(), interface{}(2); got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } } From 106f2c19ed847f132633187a736b781b44fc2dea Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 15:49:28 -0500 Subject: [PATCH 23/56] Add 'json.RemoveEmptyFields'. --- internal/json/remove.go | 72 ++++++++++++++++++++++++++++++ internal/json/remove_test.go | 85 ++++++++++++++++++++++++++++++++++++ 2 files changed, 157 insertions(+) diff --git a/internal/json/remove.go b/internal/json/remove.go index 43233c5db2dd..1191adf2e070 100644 --- a/internal/json/remove.go +++ b/internal/json/remove.go @@ -42,3 +42,75 @@ func RemoveFields(in string, fields ...string) string { return string(out) } + +// RemoveEmptyFields removes all empty fields from a valid JSON string. +func RemoveEmptyFields(in string) string { + n := 0 + for { + in, n = removeEmptyFields(in) + if n == 0 { + break + } + } + + return in +} + +// removeEmptyFields removes `null`, empty array (`[]`) and empty object (`{}`) fields from a valid JSON string. +// Returns the new JSON string and the number of empty fields removed. +func removeEmptyFields(in string) (string, int) { + out := make([]byte, 0, len(in)) + lenBefore := 0 + removed := 0 + + err := ujson.Walk([]byte(in), func(_ int, key, value []byte) bool { + n := len(out) + + // For valid JSON, value will never be empty. + skip := false + switch value[0] { + case 'n': // Null (null) + skip = true + case '[': // Start of array + lenBefore = n + case ']': // End of array + if out[n-1] == '[' { + // Truncate output. + out = out[:lenBefore] + lenBefore = 0 + skip = true + } + case '{': // Start of object + lenBefore = n + case '}': // End of object + if n > 1 && out[n-1] == '{' { + // Truncate output. + out = out[:lenBefore] + lenBefore = 0 + skip = true + } + } + + if skip { + removed++ + return false + } + + if n != 0 && ujson.ShouldAddComma(value, out[n-1]) { + out = append(out, ',') + } + if len(key) > 0 { + out = append(out, key...) + out = append(out, ':') + } + out = append(out, value...) + + return true + }) + + if err != nil { + return "", 0 + } + + return string(out), removed +} diff --git a/internal/json/remove_test.go b/internal/json/remove_test.go index 541ee288a56c..629054ed1444 100644 --- a/internal/json/remove_test.go +++ b/internal/json/remove_test.go @@ -43,3 +43,88 @@ func TestRemoveFields(t *testing.T) { }) } } + +func TestRemoveEmptyFields(t *testing.T) { + t.Parallel() + + testCases := []struct { + testName string + input string + want string + }{ + // { + // testName: "empty JSON", + // input: "{}", + // want: "{}", + // }, + // { + // testName: "single non-empty simple field", + // input: `{"key": 42}`, + // want: `{"key":42}`, + // }, + // { + // testName: "single non-empty array field", + // input: `{"key": [1, true, "answer"]}`, + // want: `{"key":[1,true,"answer"]}`, + // }, + // { + // testName: "single non-empty object field", + // input: `{"key": {"inner": true}}`, + // want: `{"key":{"inner":true}}`, + // }, + // { + // testName: "single null field", + // input: `{"key": null}`, + // want: `{}`, + // }, + // { + // testName: "single empty array field", + // input: `{"key": []}`, + // want: `{}`, + // }, + // { + // testName: "single empty object field", + // input: `{"key": {}}`, + // want: `{}`, + // }, + // { + // testName: "empty fields deeply nested 1 pass", + // input: `{"key": {"a": [1, 2], "b": [], "c": {"d": true, "e": null}}}`, + // want: `{"key":{"a":[1,2],"c":{"d":true}}}`, + // }, + // { + // testName: "empty fields deeply nested 2 passes", + // input: `{"key": {"a": [1, 2], "b": {}, "c": {"d": null}}}`, + // want: `{"key":{"a":[1,2]}}`, + // }, + { + testName: "empty fields deeply nested 2 passes many empty objects", + // input: `{"key": {"a": [1, 2], "b": {}, "c": {"d": {}}, "e": {}, "f": 99}}`, + input: `{"key": {"a": [1, 2], "c": {"d": {}}, "f": 99}}`, + want: `{"key":{"a":[1,2],"f":99}}`, + }, + { + testName: "empty fields nested empty arrays", + input: `{"key": {"a": [1, [2], [], [[]], 3]}}`, + want: `{"key":{"a":[1,[2],3]}}`, + }, + // { + // testName: "real life example", + // input: `{"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"TTSettings":{"TTS3Settings":{},"TTRecordSettings":{}},"Logging":{},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"LoopbackPreventionSettings":{},"CharacterSetSettings":{"CharacterSetSupport":{}},"BeforeImageSettings":{},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}}`, + // want: `{"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}}`, + // }, + } + + for _, testCase := range testCases { + testCase := testCase + t.Run(testCase.testName, func(t *testing.T) { + t.Parallel() + + if got, want := RemoveEmptyFields(testCase.input), testCase.want; got != want { + t.Errorf("RemoveEmptyFields(%q) = %q, want %q", testCase.input, got, want) + } + }) + } +} + +// {"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"TTSettings":{"TTS3Settings":{},"TTRecordSettings":{}},"Logging":{},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"LoopbackPreventionSettings":{},"CharacterSetSettings":{"CharacterSetSupport":{}},"BeforeImageSettings":{},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}} From 825407b6fec4a5bfa3cf29d55895ea9f9107c716 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 15:50:51 -0500 Subject: [PATCH 24/56] 'flattenSettings' -> 'flattenTaskSettings'. --- internal/service/dms/replication_config.go | 4 +++- internal/service/dms/task_settings_json.go | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index 73cc81bf6973..6d5862550df2 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -233,7 +233,9 @@ func resourceReplicationConfigRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "setting compute_config: %s", err) } d.Set("replication_config_identifier", replicationConfig.ReplicationConfigIdentifier) - d.Set("replication_settings", flattenSettings(aws.StringValue(replicationConfig.ReplicationSettings))) + v := flattenTaskSettings(aws.StringValue(replicationConfig.ReplicationSettings)) + log.Printf("[INFO] replication_settings=%v", v) + d.Set("replication_settings", v) d.Set("replication_type", replicationConfig.ReplicationType) d.Set("source_endpoint_arn", replicationConfig.SourceEndpointArn) d.Set("supplemental_settings", replicationConfig.SupplementalSettings) diff --git a/internal/service/dms/task_settings_json.go b/internal/service/dms/task_settings_json.go index e67f14943cb1..672759213541 100644 --- a/internal/service/dms/task_settings_json.go +++ b/internal/service/dms/task_settings_json.go @@ -10,7 +10,7 @@ import ( // https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.html#CHAP_Tasks.CustomizingTasks.TaskSettings.Example // https://mholt.github.io/json-to-go/ -type TaskSettings struct { +type taskSettings struct { TargetMetadata struct { TargetSchema string `json:"TargetSchema,omitempty"` SupportLobs bool `json:"SupportLobs,omitempty"` @@ -143,8 +143,8 @@ type TaskSettings struct { } `json:"ValidationSettings,omitempty"` } -func flattenSettings(apiObject string) string { - var taskSettings TaskSettings +func flattenTaskSettings(apiObject string) string { + var taskSettings taskSettings if err := json.Unmarshal([]byte(apiObject), &taskSettings); err != nil { return apiObject From 4f8ddd6b51a100e90b48d5ee21819a6bb77229ab Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 15:52:12 -0500 Subject: [PATCH 25/56] Fix 'TestStack'. --- internal/types/stack/stack_test.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/internal/types/stack/stack_test.go b/internal/types/stack/stack_test.go index fd8c70309ad8..6a912e02a63a 100644 --- a/internal/types/stack/stack_test.go +++ b/internal/types/stack/stack_test.go @@ -16,11 +16,11 @@ func TestStack(t *testing.T) { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.Peek(), interface{}(nil); got != expected { + if got, expected := s.Peek(), 0; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Pop(), interface{}(nil); got != expected { + if got, expected := s.Pop(), 0; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } @@ -30,11 +30,11 @@ func TestStack(t *testing.T) { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.Peek(), interface{}(1); got != expected { + if got, expected := s.Peek(), 1; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Pop(), interface{}(1); got != expected { + if got, expected := s.Pop(), 1; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } @@ -49,15 +49,15 @@ func TestStack(t *testing.T) { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.Peek(), interface{}(3); got != expected { + if got, expected := s.Peek(), 3; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Pop(), interface{}(3); got != expected { + if got, expected := s.Pop(), 3; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Peek(), interface{}(2); got != expected { + if got, expected := s.Peek(), 2; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } } From 370ec894aa82bb4fbeb88ba57cf463eaf9b1856b Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 16:20:57 -0500 Subject: [PATCH 26/56] Move 'internal/option' -> 'internal/types/option'. --- internal/tags/context.go | 10 +++++----- internal/types/{ => option}/option.go | 2 +- internal/types/{ => option}/option_test.go | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) rename internal/types/{ => option}/option.go (98%) rename internal/types/{ => option}/option_test.go (99%) diff --git a/internal/tags/context.go b/internal/tags/context.go index 71663164895c..33f0aebd606d 100644 --- a/internal/tags/context.go +++ b/internal/tags/context.go @@ -6,7 +6,7 @@ package tags import ( "context" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // InContext represents the tagging information kept in Context. @@ -14,9 +14,9 @@ type InContext struct { DefaultConfig *DefaultConfig IgnoreConfig *IgnoreConfig // TagsIn holds tags specified in configuration. Typically this field includes any default tags and excludes system tags. - TagsIn types.Option[KeyValueTags] + TagsIn option.Option[KeyValueTags] // TagsOut holds tags returned from AWS, including any ignored or system tags. - TagsOut types.Option[KeyValueTags] + TagsOut option.Option[KeyValueTags] } // NewContext returns a Context enhanced with tagging information. @@ -24,8 +24,8 @@ func NewContext(ctx context.Context, defaultConfig *DefaultConfig, ignoreConfig v := InContext{ DefaultConfig: defaultConfig, IgnoreConfig: ignoreConfig, - TagsIn: types.None[KeyValueTags](), - TagsOut: types.None[KeyValueTags](), + TagsIn: option.None[KeyValueTags](), + TagsOut: option.None[KeyValueTags](), } return context.WithValue(ctx, tagKey, &v) diff --git a/internal/types/option.go b/internal/types/option/option.go similarity index 98% rename from internal/types/option.go rename to internal/types/option/option.go index 77d07ec500ff..78ecc4a371a7 100644 --- a/internal/types/option.go +++ b/internal/types/option/option.go @@ -1,7 +1,7 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 -package types +package option type Option[T any] []T diff --git a/internal/types/option_test.go b/internal/types/option/option_test.go similarity index 99% rename from internal/types/option_test.go rename to internal/types/option/option_test.go index 7b4abb51280c..c868b6377361 100644 --- a/internal/types/option_test.go +++ b/internal/types/option/option_test.go @@ -1,7 +1,7 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 -package types +package option import ( "testing" From d1e9a80c0138ace88a1e7907720cfd1ce268e8ce Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 16:28:36 -0500 Subject: [PATCH 27/56] generate/tags: 'internal/option' -> 'internal/types/option'. --- internal/generate/tags/main.go | 48 +++++++++---------- .../tags/templates/v1/header_body.tmpl | 4 +- .../tags/templates/v1/list_tags_body.tmpl | 2 +- .../templates/v1/service_tags_map_body.tmpl | 2 +- .../templates/v1/service_tags_slice_body.tmpl | 4 +- .../tags/templates/v2/header_body.tmpl | 4 +- .../tags/templates/v2/list_tags_body.tmpl | 2 +- .../templates/v2/service_tags_map_body.tmpl | 2 +- .../templates/v2/service_tags_slice_body.tmpl | 4 +- .../v2/service_tags_value_map_body.tmpl | 2 +- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/internal/generate/tags/main.go b/internal/generate/tags/main.go index 108c1bbeb157..f36d2383c356 100644 --- a/internal/generate/tags/main.go +++ b/internal/generate/tags/main.go @@ -206,18 +206,18 @@ type TemplateData struct { // The following are specific to writing import paths in the `headerBody`; // to include the package, set the corresponding field's value to true - ConnsPkg bool - FmtPkg bool - HelperSchemaPkg bool - InternalTypesPkg bool - LoggingPkg bool - NamesPkg bool - SkipAWSImp bool - SkipServiceImp bool - SkipTypesImp bool - TfLogPkg bool - TfResourcePkg bool - TimePkg bool + ConnsPkg bool + FmtPkg bool + HelperSchemaPkg bool + InternalOptionPkg bool + LoggingPkg bool + NamesPkg bool + SkipAWSImp bool + SkipServiceImp bool + SkipTypesImp bool + TfLogPkg bool + TfResourcePkg bool + TimePkg bool IsDefaultListTags bool IsDefaultUpdateTags bool @@ -298,18 +298,18 @@ func main() { ProviderNameUpper: providerNameUpper, ServicePackage: servicePackage, - ConnsPkg: (*listTags && *listTagsFunc == defaultListTagsFunc) || (*updateTags && *updateTagsFunc == defaultUpdateTagsFunc), - FmtPkg: *updateTags, - HelperSchemaPkg: awsPkg == "autoscaling", - InternalTypesPkg: (*listTags && *listTagsFunc == defaultListTagsFunc) || *serviceTagsMap || *serviceTagsSlice, - LoggingPkg: *updateTags, - NamesPkg: *updateTags && !*skipNamesImp, - SkipAWSImp: *skipAWSImp, - SkipServiceImp: *skipServiceImp, - SkipTypesImp: *skipTypesImp, - TfLogPkg: *updateTags, - TfResourcePkg: (*getTag || *waitForPropagation), - TimePkg: *waitForPropagation, + ConnsPkg: (*listTags && *listTagsFunc == defaultListTagsFunc) || (*updateTags && *updateTagsFunc == defaultUpdateTagsFunc), + FmtPkg: *updateTags, + HelperSchemaPkg: awsPkg == "autoscaling", + InternalOptionPkg: (*listTags && *listTagsFunc == defaultListTagsFunc) || *serviceTagsMap || *serviceTagsSlice, + LoggingPkg: *updateTags, + NamesPkg: *updateTags && !*skipNamesImp, + SkipAWSImp: *skipAWSImp, + SkipServiceImp: *skipServiceImp, + SkipTypesImp: *skipTypesImp, + TfLogPkg: *updateTags, + TfResourcePkg: (*getTag || *waitForPropagation), + TimePkg: *waitForPropagation, CreateTagsFunc: createTagsFunc, GetTagFunc: *getTagFunc, diff --git a/internal/generate/tags/templates/v1/header_body.tmpl b/internal/generate/tags/templates/v1/header_body.tmpl index 6043ab408ce3..72cc432cadf7 100644 --- a/internal/generate/tags/templates/v1/header_body.tmpl +++ b/internal/generate/tags/templates/v1/header_body.tmpl @@ -44,8 +44,8 @@ import ( {{- if .TfResourcePkg }} "github.com/hashicorp/terraform-provider-aws/internal/tfresource" {{- end }} - {{- if .InternalTypesPkg }} - "github.com/hashicorp/terraform-provider-aws/internal/types" + {{- if .InternalOptionPkg }} + "github.com/hashicorp/terraform-provider-aws/internal/types/option" {{- end }} {{- if .NamesPkg }} "github.com/hashicorp/terraform-provider-aws/names" diff --git a/internal/generate/tags/templates/v1/list_tags_body.tmpl b/internal/generate/tags/templates/v1/list_tags_body.tmpl index 33aa392f4e8d..6f4aea7f0e90 100644 --- a/internal/generate/tags/templates/v1/list_tags_body.tmpl +++ b/internal/generate/tags/templates/v1/list_tags_body.tmpl @@ -80,7 +80,7 @@ func (p *servicePackage) {{ .ListTagsFunc | Title }}(ctx context.Context, meta a } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil diff --git a/internal/generate/tags/templates/v1/service_tags_map_body.tmpl b/internal/generate/tags/templates/v1/service_tags_map_body.tmpl index 8f72a4d3f090..c640fb00507b 100644 --- a/internal/generate/tags/templates/v1/service_tags_map_body.tmpl +++ b/internal/generate/tags/templates/v1/service_tags_map_body.tmpl @@ -25,7 +25,7 @@ func {{ .GetTagsInFunc }}(ctx context.Context) map[string]*string { // {{ .SetTagsOutFunc }} sets {{ .ServicePackage }} service tags in Context. func {{ .SetTagsOutFunc }}(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags)) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags)) } } diff --git a/internal/generate/tags/templates/v1/service_tags_slice_body.tmpl b/internal/generate/tags/templates/v1/service_tags_slice_body.tmpl index 4f46528a0f33..9233c530eb74 100644 --- a/internal/generate/tags/templates/v1/service_tags_slice_body.tmpl +++ b/internal/generate/tags/templates/v1/service_tags_slice_body.tmpl @@ -241,13 +241,13 @@ func {{ .GetTagsInFunc }}(ctx context.Context) []*{{ .TagPackage }}.{{ .TagType {{- if or ( .TagType2 ) ( .TagTypeAddBoolElem ) }} func {{ .SetTagsOutFunc }}(ctx context.Context, tags any{{ if .TagTypeIDElem }}, identifier{{ if .TagResTypeElem }}, resourceType{{ end }} string{{ end }}) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags{{ if .TagTypeIDElem }}, identifier{{ if .TagResTypeElem }}, resourceType{{ end }}{{ end }})) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags{{ if .TagTypeIDElem }}, identifier{{ if .TagResTypeElem }}, resourceType{{ end }}{{ end }})) } } {{- else }} func {{ .SetTagsOutFunc }}(ctx context.Context, tags []*{{ .TagPackage }}.{{ .TagType }}) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags)) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags)) } } {{- end }} diff --git a/internal/generate/tags/templates/v2/header_body.tmpl b/internal/generate/tags/templates/v2/header_body.tmpl index da201d8a767f..fadead2fce5f 100644 --- a/internal/generate/tags/templates/v2/header_body.tmpl +++ b/internal/generate/tags/templates/v2/header_body.tmpl @@ -41,8 +41,8 @@ import ( {{- if .TfResourcePkg }} "github.com/hashicorp/terraform-provider-aws/internal/tfresource" {{- end }} - {{- if .InternalTypesPkg }} - "github.com/hashicorp/terraform-provider-aws/internal/types" + {{- if .InternalOptionPkg }} + "github.com/hashicorp/terraform-provider-aws/internal/types/option" {{- end }} {{- if .NamesPkg }} "github.com/hashicorp/terraform-provider-aws/names" diff --git a/internal/generate/tags/templates/v2/list_tags_body.tmpl b/internal/generate/tags/templates/v2/list_tags_body.tmpl index ef8f6f54128f..cc690346f2d1 100644 --- a/internal/generate/tags/templates/v2/list_tags_body.tmpl +++ b/internal/generate/tags/templates/v2/list_tags_body.tmpl @@ -58,7 +58,7 @@ func (p *servicePackage) {{ .ListTagsFunc | Title }}(ctx context.Context, meta a } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil diff --git a/internal/generate/tags/templates/v2/service_tags_map_body.tmpl b/internal/generate/tags/templates/v2/service_tags_map_body.tmpl index 8f72a4d3f090..c640fb00507b 100644 --- a/internal/generate/tags/templates/v2/service_tags_map_body.tmpl +++ b/internal/generate/tags/templates/v2/service_tags_map_body.tmpl @@ -25,7 +25,7 @@ func {{ .GetTagsInFunc }}(ctx context.Context) map[string]*string { // {{ .SetTagsOutFunc }} sets {{ .ServicePackage }} service tags in Context. func {{ .SetTagsOutFunc }}(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags)) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags)) } } diff --git a/internal/generate/tags/templates/v2/service_tags_slice_body.tmpl b/internal/generate/tags/templates/v2/service_tags_slice_body.tmpl index c5aa8ebd415c..d18ecd6d42b0 100644 --- a/internal/generate/tags/templates/v2/service_tags_slice_body.tmpl +++ b/internal/generate/tags/templates/v2/service_tags_slice_body.tmpl @@ -241,13 +241,13 @@ func {{ .GetTagsInFunc }}(ctx context.Context) []awstypes.{{ .TagType }} { {{- if or ( .TagType2 ) ( .TagTypeAddBoolElem ) }} func {{ .SetTagsOutFunc }}(ctx context.Context, tags any{{ if .TagTypeIDElem }}, identifier{{ if .TagResTypeElem }}, resourceType{{ end }} string{{ end }}) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags{{ if .TagTypeIDElem }}, identifier{{ if .TagResTypeElem }}, resourceType{{ end }}{{ end }})) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags{{ if .TagTypeIDElem }}, identifier{{ if .TagResTypeElem }}, resourceType{{ end }}{{ end }})) } } {{- else }} func {{ .SetTagsOutFunc }}(ctx context.Context, tags []awstypes.{{ .TagType }}) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags)) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags)) } } {{- end }} diff --git a/internal/generate/tags/templates/v2/service_tags_value_map_body.tmpl b/internal/generate/tags/templates/v2/service_tags_value_map_body.tmpl index b39188619708..289196b29e99 100644 --- a/internal/generate/tags/templates/v2/service_tags_value_map_body.tmpl +++ b/internal/generate/tags/templates/v2/service_tags_value_map_body.tmpl @@ -25,7 +25,7 @@ func {{ .GetTagsInFunc }}(ctx context.Context) map[string]string { // {{ .SetTagsOutFunc }} sets {{ .ServicePackage }} service tags in Context. func {{ .SetTagsOutFunc }}(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some({{ .KeyValueTagsFunc }}(ctx, tags)) + inContext.TagsOut = option.Some({{ .KeyValueTagsFunc }}(ctx, tags)) } } From bb6806cc5913f2ec68e4f82674aae87d4efe499d Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 16:40:43 -0500 Subject: [PATCH 28/56] Run 'make gen'. --- internal/service/accessanalyzer/tags_gen.go | 6 +++--- internal/service/acm/tags_gen.go | 6 +++--- internal/service/acmpca/tags_gen.go | 6 +++--- internal/service/amp/tags_gen.go | 6 +++--- internal/service/amplify/tags_gen.go | 6 +++--- internal/service/apigateway/tags_gen.go | 4 ++-- internal/service/apigatewayv2/tags_gen.go | 6 +++--- internal/service/appautoscaling/tags_gen.go | 6 +++--- internal/service/appconfig/tags_gen.go | 6 +++--- internal/service/appflow/tags_gen.go | 6 +++--- internal/service/appintegrations/tags_gen.go | 4 ++-- internal/service/applicationinsights/tags_gen.go | 6 +++--- internal/service/appmesh/tags_gen.go | 6 +++--- internal/service/apprunner/tags_gen.go | 6 +++--- internal/service/appstream/tags_gen.go | 6 +++--- internal/service/appsync/tags_gen.go | 6 +++--- internal/service/athena/tags_gen.go | 6 +++--- internal/service/auditmanager/tags_gen.go | 6 +++--- internal/service/autoscaling/tags_gen.go | 6 +++--- internal/service/backup/tags_gen.go | 6 +++--- internal/service/batch/tags_gen.go | 6 +++--- internal/service/ce/tags_gen.go | 6 +++--- internal/service/chime/tags_gen.go | 6 +++--- internal/service/chimesdkmediapipelines/tags_gen.go | 6 +++--- internal/service/chimesdkvoice/tags_gen.go | 6 +++--- internal/service/cleanrooms/tags_gen.go | 6 +++--- internal/service/cloud9/tags_gen.go | 6 +++--- internal/service/cloudformation/tags_gen.go | 4 ++-- internal/service/cloudfront/tags_gen.go | 6 +++--- internal/service/cloudhsmv2/tags_gen.go | 6 +++--- internal/service/cloudtrail/tags_gen.go | 6 +++--- internal/service/cloudwatch/tags_gen.go | 6 +++--- internal/service/codeartifact/tags_gen.go | 6 +++--- internal/service/codebuild/tags_gen.go | 4 ++-- internal/service/codecommit/tags_gen.go | 6 +++--- internal/service/codeguruprofiler/tags_gen.go | 6 +++--- internal/service/codegurureviewer/tags_gen.go | 6 +++--- internal/service/codepipeline/tags_gen.go | 6 +++--- internal/service/codestarconnections/tags_gen.go | 6 +++--- internal/service/codestarnotifications/tags_gen.go | 6 +++--- internal/service/cognitoidentity/tags_gen.go | 6 +++--- internal/service/cognitoidp/tags_gen.go | 6 +++--- internal/service/comprehend/tags_gen.go | 6 +++--- internal/service/configservice/tags_gen.go | 6 +++--- internal/service/connect/tags_gen.go | 4 ++-- internal/service/customerprofiles/tags_gen.go | 6 +++--- internal/service/dataexchange/tags_gen.go | 6 +++--- internal/service/datapipeline/tags_gen.go | 4 ++-- internal/service/datasync/tags_gen.go | 6 +++--- internal/service/dax/tags_gen.go | 6 +++--- internal/service/deploy/tags_gen.go | 6 +++--- internal/service/detective/tags_gen.go | 6 +++--- internal/service/devicefarm/tags_gen.go | 6 +++--- internal/service/directconnect/tags_gen.go | 6 +++--- internal/service/dlm/tags_gen.go | 6 +++--- internal/service/dms/tags_gen.go | 6 +++--- internal/service/docdb/tags_gen.go | 6 +++--- internal/service/docdbelastic/tags_gen.go | 6 +++--- internal/service/ds/tags_gen.go | 6 +++--- internal/service/dynamodb/tags_gen.go | 6 +++--- internal/service/ec2/tags_gen.go | 6 +++--- internal/service/ec2/tagsv2_gen.go | 4 ++-- internal/service/ecr/tags_gen.go | 6 +++--- internal/service/ecrpublic/tags_gen.go | 6 +++--- internal/service/ecs/tags_gen.go | 6 +++--- internal/service/efs/tags_gen.go | 6 +++--- internal/service/eks/tags_gen.go | 6 +++--- internal/service/elasticache/tags_gen.go | 6 +++--- internal/service/elasticbeanstalk/tags_gen.go | 6 +++--- internal/service/elasticsearch/tags_gen.go | 6 +++--- internal/service/elb/tags_gen.go | 6 +++--- internal/service/elbv2/tags_gen.go | 6 +++--- internal/service/emr/tags_gen.go | 4 ++-- internal/service/emrcontainers/tags_gen.go | 6 +++--- internal/service/emrserverless/tags_gen.go | 6 +++--- internal/service/events/tags_gen.go | 6 +++--- internal/service/evidently/tags_gen.go | 4 ++-- internal/service/finspace/tags_gen.go | 6 +++--- internal/service/firehose/tags_gen.go | 6 +++--- internal/service/fis/tags_gen.go | 6 +++--- internal/service/fms/tags_gen.go | 6 +++--- internal/service/fsx/tags_gen.go | 6 +++--- internal/service/gamelift/tags_gen.go | 6 +++--- internal/service/glacier/tags_gen.go | 6 +++--- internal/service/globalaccelerator/tags_gen.go | 6 +++--- internal/service/glue/tags_gen.go | 6 +++--- internal/service/grafana/tags_gen.go | 6 +++--- internal/service/greengrass/tags_gen.go | 6 +++--- internal/service/guardduty/tags_gen.go | 6 +++--- internal/service/healthlake/tags_gen.go | 6 +++--- internal/service/iam/tags_gen.go | 4 ++-- internal/service/imagebuilder/tags_gen.go | 6 +++--- internal/service/inspector/tags_gen.go | 6 +++--- internal/service/internetmonitor/tags_gen.go | 6 +++--- internal/service/iot/tags_gen.go | 6 +++--- internal/service/iotanalytics/tags_gen.go | 6 +++--- internal/service/iotevents/tags_gen.go | 6 +++--- internal/service/ivs/tags_gen.go | 6 +++--- internal/service/ivschat/tags_gen.go | 6 +++--- internal/service/kafka/tags_gen.go | 4 ++-- internal/service/kafka/tagsv2_gen.go | 4 ++-- internal/service/kendra/tags_gen.go | 6 +++--- internal/service/keyspaces/tags_gen.go | 6 +++--- internal/service/kinesis/tags_gen.go | 6 +++--- internal/service/kinesisanalytics/tags_gen.go | 6 +++--- internal/service/kinesisanalyticsv2/tags_gen.go | 6 +++--- internal/service/kinesisvideo/tags_gen.go | 6 +++--- internal/service/kms/tags_gen.go | 6 +++--- internal/service/lambda/tags_gen.go | 6 +++--- internal/service/lexv2models/tags_gen.go | 6 +++--- internal/service/licensemanager/tags_gen.go | 4 ++-- internal/service/lightsail/tags_gen.go | 4 ++-- internal/service/location/tags_gen.go | 6 +++--- internal/service/logs/tags_gen.go | 6 +++--- internal/service/lookoutmetrics/tags_gen.go | 6 +++--- internal/service/macie2/tags_gen.go | 4 ++-- internal/service/mediaconnect/tags_gen.go | 6 +++--- internal/service/mediaconvert/tags_gen.go | 6 +++--- internal/service/medialive/tags_gen.go | 6 +++--- internal/service/mediapackage/tags_gen.go | 6 +++--- internal/service/mediastore/tags_gen.go | 6 +++--- internal/service/memorydb/tags_gen.go | 6 +++--- internal/service/mq/tags_gen.go | 6 +++--- internal/service/mwaa/tags_gen.go | 4 ++-- internal/service/neptune/tags_gen.go | 6 +++--- internal/service/networkfirewall/tags_gen.go | 6 +++--- internal/service/networkmanager/tags_gen.go | 4 ++-- internal/service/oam/tags_gen.go | 6 +++--- internal/service/opensearch/tags_gen.go | 6 +++--- internal/service/opensearchserverless/tags_gen.go | 6 +++--- internal/service/opsworks/tags_gen.go | 6 +++--- internal/service/organizations/tags_gen.go | 6 +++--- internal/service/outposts/tags_gen.go | 4 ++-- internal/service/pinpoint/tags_gen.go | 6 +++--- internal/service/pipes/tags_gen.go | 6 +++--- internal/service/qldb/tags_gen.go | 6 +++--- internal/service/quicksight/tags_gen.go | 6 +++--- internal/service/ram/tags_gen.go | 4 ++-- internal/service/rbin/tags_gen.go | 6 +++--- internal/service/rds/tags_gen.go | 6 +++--- internal/service/redshift/tags_gen.go | 4 ++-- internal/service/redshiftserverless/tags_gen.go | 6 +++--- internal/service/resourceexplorer2/tags_gen.go | 6 +++--- internal/service/resourcegroups/tags_gen.go | 6 +++--- internal/service/resourcegroupstaggingapi/tags_gen.go | 4 ++-- internal/service/rolesanywhere/tags_gen.go | 6 +++--- internal/service/route53/tags_gen.go | 6 +++--- internal/service/route53domains/tags_gen.go | 6 +++--- internal/service/route53recoveryreadiness/tags_gen.go | 6 +++--- internal/service/route53resolver/tags_gen.go | 6 +++--- internal/service/rum/tags_gen.go | 4 ++-- internal/service/s3/tags_gen.go | 4 ++-- internal/service/s3/tagsv2_gen.go | 4 ++-- internal/service/s3control/tags_gen.go | 6 +++--- internal/service/s3control/tagss3_gen.go | 4 ++-- internal/service/sagemaker/tags_gen.go | 6 +++--- internal/service/scheduler/tags_gen.go | 6 +++--- internal/service/schemas/tags_gen.go | 6 +++--- internal/service/secretsmanager/tags_gen.go | 4 ++-- internal/service/securityhub/tags_gen.go | 6 +++--- internal/service/securitylake/tags_gen.go | 6 +++--- internal/service/serverlessrepo/tags_gen.go | 4 ++-- internal/service/servicecatalog/tags_gen.go | 4 ++-- internal/service/servicediscovery/tags_gen.go | 6 +++--- internal/service/sesv2/tags_gen.go | 6 +++--- internal/service/sfn/tags_gen.go | 6 +++--- internal/service/shield/tags_gen.go | 6 +++--- internal/service/signer/tags_gen.go | 6 +++--- internal/service/sns/tags_gen.go | 6 +++--- internal/service/sqs/tags_gen.go | 6 +++--- internal/service/ssm/tags_gen.go | 6 +++--- internal/service/ssmcontacts/tags_gen.go | 6 +++--- internal/service/ssmincidents/tags_gen.go | 6 +++--- internal/service/ssoadmin/tags_gen.go | 6 +++--- internal/service/storagegateway/tags_gen.go | 6 +++--- internal/service/swf/tags_gen.go | 6 +++--- internal/service/synthetics/tags_gen.go | 4 ++-- internal/service/timestreamwrite/tags_gen.go | 6 +++--- internal/service/transcribe/tags_gen.go | 6 +++--- internal/service/transfer/tags_gen.go | 6 +++--- internal/service/vpclattice/tags_gen.go | 6 +++--- internal/service/waf/tags_gen.go | 6 +++--- internal/service/wafregional/tags_gen.go | 6 +++--- internal/service/wafv2/tags_gen.go | 6 +++--- internal/service/worklink/tags_gen.go | 6 +++--- internal/service/workspaces/tags_gen.go | 6 +++--- internal/service/xray/tags_gen.go | 6 +++--- 187 files changed, 532 insertions(+), 532 deletions(-) diff --git a/internal/service/accessanalyzer/tags_gen.go b/internal/service/accessanalyzer/tags_gen.go index 950502764bea..85f7cf44e131 100644 --- a/internal/service/accessanalyzer/tags_gen.go +++ b/internal/service/accessanalyzer/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets accessanalyzer service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/acm/tags_gen.go b/internal/service/acm/tags_gen.go index d609890cfcf0..295e997bf37e 100644 --- a/internal/service/acm/tags_gen.go +++ b/internal/service/acm/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets acm service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/acmpca/tags_gen.go b/internal/service/acmpca/tags_gen.go index e20ae03a3b79..df1097ebdf4a 100644 --- a/internal/service/acmpca/tags_gen.go +++ b/internal/service/acmpca/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*acmpca.Tag { // setTagsOut sets acmpca service tags in Context. func setTagsOut(ctx context.Context, tags []*acmpca.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/amp/tags_gen.go b/internal/service/amp/tags_gen.go index 39e1f3ed8bcc..f572295e5c09 100644 --- a/internal/service/amp/tags_gen.go +++ b/internal/service/amp/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets amp service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/amplify/tags_gen.go b/internal/service/amplify/tags_gen.go index fb424290ccf5..c0675d696d90 100644 --- a/internal/service/amplify/tags_gen.go +++ b/internal/service/amplify/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets amplify service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/apigateway/tags_gen.go b/internal/service/apigateway/tags_gen.go index 8daa9115caf3..43069e086010 100644 --- a/internal/service/apigateway/tags_gen.go +++ b/internal/service/apigateway/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets apigateway service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/apigatewayv2/tags_gen.go b/internal/service/apigatewayv2/tags_gen.go index cd194405c9f7..c00afe4ba855 100644 --- a/internal/service/apigatewayv2/tags_gen.go +++ b/internal/service/apigatewayv2/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets apigatewayv2 service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appautoscaling/tags_gen.go b/internal/service/appautoscaling/tags_gen.go index 513af866fac1..ed6488d7e0e3 100644 --- a/internal/service/appautoscaling/tags_gen.go +++ b/internal/service/appautoscaling/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets appautoscaling service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appconfig/tags_gen.go b/internal/service/appconfig/tags_gen.go index a8c9cbea4e59..4e791b86cc17 100644 --- a/internal/service/appconfig/tags_gen.go +++ b/internal/service/appconfig/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets appconfig service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appflow/tags_gen.go b/internal/service/appflow/tags_gen.go index 1bf5d21ea1d1..8dea46351b7a 100644 --- a/internal/service/appflow/tags_gen.go +++ b/internal/service/appflow/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets appflow service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appintegrations/tags_gen.go b/internal/service/appintegrations/tags_gen.go index 52ca9a09c953..cab3092d60bd 100644 --- a/internal/service/appintegrations/tags_gen.go +++ b/internal/service/appintegrations/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets appintegrations service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/applicationinsights/tags_gen.go b/internal/service/applicationinsights/tags_gen.go index 93e283c0d1ac..91e48d73fda1 100644 --- a/internal/service/applicationinsights/tags_gen.go +++ b/internal/service/applicationinsights/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*applicationinsights.Tag { // setTagsOut sets applicationinsights service tags in Context. func setTagsOut(ctx context.Context, tags []*applicationinsights.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appmesh/tags_gen.go b/internal/service/appmesh/tags_gen.go index 4f5d9cf60172..d2fd957c1ed9 100644 --- a/internal/service/appmesh/tags_gen.go +++ b/internal/service/appmesh/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*appmesh.TagRef { // setTagsOut sets appmesh service tags in Context. func setTagsOut(ctx context.Context, tags []*appmesh.TagRef) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/apprunner/tags_gen.go b/internal/service/apprunner/tags_gen.go index 0c99e1ec696b..8dd75c791449 100644 --- a/internal/service/apprunner/tags_gen.go +++ b/internal/service/apprunner/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets apprunner service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appstream/tags_gen.go b/internal/service/appstream/tags_gen.go index 5d63387e8b08..884191b839f7 100644 --- a/internal/service/appstream/tags_gen.go +++ b/internal/service/appstream/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets appstream service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/appsync/tags_gen.go b/internal/service/appsync/tags_gen.go index 1074f18a8371..bd6eb2073461 100644 --- a/internal/service/appsync/tags_gen.go +++ b/internal/service/appsync/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets appsync service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/athena/tags_gen.go b/internal/service/athena/tags_gen.go index 00e4ab74c7aa..67efdee02844 100644 --- a/internal/service/athena/tags_gen.go +++ b/internal/service/athena/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets athena service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/auditmanager/tags_gen.go b/internal/service/auditmanager/tags_gen.go index cb2e7073c025..a535b88709b8 100644 --- a/internal/service/auditmanager/tags_gen.go +++ b/internal/service/auditmanager/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets auditmanager service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/autoscaling/tags_gen.go b/internal/service/autoscaling/tags_gen.go index c9c57ba280f2..a3242be04216 100644 --- a/internal/service/autoscaling/tags_gen.go +++ b/internal/service/autoscaling/tags_gen.go @@ -14,7 +14,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -84,7 +84,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -236,7 +236,7 @@ func getTagsIn(ctx context.Context) []*autoscaling.Tag { // setTagsOut sets autoscaling service tags in Context. func setTagsOut(ctx context.Context, tags any, identifier, resourceType string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags, identifier, resourceType)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags, identifier, resourceType)) } } diff --git a/internal/service/backup/tags_gen.go b/internal/service/backup/tags_gen.go index 3e37fe6cea3e..9b1d6b0913c7 100644 --- a/internal/service/backup/tags_gen.go +++ b/internal/service/backup/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets backup service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/batch/tags_gen.go b/internal/service/batch/tags_gen.go index e4f9233d685e..9e7e6bea062b 100644 --- a/internal/service/batch/tags_gen.go +++ b/internal/service/batch/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets batch service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ce/tags_gen.go b/internal/service/ce/tags_gen.go index cc23c7b111a6..726ac69dc83a 100644 --- a/internal/service/ce/tags_gen.go +++ b/internal/service/ce/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*costexplorer.ResourceTag { // setTagsOut sets ce service tags in Context. func setTagsOut(ctx context.Context, tags []*costexplorer.ResourceTag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/chime/tags_gen.go b/internal/service/chime/tags_gen.go index a5c227167ccb..6e2842964288 100644 --- a/internal/service/chime/tags_gen.go +++ b/internal/service/chime/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets chime service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/chimesdkmediapipelines/tags_gen.go b/internal/service/chimesdkmediapipelines/tags_gen.go index e0c850b8037e..ebf1ccba8598 100644 --- a/internal/service/chimesdkmediapipelines/tags_gen.go +++ b/internal/service/chimesdkmediapipelines/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets chimesdkmediapipelines service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/chimesdkvoice/tags_gen.go b/internal/service/chimesdkvoice/tags_gen.go index b3fee7aff277..3e69b1023c21 100644 --- a/internal/service/chimesdkvoice/tags_gen.go +++ b/internal/service/chimesdkvoice/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets chimesdkvoice service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cleanrooms/tags_gen.go b/internal/service/cleanrooms/tags_gen.go index 46560e586b40..25cab827ad3a 100644 --- a/internal/service/cleanrooms/tags_gen.go +++ b/internal/service/cleanrooms/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets cleanrooms service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cloud9/tags_gen.go b/internal/service/cloud9/tags_gen.go index e421d534c470..d344302b785d 100644 --- a/internal/service/cloud9/tags_gen.go +++ b/internal/service/cloud9/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*cloud9.Tag { // setTagsOut sets cloud9 service tags in Context. func setTagsOut(ctx context.Context, tags []*cloud9.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cloudformation/tags_gen.go b/internal/service/cloudformation/tags_gen.go index 29ab991c91bf..a6b0a18423e5 100644 --- a/internal/service/cloudformation/tags_gen.go +++ b/internal/service/cloudformation/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/cloudformation" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []*cloudformation.Tag { // setTagsOut sets cloudformation service tags in Context. func setTagsOut(ctx context.Context, tags []*cloudformation.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cloudfront/tags_gen.go b/internal/service/cloudfront/tags_gen.go index 555cc86a7191..38bb44097c1b 100644 --- a/internal/service/cloudfront/tags_gen.go +++ b/internal/service/cloudfront/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*cloudfront.Tag { // setTagsOut sets cloudfront service tags in Context. func setTagsOut(ctx context.Context, tags []*cloudfront.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cloudhsmv2/tags_gen.go b/internal/service/cloudhsmv2/tags_gen.go index f61f9fff5c8a..6faa2abc71d5 100644 --- a/internal/service/cloudhsmv2/tags_gen.go +++ b/internal/service/cloudhsmv2/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*cloudhsmv2.Tag { // setTagsOut sets cloudhsmv2 service tags in Context. func setTagsOut(ctx context.Context, tags []*cloudhsmv2.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cloudtrail/tags_gen.go b/internal/service/cloudtrail/tags_gen.go index 3ff41754a98d..405fe71aecd3 100644 --- a/internal/service/cloudtrail/tags_gen.go +++ b/internal/service/cloudtrail/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*cloudtrail.Tag { // setTagsOut sets cloudtrail service tags in Context. func setTagsOut(ctx context.Context, tags []*cloudtrail.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cloudwatch/tags_gen.go b/internal/service/cloudwatch/tags_gen.go index e54959abddf0..b99205cb66a2 100644 --- a/internal/service/cloudwatch/tags_gen.go +++ b/internal/service/cloudwatch/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*cloudwatch.Tag { // setTagsOut sets cloudwatch service tags in Context. func setTagsOut(ctx context.Context, tags []*cloudwatch.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codeartifact/tags_gen.go b/internal/service/codeartifact/tags_gen.go index 5d8fde828d2a..e5f97fecb936 100644 --- a/internal/service/codeartifact/tags_gen.go +++ b/internal/service/codeartifact/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*codeartifact.Tag { // setTagsOut sets codeartifact service tags in Context. func setTagsOut(ctx context.Context, tags []*codeartifact.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codebuild/tags_gen.go b/internal/service/codebuild/tags_gen.go index f96f2056d227..4047d797bca7 100644 --- a/internal/service/codebuild/tags_gen.go +++ b/internal/service/codebuild/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/codebuild" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []*codebuild.Tag { // setTagsOut sets codebuild service tags in Context. func setTagsOut(ctx context.Context, tags []*codebuild.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codecommit/tags_gen.go b/internal/service/codecommit/tags_gen.go index 27c1ed988c12..09c1bfeb0a74 100644 --- a/internal/service/codecommit/tags_gen.go +++ b/internal/service/codecommit/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets codecommit service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codeguruprofiler/tags_gen.go b/internal/service/codeguruprofiler/tags_gen.go index e16091f7185a..853cf09d8591 100644 --- a/internal/service/codeguruprofiler/tags_gen.go +++ b/internal/service/codeguruprofiler/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets codeguruprofiler service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codegurureviewer/tags_gen.go b/internal/service/codegurureviewer/tags_gen.go index 40ae57a3592a..9145195936ba 100644 --- a/internal/service/codegurureviewer/tags_gen.go +++ b/internal/service/codegurureviewer/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets codegurureviewer service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codepipeline/tags_gen.go b/internal/service/codepipeline/tags_gen.go index 2c632012c2f4..fc322870c269 100644 --- a/internal/service/codepipeline/tags_gen.go +++ b/internal/service/codepipeline/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*codepipeline.Tag { // setTagsOut sets codepipeline service tags in Context. func setTagsOut(ctx context.Context, tags []*codepipeline.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codestarconnections/tags_gen.go b/internal/service/codestarconnections/tags_gen.go index 02b6d1d2cc98..273ed514fa86 100644 --- a/internal/service/codestarconnections/tags_gen.go +++ b/internal/service/codestarconnections/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets codestarconnections service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/codestarnotifications/tags_gen.go b/internal/service/codestarnotifications/tags_gen.go index 8826c3f113cb..6c2050635614 100644 --- a/internal/service/codestarnotifications/tags_gen.go +++ b/internal/service/codestarnotifications/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets codestarnotifications service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cognitoidentity/tags_gen.go b/internal/service/cognitoidentity/tags_gen.go index 3a5085550726..0d661cd5a4b6 100644 --- a/internal/service/cognitoidentity/tags_gen.go +++ b/internal/service/cognitoidentity/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets cognitoidentity service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/cognitoidp/tags_gen.go b/internal/service/cognitoidp/tags_gen.go index 820dbc4d013d..7f201d4ac342 100644 --- a/internal/service/cognitoidp/tags_gen.go +++ b/internal/service/cognitoidp/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets cognitoidp service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/comprehend/tags_gen.go b/internal/service/comprehend/tags_gen.go index 3d33f7eef298..1770b76e9e60 100644 --- a/internal/service/comprehend/tags_gen.go +++ b/internal/service/comprehend/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets comprehend service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/configservice/tags_gen.go b/internal/service/configservice/tags_gen.go index 77c931636de4..e1664a530fdd 100644 --- a/internal/service/configservice/tags_gen.go +++ b/internal/service/configservice/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*configservice.Tag { // setTagsOut sets configservice service tags in Context. func setTagsOut(ctx context.Context, tags []*configservice.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/connect/tags_gen.go b/internal/service/connect/tags_gen.go index cafb349e9427..8a232833f5d4 100644 --- a/internal/service/connect/tags_gen.go +++ b/internal/service/connect/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets connect service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/customerprofiles/tags_gen.go b/internal/service/customerprofiles/tags_gen.go index f6e90a981338..200a68268d5c 100644 --- a/internal/service/customerprofiles/tags_gen.go +++ b/internal/service/customerprofiles/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets customerprofiles service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/dataexchange/tags_gen.go b/internal/service/dataexchange/tags_gen.go index d97349220b1e..2b91bfbcf2e1 100644 --- a/internal/service/dataexchange/tags_gen.go +++ b/internal/service/dataexchange/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets dataexchange service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/datapipeline/tags_gen.go b/internal/service/datapipeline/tags_gen.go index efa5ef6667eb..efd17707caa9 100644 --- a/internal/service/datapipeline/tags_gen.go +++ b/internal/service/datapipeline/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*datapipeline.Tag { // setTagsOut sets datapipeline service tags in Context. func setTagsOut(ctx context.Context, tags []*datapipeline.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/datasync/tags_gen.go b/internal/service/datasync/tags_gen.go index c970f250840c..b761fcc9dc69 100644 --- a/internal/service/datasync/tags_gen.go +++ b/internal/service/datasync/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*datasync.TagListEntry { // setTagsOut sets datasync service tags in Context. func setTagsOut(ctx context.Context, tags []*datasync.TagListEntry) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/dax/tags_gen.go b/internal/service/dax/tags_gen.go index 35dfbc181d30..b591bcec4b46 100644 --- a/internal/service/dax/tags_gen.go +++ b/internal/service/dax/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*dax.Tag { // setTagsOut sets dax service tags in Context. func setTagsOut(ctx context.Context, tags []*dax.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/deploy/tags_gen.go b/internal/service/deploy/tags_gen.go index 792997529d0c..50e2b60604a7 100644 --- a/internal/service/deploy/tags_gen.go +++ b/internal/service/deploy/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets deploy service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/detective/tags_gen.go b/internal/service/detective/tags_gen.go index aa55884f0166..07123082e850 100644 --- a/internal/service/detective/tags_gen.go +++ b/internal/service/detective/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets detective service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/devicefarm/tags_gen.go b/internal/service/devicefarm/tags_gen.go index f3c00bf3d352..377920ef91a8 100644 --- a/internal/service/devicefarm/tags_gen.go +++ b/internal/service/devicefarm/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*devicefarm.Tag { // setTagsOut sets devicefarm service tags in Context. func setTagsOut(ctx context.Context, tags []*devicefarm.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/directconnect/tags_gen.go b/internal/service/directconnect/tags_gen.go index 708a0671e743..36eff3c345e7 100644 --- a/internal/service/directconnect/tags_gen.go +++ b/internal/service/directconnect/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*directconnect.Tag { // setTagsOut sets directconnect service tags in Context. func setTagsOut(ctx context.Context, tags []*directconnect.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/dlm/tags_gen.go b/internal/service/dlm/tags_gen.go index a033b675e32c..a9b30d13b2cd 100644 --- a/internal/service/dlm/tags_gen.go +++ b/internal/service/dlm/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets dlm service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/dms/tags_gen.go b/internal/service/dms/tags_gen.go index 887a3a404323..48393cf00702 100644 --- a/internal/service/dms/tags_gen.go +++ b/internal/service/dms/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*databasemigrationservice.Tag { // setTagsOut sets dms service tags in Context. func setTagsOut(ctx context.Context, tags []*databasemigrationservice.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/docdb/tags_gen.go b/internal/service/docdb/tags_gen.go index 5375f9c34b75..3e538b3f872f 100644 --- a/internal/service/docdb/tags_gen.go +++ b/internal/service/docdb/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*docdb.Tag { // setTagsOut sets docdb service tags in Context. func setTagsOut(ctx context.Context, tags []*docdb.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/docdbelastic/tags_gen.go b/internal/service/docdbelastic/tags_gen.go index b8743e2c6fa8..90eeda314c27 100644 --- a/internal/service/docdbelastic/tags_gen.go +++ b/internal/service/docdbelastic/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets docdbelastic service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ds/tags_gen.go b/internal/service/ds/tags_gen.go index e01d9e361a52..6d5db3537d8f 100644 --- a/internal/service/ds/tags_gen.go +++ b/internal/service/ds/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*directoryservice.Tag { // setTagsOut sets ds service tags in Context. func setTagsOut(ctx context.Context, tags []*directoryservice.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/dynamodb/tags_gen.go b/internal/service/dynamodb/tags_gen.go index 5945d531a9b9..5025ed606328 100644 --- a/internal/service/dynamodb/tags_gen.go +++ b/internal/service/dynamodb/tags_gen.go @@ -15,7 +15,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -72,7 +72,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -122,7 +122,7 @@ func getTagsIn(ctx context.Context) []*dynamodb.Tag { // setTagsOut sets dynamodb service tags in Context. func setTagsOut(ctx context.Context, tags []*dynamodb.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ec2/tags_gen.go b/internal/service/ec2/tags_gen.go index 089c3d153841..601d2db6a9d7 100644 --- a/internal/service/ec2/tags_gen.go +++ b/internal/service/ec2/tags_gen.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -83,7 +83,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -150,7 +150,7 @@ func getTagsIn(ctx context.Context) []*ec2.Tag { // setTagsOut sets ec2 service tags in Context. func setTagsOut(ctx context.Context, tags any) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ec2/tagsv2_gen.go b/internal/service/ec2/tagsv2_gen.go index 8c6b3dd1f1a0..77d955581293 100644 --- a/internal/service/ec2/tagsv2_gen.go +++ b/internal/service/ec2/tagsv2_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -59,7 +59,7 @@ func getTagsInV2(ctx context.Context) []awstypes.Tag { // setTagsOutV2 sets ec2 service tags in Context. func setTagsOutV2(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(keyValueTagsV2(ctx, tags)) + inContext.TagsOut = option.Some(keyValueTagsV2(ctx, tags)) } } diff --git a/internal/service/ecr/tags_gen.go b/internal/service/ecr/tags_gen.go index 876c77309079..0c3bf816d130 100644 --- a/internal/service/ecr/tags_gen.go +++ b/internal/service/ecr/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*ecr.Tag { // setTagsOut sets ecr service tags in Context. func setTagsOut(ctx context.Context, tags []*ecr.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ecrpublic/tags_gen.go b/internal/service/ecrpublic/tags_gen.go index d6dda0b252b2..d9d724e12cba 100644 --- a/internal/service/ecrpublic/tags_gen.go +++ b/internal/service/ecrpublic/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*ecrpublic.Tag { // setTagsOut sets ecrpublic service tags in Context. func setTagsOut(ctx context.Context, tags []*ecrpublic.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ecs/tags_gen.go b/internal/service/ecs/tags_gen.go index b6f8903a0e49..0c7e9308729a 100644 --- a/internal/service/ecs/tags_gen.go +++ b/internal/service/ecs/tags_gen.go @@ -15,7 +15,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -72,7 +72,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -122,7 +122,7 @@ func getTagsIn(ctx context.Context) []*ecs.Tag { // setTagsOut sets ecs service tags in Context. func setTagsOut(ctx context.Context, tags []*ecs.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/efs/tags_gen.go b/internal/service/efs/tags_gen.go index 5931c30e7360..e17108f0cbfa 100644 --- a/internal/service/efs/tags_gen.go +++ b/internal/service/efs/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*efs.Tag { // setTagsOut sets efs service tags in Context. func setTagsOut(ctx context.Context, tags []*efs.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/eks/tags_gen.go b/internal/service/eks/tags_gen.go index 785e78ad79d7..e6553813726f 100644 --- a/internal/service/eks/tags_gen.go +++ b/internal/service/eks/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets eks service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/elasticache/tags_gen.go b/internal/service/elasticache/tags_gen.go index 07b0c1b6127b..51cf3d9882e0 100644 --- a/internal/service/elasticache/tags_gen.go +++ b/internal/service/elasticache/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*elasticache.Tag { // setTagsOut sets elasticache service tags in Context. func setTagsOut(ctx context.Context, tags []*elasticache.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/elasticbeanstalk/tags_gen.go b/internal/service/elasticbeanstalk/tags_gen.go index e974c1f9e745..a506b6999957 100644 --- a/internal/service/elasticbeanstalk/tags_gen.go +++ b/internal/service/elasticbeanstalk/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*elasticbeanstalk.Tag { // setTagsOut sets elasticbeanstalk service tags in Context. func setTagsOut(ctx context.Context, tags []*elasticbeanstalk.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/elasticsearch/tags_gen.go b/internal/service/elasticsearch/tags_gen.go index cc9182a1f3a9..a4c0359a9675 100644 --- a/internal/service/elasticsearch/tags_gen.go +++ b/internal/service/elasticsearch/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*elasticsearchservice.Tag { // setTagsOut sets elasticsearch service tags in Context. func setTagsOut(ctx context.Context, tags []*elasticsearchservice.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/elb/tags_gen.go b/internal/service/elb/tags_gen.go index eca6a22938c5..57d0b4e9a546 100644 --- a/internal/service/elb/tags_gen.go +++ b/internal/service/elb/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -108,7 +108,7 @@ func getTagsIn(ctx context.Context) []*elb.Tag { // setTagsOut sets elb service tags in Context. func setTagsOut(ctx context.Context, tags []*elb.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/elbv2/tags_gen.go b/internal/service/elbv2/tags_gen.go index 64d1387a8b2f..54e9a67ee48a 100644 --- a/internal/service/elbv2/tags_gen.go +++ b/internal/service/elbv2/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*elbv2.Tag { // setTagsOut sets elbv2 service tags in Context. func setTagsOut(ctx context.Context, tags []*elbv2.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/emr/tags_gen.go b/internal/service/emr/tags_gen.go index 76d694046bfd..73df2b5d6f44 100644 --- a/internal/service/emr/tags_gen.go +++ b/internal/service/emr/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*emr.Tag { // setTagsOut sets emr service tags in Context. func setTagsOut(ctx context.Context, tags []*emr.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/emrcontainers/tags_gen.go b/internal/service/emrcontainers/tags_gen.go index 28781419c8ac..fe3aa0070f90 100644 --- a/internal/service/emrcontainers/tags_gen.go +++ b/internal/service/emrcontainers/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets emrcontainers service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/emrserverless/tags_gen.go b/internal/service/emrserverless/tags_gen.go index b13871f03f46..24e162216e01 100644 --- a/internal/service/emrserverless/tags_gen.go +++ b/internal/service/emrserverless/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets emrserverless service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/events/tags_gen.go b/internal/service/events/tags_gen.go index 25a666e566f4..a8cc8785ab47 100644 --- a/internal/service/events/tags_gen.go +++ b/internal/service/events/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*eventbridge.Tag { // setTagsOut sets events service tags in Context. func setTagsOut(ctx context.Context, tags []*eventbridge.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/evidently/tags_gen.go b/internal/service/evidently/tags_gen.go index 9bee7f2d9e54..fa55734a1713 100644 --- a/internal/service/evidently/tags_gen.go +++ b/internal/service/evidently/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets evidently service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/finspace/tags_gen.go b/internal/service/finspace/tags_gen.go index 7a99feeab1cf..8abb0deb456c 100644 --- a/internal/service/finspace/tags_gen.go +++ b/internal/service/finspace/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets finspace service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/firehose/tags_gen.go b/internal/service/firehose/tags_gen.go index d16d6f61de8b..806e3854ea3e 100644 --- a/internal/service/firehose/tags_gen.go +++ b/internal/service/firehose/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*firehose.Tag { // setTagsOut sets firehose service tags in Context. func setTagsOut(ctx context.Context, tags []*firehose.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/fis/tags_gen.go b/internal/service/fis/tags_gen.go index bb3743ef03f0..28293c4c25fa 100644 --- a/internal/service/fis/tags_gen.go +++ b/internal/service/fis/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets fis service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/fms/tags_gen.go b/internal/service/fms/tags_gen.go index 740a23368c69..1fa9846a2c63 100644 --- a/internal/service/fms/tags_gen.go +++ b/internal/service/fms/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*fms.Tag { // setTagsOut sets fms service tags in Context. func setTagsOut(ctx context.Context, tags []*fms.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/fsx/tags_gen.go b/internal/service/fsx/tags_gen.go index 0e1d9cdfe31a..cdd98c088a78 100644 --- a/internal/service/fsx/tags_gen.go +++ b/internal/service/fsx/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*fsx.Tag { // setTagsOut sets fsx service tags in Context. func setTagsOut(ctx context.Context, tags []*fsx.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/gamelift/tags_gen.go b/internal/service/gamelift/tags_gen.go index a4a49ffb0787..8c8a193c52b5 100644 --- a/internal/service/gamelift/tags_gen.go +++ b/internal/service/gamelift/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*gamelift.Tag { // setTagsOut sets gamelift service tags in Context. func setTagsOut(ctx context.Context, tags []*gamelift.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/glacier/tags_gen.go b/internal/service/glacier/tags_gen.go index feacf0e8c6f2..82f1ce5d4e2f 100644 --- a/internal/service/glacier/tags_gen.go +++ b/internal/service/glacier/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets glacier service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/globalaccelerator/tags_gen.go b/internal/service/globalaccelerator/tags_gen.go index a388d4842498..e9974334e9e9 100644 --- a/internal/service/globalaccelerator/tags_gen.go +++ b/internal/service/globalaccelerator/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*globalaccelerator.Tag { // setTagsOut sets globalaccelerator service tags in Context. func setTagsOut(ctx context.Context, tags []*globalaccelerator.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/glue/tags_gen.go b/internal/service/glue/tags_gen.go index 6cce2f144e3e..cfef903f15c9 100644 --- a/internal/service/glue/tags_gen.go +++ b/internal/service/glue/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets glue service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/grafana/tags_gen.go b/internal/service/grafana/tags_gen.go index 28ced98ebb60..5dd8becdadf1 100644 --- a/internal/service/grafana/tags_gen.go +++ b/internal/service/grafana/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets grafana service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/greengrass/tags_gen.go b/internal/service/greengrass/tags_gen.go index 656a2df5a502..76b1d773c028 100644 --- a/internal/service/greengrass/tags_gen.go +++ b/internal/service/greengrass/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets greengrass service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/guardduty/tags_gen.go b/internal/service/guardduty/tags_gen.go index 5688c67eb2db..004e9628cdee 100644 --- a/internal/service/guardduty/tags_gen.go +++ b/internal/service/guardduty/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets guardduty service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/healthlake/tags_gen.go b/internal/service/healthlake/tags_gen.go index 58e89c1e591f..1cf4cf782779 100644 --- a/internal/service/healthlake/tags_gen.go +++ b/internal/service/healthlake/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets healthlake service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/iam/tags_gen.go b/internal/service/iam/tags_gen.go index e3b900f95f7e..1b56f3698e3c 100644 --- a/internal/service/iam/tags_gen.go +++ b/internal/service/iam/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/iam" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []*iam.Tag { // setTagsOut sets iam service tags in Context. func setTagsOut(ctx context.Context, tags []*iam.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/imagebuilder/tags_gen.go b/internal/service/imagebuilder/tags_gen.go index 4e8b539e48b6..9c11e5da020d 100644 --- a/internal/service/imagebuilder/tags_gen.go +++ b/internal/service/imagebuilder/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets imagebuilder service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/inspector/tags_gen.go b/internal/service/inspector/tags_gen.go index b4a675fe1317..d4d7e73099d9 100644 --- a/internal/service/inspector/tags_gen.go +++ b/internal/service/inspector/tags_gen.go @@ -9,7 +9,7 @@ import ( "github.com/aws/aws-sdk-go/service/inspector/inspectoriface" "github.com/hashicorp/terraform-provider-aws/internal/conns" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // listTags lists inspector service tags. @@ -39,7 +39,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -89,6 +89,6 @@ func getTagsIn(ctx context.Context) []*inspector.Tag { // setTagsOut sets inspector service tags in Context. func setTagsOut(ctx context.Context, tags []*inspector.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/internetmonitor/tags_gen.go b/internal/service/internetmonitor/tags_gen.go index fa8fc1e7beee..1875efad2462 100644 --- a/internal/service/internetmonitor/tags_gen.go +++ b/internal/service/internetmonitor/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets internetmonitor service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/iot/tags_gen.go b/internal/service/iot/tags_gen.go index ce6faf2d8fa1..a6af1e4d3a1f 100644 --- a/internal/service/iot/tags_gen.go +++ b/internal/service/iot/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*iot.Tag { // setTagsOut sets iot service tags in Context. func setTagsOut(ctx context.Context, tags []*iot.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/iotanalytics/tags_gen.go b/internal/service/iotanalytics/tags_gen.go index e501838950a8..c4803733f285 100644 --- a/internal/service/iotanalytics/tags_gen.go +++ b/internal/service/iotanalytics/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*iotanalytics.Tag { // setTagsOut sets iotanalytics service tags in Context. func setTagsOut(ctx context.Context, tags []*iotanalytics.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/iotevents/tags_gen.go b/internal/service/iotevents/tags_gen.go index 2963909ed2e4..1a6b7912d8b2 100644 --- a/internal/service/iotevents/tags_gen.go +++ b/internal/service/iotevents/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*iotevents.Tag { // setTagsOut sets iotevents service tags in Context. func setTagsOut(ctx context.Context, tags []*iotevents.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ivs/tags_gen.go b/internal/service/ivs/tags_gen.go index 257f99aab98d..05b645c5056d 100644 --- a/internal/service/ivs/tags_gen.go +++ b/internal/service/ivs/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets ivs service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ivschat/tags_gen.go b/internal/service/ivschat/tags_gen.go index 3b7340fef260..ddea8c0ebbde 100644 --- a/internal/service/ivschat/tags_gen.go +++ b/internal/service/ivschat/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets ivschat service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kafka/tags_gen.go b/internal/service/kafka/tags_gen.go index e9f1e24be200..66d97f1c1bab 100644 --- a/internal/service/kafka/tags_gen.go +++ b/internal/service/kafka/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets kafka service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kafka/tagsv2_gen.go b/internal/service/kafka/tagsv2_gen.go index 58b43137e134..3e59f4933ccc 100644 --- a/internal/service/kafka/tagsv2_gen.go +++ b/internal/service/kafka/tagsv2_gen.go @@ -5,7 +5,7 @@ import ( "context" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // map[string]string handling @@ -35,6 +35,6 @@ func getTagsInV2(ctx context.Context) map[string]string { // setTagsOutV2 sets kafka service tags in Context. func setTagsOutV2(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(keyValueTagsV2(ctx, tags)) + inContext.TagsOut = option.Some(keyValueTagsV2(ctx, tags)) } } diff --git a/internal/service/kendra/tags_gen.go b/internal/service/kendra/tags_gen.go index 1864dd5810ee..bc22c64c8592 100644 --- a/internal/service/kendra/tags_gen.go +++ b/internal/service/kendra/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets kendra service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/keyspaces/tags_gen.go b/internal/service/keyspaces/tags_gen.go index 738c63beae83..ae47d23a2bbb 100644 --- a/internal/service/keyspaces/tags_gen.go +++ b/internal/service/keyspaces/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets keyspaces service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kinesis/tags_gen.go b/internal/service/kinesis/tags_gen.go index d9731b3c5bd1..00f1e48a9b2a 100644 --- a/internal/service/kinesis/tags_gen.go +++ b/internal/service/kinesis/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*kinesis.Tag { // setTagsOut sets kinesis service tags in Context. func setTagsOut(ctx context.Context, tags []*kinesis.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kinesisanalytics/tags_gen.go b/internal/service/kinesisanalytics/tags_gen.go index 74ad87f7168a..76ff98ea4856 100644 --- a/internal/service/kinesisanalytics/tags_gen.go +++ b/internal/service/kinesisanalytics/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*kinesisanalytics.Tag { // setTagsOut sets kinesisanalytics service tags in Context. func setTagsOut(ctx context.Context, tags []*kinesisanalytics.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kinesisanalyticsv2/tags_gen.go b/internal/service/kinesisanalyticsv2/tags_gen.go index cdd12fd9809a..7fc2bce5e65b 100644 --- a/internal/service/kinesisanalyticsv2/tags_gen.go +++ b/internal/service/kinesisanalyticsv2/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*kinesisanalyticsv2.Tag { // setTagsOut sets kinesisanalyticsv2 service tags in Context. func setTagsOut(ctx context.Context, tags []*kinesisanalyticsv2.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kinesisvideo/tags_gen.go b/internal/service/kinesisvideo/tags_gen.go index 1b9a12679f98..2ada63042440 100644 --- a/internal/service/kinesisvideo/tags_gen.go +++ b/internal/service/kinesisvideo/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets kinesisvideo service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/kms/tags_gen.go b/internal/service/kms/tags_gen.go index 110ab9100c11..ccf4e8243e90 100644 --- a/internal/service/kms/tags_gen.go +++ b/internal/service/kms/tags_gen.go @@ -16,7 +16,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -67,7 +67,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -117,7 +117,7 @@ func getTagsIn(ctx context.Context) []*kms.Tag { // setTagsOut sets kms service tags in Context. func setTagsOut(ctx context.Context, tags []*kms.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/lambda/tags_gen.go b/internal/service/lambda/tags_gen.go index af734162610b..312aa516850e 100644 --- a/internal/service/lambda/tags_gen.go +++ b/internal/service/lambda/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets lambda service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/lexv2models/tags_gen.go b/internal/service/lexv2models/tags_gen.go index 35eb09faf43b..70d66945cc35 100644 --- a/internal/service/lexv2models/tags_gen.go +++ b/internal/service/lexv2models/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets lexv2models service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/licensemanager/tags_gen.go b/internal/service/licensemanager/tags_gen.go index 807269445469..9220395941f7 100644 --- a/internal/service/licensemanager/tags_gen.go +++ b/internal/service/licensemanager/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*licensemanager.Tag { // setTagsOut sets licensemanager service tags in Context. func setTagsOut(ctx context.Context, tags []*licensemanager.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/lightsail/tags_gen.go b/internal/service/lightsail/tags_gen.go index 454766d77664..679f3344f24f 100644 --- a/internal/service/lightsail/tags_gen.go +++ b/internal/service/lightsail/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets lightsail service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/location/tags_gen.go b/internal/service/location/tags_gen.go index da39ba34b686..3cf6c3b37448 100644 --- a/internal/service/location/tags_gen.go +++ b/internal/service/location/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets location service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/logs/tags_gen.go b/internal/service/logs/tags_gen.go index 2d7de5e09d90..8f73ef73ea1c 100644 --- a/internal/service/logs/tags_gen.go +++ b/internal/service/logs/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets logs service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/lookoutmetrics/tags_gen.go b/internal/service/lookoutmetrics/tags_gen.go index 184805d77e08..4afde7370091 100644 --- a/internal/service/lookoutmetrics/tags_gen.go +++ b/internal/service/lookoutmetrics/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets lookoutmetrics service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/macie2/tags_gen.go b/internal/service/macie2/tags_gen.go index 4585dd948085..1f5008af05ef 100644 --- a/internal/service/macie2/tags_gen.go +++ b/internal/service/macie2/tags_gen.go @@ -6,7 +6,7 @@ import ( "github.com/aws/aws-sdk-go/aws" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // map[string]*string handling @@ -36,6 +36,6 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets macie2 service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/mediaconnect/tags_gen.go b/internal/service/mediaconnect/tags_gen.go index 83416cc498f0..96f33f52719c 100644 --- a/internal/service/mediaconnect/tags_gen.go +++ b/internal/service/mediaconnect/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets mediaconnect service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/mediaconvert/tags_gen.go b/internal/service/mediaconvert/tags_gen.go index 7c7db2d562dc..71fde3560ac8 100644 --- a/internal/service/mediaconvert/tags_gen.go +++ b/internal/service/mediaconvert/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets mediaconvert service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/medialive/tags_gen.go b/internal/service/medialive/tags_gen.go index 6960380a4a13..d2a1a66de42b 100644 --- a/internal/service/medialive/tags_gen.go +++ b/internal/service/medialive/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets medialive service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/mediapackage/tags_gen.go b/internal/service/mediapackage/tags_gen.go index a9556ee351e4..cac2b77b8783 100644 --- a/internal/service/mediapackage/tags_gen.go +++ b/internal/service/mediapackage/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets mediapackage service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/mediastore/tags_gen.go b/internal/service/mediastore/tags_gen.go index dc0a0bb78245..b7095fc02ab8 100644 --- a/internal/service/mediastore/tags_gen.go +++ b/internal/service/mediastore/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*mediastore.Tag { // setTagsOut sets mediastore service tags in Context. func setTagsOut(ctx context.Context, tags []*mediastore.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/memorydb/tags_gen.go b/internal/service/memorydb/tags_gen.go index b2b4b29a8480..805f2ed38ccc 100644 --- a/internal/service/memorydb/tags_gen.go +++ b/internal/service/memorydb/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*memorydb.Tag { // setTagsOut sets memorydb service tags in Context. func setTagsOut(ctx context.Context, tags []*memorydb.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/mq/tags_gen.go b/internal/service/mq/tags_gen.go index 4e8488c8a32e..d890a723f62c 100644 --- a/internal/service/mq/tags_gen.go +++ b/internal/service/mq/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets mq service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/mwaa/tags_gen.go b/internal/service/mwaa/tags_gen.go index 71263e1725e6..5e79bd54039f 100644 --- a/internal/service/mwaa/tags_gen.go +++ b/internal/service/mwaa/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets mwaa service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/neptune/tags_gen.go b/internal/service/neptune/tags_gen.go index 618e547b6b72..b6ce3a03005a 100644 --- a/internal/service/neptune/tags_gen.go +++ b/internal/service/neptune/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*neptune.Tag { // setTagsOut sets neptune service tags in Context. func setTagsOut(ctx context.Context, tags []*neptune.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/networkfirewall/tags_gen.go b/internal/service/networkfirewall/tags_gen.go index f4211a4c0b0c..7ef08be33ec8 100644 --- a/internal/service/networkfirewall/tags_gen.go +++ b/internal/service/networkfirewall/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*networkfirewall.Tag { // setTagsOut sets networkfirewall service tags in Context. func setTagsOut(ctx context.Context, tags []*networkfirewall.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/networkmanager/tags_gen.go b/internal/service/networkmanager/tags_gen.go index a2c7b46b2935..ce1d05dab751 100644 --- a/internal/service/networkmanager/tags_gen.go +++ b/internal/service/networkmanager/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*networkmanager.Tag { // setTagsOut sets networkmanager service tags in Context. func setTagsOut(ctx context.Context, tags []*networkmanager.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/oam/tags_gen.go b/internal/service/oam/tags_gen.go index e579d67a857b..da14c0abf5ef 100644 --- a/internal/service/oam/tags_gen.go +++ b/internal/service/oam/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets oam service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/opensearch/tags_gen.go b/internal/service/opensearch/tags_gen.go index 108032ec4513..0a0fdf94e417 100644 --- a/internal/service/opensearch/tags_gen.go +++ b/internal/service/opensearch/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*opensearchservice.Tag { // setTagsOut sets opensearch service tags in Context. func setTagsOut(ctx context.Context, tags []*opensearchservice.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/opensearchserverless/tags_gen.go b/internal/service/opensearchserverless/tags_gen.go index 52d0cfe05215..0959339651ae 100644 --- a/internal/service/opensearchserverless/tags_gen.go +++ b/internal/service/opensearchserverless/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets opensearchserverless service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/opsworks/tags_gen.go b/internal/service/opsworks/tags_gen.go index 61e61f6e89a3..1e17d009ffbc 100644 --- a/internal/service/opsworks/tags_gen.go +++ b/internal/service/opsworks/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets opsworks service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/organizations/tags_gen.go b/internal/service/organizations/tags_gen.go index bcd9d92a896f..7bfa448b9636 100644 --- a/internal/service/organizations/tags_gen.go +++ b/internal/service/organizations/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*organizations.Tag { // setTagsOut sets organizations service tags in Context. func setTagsOut(ctx context.Context, tags []*organizations.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/outposts/tags_gen.go b/internal/service/outposts/tags_gen.go index c7a2e0f8e7cd..67620daa79d6 100644 --- a/internal/service/outposts/tags_gen.go +++ b/internal/service/outposts/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets outposts service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/pinpoint/tags_gen.go b/internal/service/pinpoint/tags_gen.go index e79decfc1357..a3761746b5da 100644 --- a/internal/service/pinpoint/tags_gen.go +++ b/internal/service/pinpoint/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets pinpoint service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/pipes/tags_gen.go b/internal/service/pipes/tags_gen.go index 65dde68db86d..d1b1a2d7129f 100644 --- a/internal/service/pipes/tags_gen.go +++ b/internal/service/pipes/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets pipes service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/qldb/tags_gen.go b/internal/service/qldb/tags_gen.go index cf5d6e3f1e63..494cf058b795 100644 --- a/internal/service/qldb/tags_gen.go +++ b/internal/service/qldb/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets qldb service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/quicksight/tags_gen.go b/internal/service/quicksight/tags_gen.go index d66c2caf3f0d..a1f9bc0f6834 100644 --- a/internal/service/quicksight/tags_gen.go +++ b/internal/service/quicksight/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*quicksight.Tag { // setTagsOut sets quicksight service tags in Context. func setTagsOut(ctx context.Context, tags []*quicksight.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ram/tags_gen.go b/internal/service/ram/tags_gen.go index 57bc470e769b..15f5a63a5efc 100644 --- a/internal/service/ram/tags_gen.go +++ b/internal/service/ram/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*ram.Tag { // setTagsOut sets ram service tags in Context. func setTagsOut(ctx context.Context, tags []*ram.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/rbin/tags_gen.go b/internal/service/rbin/tags_gen.go index 66827ce62266..e028108f6f28 100644 --- a/internal/service/rbin/tags_gen.go +++ b/internal/service/rbin/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets rbin service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/rds/tags_gen.go b/internal/service/rds/tags_gen.go index 47bbb08841eb..9fb5dde2fa2a 100644 --- a/internal/service/rds/tags_gen.go +++ b/internal/service/rds/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*rds.Tag { // setTagsOut sets rds service tags in Context. func setTagsOut(ctx context.Context, tags []*rds.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/redshift/tags_gen.go b/internal/service/redshift/tags_gen.go index 248b6a6bf095..bd69ee3134b3 100644 --- a/internal/service/redshift/tags_gen.go +++ b/internal/service/redshift/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*redshift.Tag { // setTagsOut sets redshift service tags in Context. func setTagsOut(ctx context.Context, tags []*redshift.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/redshiftserverless/tags_gen.go b/internal/service/redshiftserverless/tags_gen.go index 7c94bf8414a8..89fce014c350 100644 --- a/internal/service/redshiftserverless/tags_gen.go +++ b/internal/service/redshiftserverless/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*redshiftserverless.Tag { // setTagsOut sets redshiftserverless service tags in Context. func setTagsOut(ctx context.Context, tags []*redshiftserverless.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/resourceexplorer2/tags_gen.go b/internal/service/resourceexplorer2/tags_gen.go index e5f83d67fbf0..4ba431dba661 100644 --- a/internal/service/resourceexplorer2/tags_gen.go +++ b/internal/service/resourceexplorer2/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets resourceexplorer2 service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/resourcegroups/tags_gen.go b/internal/service/resourcegroups/tags_gen.go index a682271d1f91..286ba75c1e30 100644 --- a/internal/service/resourcegroups/tags_gen.go +++ b/internal/service/resourcegroups/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets resourcegroups service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/resourcegroupstaggingapi/tags_gen.go b/internal/service/resourcegroupstaggingapi/tags_gen.go index 7d1dc4079b4e..1fe9ef63d199 100644 --- a/internal/service/resourcegroupstaggingapi/tags_gen.go +++ b/internal/service/resourcegroupstaggingapi/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" awstypes "github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi/types" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets resourcegroupstaggingapi service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/rolesanywhere/tags_gen.go b/internal/service/rolesanywhere/tags_gen.go index d180e76d074e..752563029cf9 100644 --- a/internal/service/rolesanywhere/tags_gen.go +++ b/internal/service/rolesanywhere/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets rolesanywhere service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/route53/tags_gen.go b/internal/service/route53/tags_gen.go index a1f618838da8..02c0db9fdb7d 100644 --- a/internal/service/route53/tags_gen.go +++ b/internal/service/route53/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -44,7 +44,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -94,7 +94,7 @@ func getTagsIn(ctx context.Context) []*route53.Tag { // setTagsOut sets route53 service tags in Context. func setTagsOut(ctx context.Context, tags []*route53.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/route53domains/tags_gen.go b/internal/service/route53domains/tags_gen.go index ceacca9e6d12..e1dc646adccc 100644 --- a/internal/service/route53domains/tags_gen.go +++ b/internal/service/route53domains/tags_gen.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -63,7 +63,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -113,7 +113,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets route53domains service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/route53recoveryreadiness/tags_gen.go b/internal/service/route53recoveryreadiness/tags_gen.go index 6ac6929e2b95..59b10fda97a3 100644 --- a/internal/service/route53recoveryreadiness/tags_gen.go +++ b/internal/service/route53recoveryreadiness/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets route53recoveryreadiness service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/route53resolver/tags_gen.go b/internal/service/route53resolver/tags_gen.go index 6938109922a8..cf64400aa8fc 100644 --- a/internal/service/route53resolver/tags_gen.go +++ b/internal/service/route53resolver/tags_gen.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -63,7 +63,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -113,7 +113,7 @@ func getTagsIn(ctx context.Context) []*route53resolver.Tag { // setTagsOut sets route53resolver service tags in Context. func setTagsOut(ctx context.Context, tags []*route53resolver.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/rum/tags_gen.go b/internal/service/rum/tags_gen.go index 6cef377156a3..b6a4fef6f68d 100644 --- a/internal/service/rum/tags_gen.go +++ b/internal/service/rum/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets rum service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/s3/tags_gen.go b/internal/service/s3/tags_gen.go index 4b1b0a5930f1..a0af77904cfe 100644 --- a/internal/service/s3/tags_gen.go +++ b/internal/service/s3/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/s3" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []*s3.Tag { // setTagsOut sets s3 service tags in Context. func setTagsOut(ctx context.Context, tags []*s3.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/s3/tagsv2_gen.go b/internal/service/s3/tagsv2_gen.go index 10215b864dd0..afebf66c6f96 100644 --- a/internal/service/s3/tagsv2_gen.go +++ b/internal/service/s3/tagsv2_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" awstypes "github.com/aws/aws-sdk-go-v2/service/s3/types" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsInV2(ctx context.Context) []awstypes.Tag { // setTagsOutV2 sets s3 service tags in Context. func setTagsOutV2(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(keyValueTagsV2(ctx, tags)) + inContext.TagsOut = option.Some(keyValueTagsV2(ctx, tags)) } } diff --git a/internal/service/s3control/tags_gen.go b/internal/service/s3control/tags_gen.go index 6f7ad5ae7340..73f609196b26 100644 --- a/internal/service/s3control/tags_gen.go +++ b/internal/service/s3control/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -44,7 +44,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -94,7 +94,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets s3control service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/s3control/tagss3_gen.go b/internal/service/s3control/tagss3_gen.go index 392c1a96c751..fd263478cea3 100644 --- a/internal/service/s3control/tagss3_gen.go +++ b/internal/service/s3control/tagss3_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" awstypes "github.com/aws/aws-sdk-go-v2/service/s3control/types" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsInS3(ctx context.Context) []awstypes.S3Tag { // setTagsOutS3 sets s3control service tags in Context. func setTagsOutS3(ctx context.Context, tags []awstypes.S3Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(keyValueTagsS3(ctx, tags)) + inContext.TagsOut = option.Some(keyValueTagsS3(ctx, tags)) } } diff --git a/internal/service/sagemaker/tags_gen.go b/internal/service/sagemaker/tags_gen.go index a3bebc7668ea..fe4c6376f450 100644 --- a/internal/service/sagemaker/tags_gen.go +++ b/internal/service/sagemaker/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*sagemaker.Tag { // setTagsOut sets sagemaker service tags in Context. func setTagsOut(ctx context.Context, tags []*sagemaker.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/scheduler/tags_gen.go b/internal/service/scheduler/tags_gen.go index 37e29093065c..875f085cc856 100644 --- a/internal/service/scheduler/tags_gen.go +++ b/internal/service/scheduler/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets scheduler service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/schemas/tags_gen.go b/internal/service/schemas/tags_gen.go index 1206225447e9..3e3950f2c0ce 100644 --- a/internal/service/schemas/tags_gen.go +++ b/internal/service/schemas/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets schemas service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/secretsmanager/tags_gen.go b/internal/service/secretsmanager/tags_gen.go index 005ec0242fe9..5ebd56f12451 100644 --- a/internal/service/secretsmanager/tags_gen.go +++ b/internal/service/secretsmanager/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -60,7 +60,7 @@ func getTagsIn(ctx context.Context) []*secretsmanager.Tag { // setTagsOut sets secretsmanager service tags in Context. func setTagsOut(ctx context.Context, tags []*secretsmanager.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/securityhub/tags_gen.go b/internal/service/securityhub/tags_gen.go index 914341919917..ac8e8d709362 100644 --- a/internal/service/securityhub/tags_gen.go +++ b/internal/service/securityhub/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets securityhub service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/securitylake/tags_gen.go b/internal/service/securitylake/tags_gen.go index 9373d7c9c84c..b93124387c8e 100644 --- a/internal/service/securitylake/tags_gen.go +++ b/internal/service/securitylake/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets securitylake service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/serverlessrepo/tags_gen.go b/internal/service/serverlessrepo/tags_gen.go index 109d9bd98820..57f849304750 100644 --- a/internal/service/serverlessrepo/tags_gen.go +++ b/internal/service/serverlessrepo/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/serverlessapplicationrepository" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []*serverlessapplicationrepository.Tag { // setTagsOut sets serverlessrepo service tags in Context. func setTagsOut(ctx context.Context, tags []*serverlessapplicationrepository.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/servicecatalog/tags_gen.go b/internal/service/servicecatalog/tags_gen.go index 92386011e0ce..733146abd1fa 100644 --- a/internal/service/servicecatalog/tags_gen.go +++ b/internal/service/servicecatalog/tags_gen.go @@ -7,7 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/servicecatalog" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) // []*SERVICE.Tag handling @@ -54,6 +54,6 @@ func getTagsIn(ctx context.Context) []*servicecatalog.Tag { // setTagsOut sets servicecatalog service tags in Context. func setTagsOut(ctx context.Context, tags []*servicecatalog.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/servicediscovery/tags_gen.go b/internal/service/servicediscovery/tags_gen.go index efcb4e2e37ca..77e4e8e7d175 100644 --- a/internal/service/servicediscovery/tags_gen.go +++ b/internal/service/servicediscovery/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*servicediscovery.Tag { // setTagsOut sets servicediscovery service tags in Context. func setTagsOut(ctx context.Context, tags []*servicediscovery.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/sesv2/tags_gen.go b/internal/service/sesv2/tags_gen.go index b009f7b8e418..0c92211ca232 100644 --- a/internal/service/sesv2/tags_gen.go +++ b/internal/service/sesv2/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets sesv2 service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/sfn/tags_gen.go b/internal/service/sfn/tags_gen.go index b5baaf5fd8e9..e05a11c12775 100644 --- a/internal/service/sfn/tags_gen.go +++ b/internal/service/sfn/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*sfn.Tag { // setTagsOut sets sfn service tags in Context. func setTagsOut(ctx context.Context, tags []*sfn.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/shield/tags_gen.go b/internal/service/shield/tags_gen.go index ef63675ea325..9c979fcdead8 100644 --- a/internal/service/shield/tags_gen.go +++ b/internal/service/shield/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*shield.Tag { // setTagsOut sets shield service tags in Context. func setTagsOut(ctx context.Context, tags []*shield.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/signer/tags_gen.go b/internal/service/signer/tags_gen.go index 597850260c6a..ef0b5513900f 100644 --- a/internal/service/signer/tags_gen.go +++ b/internal/service/signer/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets signer service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/sns/tags_gen.go b/internal/service/sns/tags_gen.go index 4babb3b995b6..c8e34e4324aa 100644 --- a/internal/service/sns/tags_gen.go +++ b/internal/service/sns/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets sns service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/sqs/tags_gen.go b/internal/service/sqs/tags_gen.go index d334498a8101..7545ba066bcf 100644 --- a/internal/service/sqs/tags_gen.go +++ b/internal/service/sqs/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets sqs service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ssm/tags_gen.go b/internal/service/ssm/tags_gen.go index 3a27c7ef3088..bb532d2fdb84 100644 --- a/internal/service/ssm/tags_gen.go +++ b/internal/service/ssm/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -44,7 +44,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -94,7 +94,7 @@ func getTagsIn(ctx context.Context) []*ssm.Tag { // setTagsOut sets ssm service tags in Context. func setTagsOut(ctx context.Context, tags []*ssm.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ssmcontacts/tags_gen.go b/internal/service/ssmcontacts/tags_gen.go index aee2da12a99e..65264291891a 100644 --- a/internal/service/ssmcontacts/tags_gen.go +++ b/internal/service/ssmcontacts/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets ssmcontacts service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ssmincidents/tags_gen.go b/internal/service/ssmincidents/tags_gen.go index 14bd132c95cb..bacb2daa8d87 100644 --- a/internal/service/ssmincidents/tags_gen.go +++ b/internal/service/ssmincidents/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets ssmincidents service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/ssoadmin/tags_gen.go b/internal/service/ssoadmin/tags_gen.go index 08a4c71d8102..52af68718a00 100644 --- a/internal/service/ssoadmin/tags_gen.go +++ b/internal/service/ssoadmin/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -44,7 +44,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier, res } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -94,7 +94,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets ssoadmin service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/storagegateway/tags_gen.go b/internal/service/storagegateway/tags_gen.go index d92eba0c188c..6b49703edee9 100644 --- a/internal/service/storagegateway/tags_gen.go +++ b/internal/service/storagegateway/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*storagegateway.Tag { // setTagsOut sets storagegateway service tags in Context. func setTagsOut(ctx context.Context, tags []*storagegateway.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/swf/tags_gen.go b/internal/service/swf/tags_gen.go index 108b89f699b9..3f7a01a3fc7a 100644 --- a/internal/service/swf/tags_gen.go +++ b/internal/service/swf/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.ResourceTag { // setTagsOut sets swf service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.ResourceTag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/synthetics/tags_gen.go b/internal/service/synthetics/tags_gen.go index 509a6d11d198..70300311969b 100644 --- a/internal/service/synthetics/tags_gen.go +++ b/internal/service/synthetics/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets synthetics service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/timestreamwrite/tags_gen.go b/internal/service/timestreamwrite/tags_gen.go index 5e9bd1f85718..b42e144cd953 100644 --- a/internal/service/timestreamwrite/tags_gen.go +++ b/internal/service/timestreamwrite/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets timestreamwrite service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/transcribe/tags_gen.go b/internal/service/transcribe/tags_gen.go index b8c34ab5612c..c35ebcb99aec 100644 --- a/internal/service/transcribe/tags_gen.go +++ b/internal/service/transcribe/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets transcribe service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/transfer/tags_gen.go b/internal/service/transfer/tags_gen.go index bc053b180e40..e243b288652b 100644 --- a/internal/service/transfer/tags_gen.go +++ b/internal/service/transfer/tags_gen.go @@ -13,7 +13,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -63,7 +63,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -113,7 +113,7 @@ func getTagsIn(ctx context.Context) []*transfer.Tag { // setTagsOut sets transfer service tags in Context. func setTagsOut(ctx context.Context, tags []*transfer.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/vpclattice/tags_gen.go b/internal/service/vpclattice/tags_gen.go index 4664ccc439c4..43af4aaa0cf0 100644 --- a/internal/service/vpclattice/tags_gen.go +++ b/internal/service/vpclattice/tags_gen.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -42,7 +42,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -75,7 +75,7 @@ func getTagsIn(ctx context.Context) map[string]string { // setTagsOut sets vpclattice service tags in Context. func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/waf/tags_gen.go b/internal/service/waf/tags_gen.go index 32d8eaa151c5..6e1b02a20dec 100644 --- a/internal/service/waf/tags_gen.go +++ b/internal/service/waf/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*waf.Tag { // setTagsOut sets waf service tags in Context. func setTagsOut(ctx context.Context, tags []*waf.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/wafregional/tags_gen.go b/internal/service/wafregional/tags_gen.go index b38eb8154b50..768e76acd8f1 100644 --- a/internal/service/wafregional/tags_gen.go +++ b/internal/service/wafregional/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*waf.Tag { // setTagsOut sets wafregional service tags in Context. func setTagsOut(ctx context.Context, tags []*waf.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/wafv2/tags_gen.go b/internal/service/wafv2/tags_gen.go index 1f0977161770..53127a9d190a 100644 --- a/internal/service/wafv2/tags_gen.go +++ b/internal/service/wafv2/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []*wafv2.Tag { // setTagsOut sets wafv2 service tags in Context. func setTagsOut(ctx context.Context, tags []*wafv2.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/worklink/tags_gen.go b/internal/service/worklink/tags_gen.go index e7ccf2d60644..a1d41f474ce9 100644 --- a/internal/service/worklink/tags_gen.go +++ b/internal/service/worklink/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -76,7 +76,7 @@ func getTagsIn(ctx context.Context) map[string]*string { // setTagsOut sets worklink service tags in Context. func setTagsOut(ctx context.Context, tags map[string]*string) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/workspaces/tags_gen.go b/internal/service/workspaces/tags_gen.go index abd954b396c6..c06abd55fd26 100644 --- a/internal/service/workspaces/tags_gen.go +++ b/internal/service/workspaces/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets workspaces service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } diff --git a/internal/service/xray/tags_gen.go b/internal/service/xray/tags_gen.go index 65818fa03e11..338efc559328 100644 --- a/internal/service/xray/tags_gen.go +++ b/internal/service/xray/tags_gen.go @@ -12,7 +12,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -43,7 +43,7 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri } if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return nil @@ -93,7 +93,7 @@ func getTagsIn(ctx context.Context) []awstypes.Tag { // setTagsOut sets xray service tags in Context. func setTagsOut(ctx context.Context, tags []awstypes.Tag) { if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) + inContext.TagsOut = option.Some(KeyValueTags(ctx, tags)) } } From 5060bd23f6ac1f888f6d6d4cf42423f3f57c676d Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 16:43:54 -0500 Subject: [PATCH 29/56] provider: 'internal/option' -> 'internal/types/option'. --- internal/provider/fwprovider/intercept.go | 5 +++-- internal/provider/intercept.go | 5 +++-- internal/provider/tags_interceptor_test.go | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/provider/fwprovider/intercept.go b/internal/provider/fwprovider/intercept.go index ef97b51c2308..3c93454fb2a9 100644 --- a/internal/provider/fwprovider/intercept.go +++ b/internal/provider/fwprovider/intercept.go @@ -18,6 +18,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -348,7 +349,7 @@ func (r tagsResourceInterceptor) create(ctx context.Context, request resource.Cr // Remove system tags. tags = tags.IgnoreSystem(inContext.ServicePackageName) - tagsInContext.TagsIn = types.Some(tags) + tagsInContext.TagsIn = option.Some(tags) case After: // Set values for unknowns. // Remove any provider configured ignore_tags and system tags from those passed to the service API. @@ -513,7 +514,7 @@ func (r tagsResourceInterceptor) update(ctx context.Context, request resource.Up // Remove system tags. tags = tags.IgnoreSystem(inContext.ServicePackageName) - tagsInContext.TagsIn = types.Some(tags) + tagsInContext.TagsIn = option.Some(tags) var oldTagsAll, newTagsAll fwtypes.Map diff --git a/internal/provider/intercept.go b/internal/provider/intercept.go index f73190ce169b..7a5ad365f423 100644 --- a/internal/provider/intercept.go +++ b/internal/provider/intercept.go @@ -17,6 +17,7 @@ import ( tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" "github.com/hashicorp/terraform-provider-aws/names" ) @@ -241,7 +242,7 @@ func (r tagsResourceInterceptor) run(ctx context.Context, d schemaResourceData, // Remove system tags. tags = tags.IgnoreSystem(inContext.ServicePackageName) - tagsInContext.TagsIn = types.Some(tags) + tagsInContext.TagsIn = option.Some(tags) if why == Create { break @@ -413,7 +414,7 @@ func (r tagsDataSourceInterceptor) run(ctx context.Context, d schemaResourceData case Read: // Get the data source's configured tags. tags := tftags.New(ctx, d.Get(names.AttrTags).(map[string]interface{})) - tagsInContext.TagsIn = types.Some(tags) + tagsInContext.TagsIn = option.Some(tags) } case After: // Set tags and tags_all in state after CRU. diff --git a/internal/provider/tags_interceptor_test.go b/internal/provider/tags_interceptor_test.go index feb3bccb56b1..c021fe9c056d 100644 --- a/internal/provider/tags_interceptor_test.go +++ b/internal/provider/tags_interceptor_test.go @@ -13,6 +13,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/types" + "github.com/hashicorp/terraform-provider-aws/internal/types/option" ) type mockService struct{} @@ -42,7 +43,7 @@ func (t *mockService) ListTags(ctx context.Context, meta any, identifier string) "tag1": "value1", }) if inContext, ok := tftags.FromContext(ctx); ok { - inContext.TagsOut = types.Some(tags) + inContext.TagsOut = option.Some(tags) } return errors.New("test error") From 2f620b8efaea84cc25333f477bf1efca3815433f Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Fri, 15 Dec 2023 17:14:16 -0500 Subject: [PATCH 30/56] stack.Peek() and Pop() return Option. --- .../experimental/depgraph/dependency_graph.go | 2 +- internal/types/stack/stack.go | 18 ++++++++++-------- internal/types/stack/stack_test.go | 14 +++++++------- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/internal/experimental/depgraph/dependency_graph.go b/internal/experimental/depgraph/dependency_graph.go index e599f1220599..1b877b170926 100644 --- a/internal/experimental/depgraph/dependency_graph.go +++ b/internal/experimental/depgraph/dependency_graph.go @@ -212,7 +212,7 @@ func depthFirstSearch(edges map[string][]string) func(s string) ([]string, error }) for todo.Len() > 0 { - current := todo.Peek() + current := todo.Peek().MustUnwrap() node := current.node if !current.processed { diff --git a/internal/types/stack/stack.go b/internal/types/stack/stack.go index 72f1fdbb2e51..b74a71b2f0da 100644 --- a/internal/types/stack/stack.go +++ b/internal/types/stack/stack.go @@ -3,6 +3,10 @@ package stack +import ( + "github.com/hashicorp/terraform-provider-aws/internal/types/option" +) + type stack[T any] struct { top *stackNode[T] length int @@ -24,27 +28,25 @@ func (s *stack[T]) Len() int { } // Peek returns the top item on the stack. -func (s *stack[T]) Peek() T { +func (s *stack[T]) Peek() option.Option[T] { if s.length == 0 { - var zero T - return zero + return option.None[T]() } - return s.top.value + return option.Some(s.top.value) } // Pop returns the top item on the stack and removes it from the stack. -func (s *stack[T]) Pop() T { +func (s *stack[T]) Pop() option.Option[T] { if s.length == 0 { - var zero T - return zero + return option.None[T]() } top := s.top s.top = top.prev s.length-- - return top.value + return option.Some(top.value) } // Push puts the specified item on the top of the stack. diff --git a/internal/types/stack/stack_test.go b/internal/types/stack/stack_test.go index 6a912e02a63a..99a80f906ea0 100644 --- a/internal/types/stack/stack_test.go +++ b/internal/types/stack/stack_test.go @@ -16,11 +16,11 @@ func TestStack(t *testing.T) { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.Peek(), 0; got != expected { + if got, expected := s.Peek().IsNone(), true; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Pop(), 0; got != expected { + if got, expected := s.Pop().IsSome(), false; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } @@ -30,11 +30,11 @@ func TestStack(t *testing.T) { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.Peek(), 1; got != expected { + if got, expected := s.Peek().MustUnwrap(), 1; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Pop(), 1; got != expected { + if got, expected := s.Pop().MustUnwrap(), 1; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } @@ -49,15 +49,15 @@ func TestStack(t *testing.T) { t.Fatalf("incorrect length. Expected: %d, got: %d", expected, got) } - if got, expected := s.Peek(), 3; got != expected { + if got, expected := s.Peek().MustUnwrap(), 3; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Pop(), 3; got != expected { + if got, expected := s.Pop().MustUnwrap(), 3; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } - if got, expected := s.Peek(), 2; got != expected { + if got, expected := s.Peek().MustUnwrap(), 2; got != expected { t.Fatalf("incorrect value. Expected: %v, got: %v", expected, got) } } From 1e47a79292222dd43c17949ade67aa3a34572c44 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 08:04:35 -0500 Subject: [PATCH 31/56] json.RemoveEmptyFields: Use a stack. --- internal/json/remove.go | 15 ++--- internal/json/remove_test.go | 107 +++++++++++++++++------------------ 2 files changed, 61 insertions(+), 61 deletions(-) diff --git a/internal/json/remove.go b/internal/json/remove.go index 1191adf2e070..167b9cee26ac 100644 --- a/internal/json/remove.go +++ b/internal/json/remove.go @@ -7,6 +7,7 @@ import ( "bytes" "github.com/hashicorp/terraform-provider-aws/internal/json/ujson" + "github.com/hashicorp/terraform-provider-aws/internal/types/stack" ) // RemoveFields removes the specified fields from a valid JSON string. @@ -60,7 +61,7 @@ func RemoveEmptyFields(in string) string { // Returns the new JSON string and the number of empty fields removed. func removeEmptyFields(in string) (string, int) { out := make([]byte, 0, len(in)) - lenBefore := 0 + before := stack.New[int]() removed := 0 err := ujson.Walk([]byte(in), func(_ int, key, value []byte) bool { @@ -72,21 +73,21 @@ func removeEmptyFields(in string) (string, int) { case 'n': // Null (null) skip = true case '[': // Start of array - lenBefore = n + before.Push(n) case ']': // End of array + i := before.Pop().MustUnwrap() if out[n-1] == '[' { // Truncate output. - out = out[:lenBefore] - lenBefore = 0 + out = out[:i] skip = true } case '{': // Start of object - lenBefore = n + before.Push(n) case '}': // End of object + i := before.Pop().MustUnwrap() if n > 1 && out[n-1] == '{' { // Truncate output. - out = out[:lenBefore] - lenBefore = 0 + out = out[:i] skip = true } } diff --git a/internal/json/remove_test.go b/internal/json/remove_test.go index 629054ed1444..0f6e39e25973 100644 --- a/internal/json/remove_test.go +++ b/internal/json/remove_test.go @@ -52,67 +52,66 @@ func TestRemoveEmptyFields(t *testing.T) { input string want string }{ - // { - // testName: "empty JSON", - // input: "{}", - // want: "{}", - // }, - // { - // testName: "single non-empty simple field", - // input: `{"key": 42}`, - // want: `{"key":42}`, - // }, - // { - // testName: "single non-empty array field", - // input: `{"key": [1, true, "answer"]}`, - // want: `{"key":[1,true,"answer"]}`, - // }, - // { - // testName: "single non-empty object field", - // input: `{"key": {"inner": true}}`, - // want: `{"key":{"inner":true}}`, - // }, - // { - // testName: "single null field", - // input: `{"key": null}`, - // want: `{}`, - // }, - // { - // testName: "single empty array field", - // input: `{"key": []}`, - // want: `{}`, - // }, - // { - // testName: "single empty object field", - // input: `{"key": {}}`, - // want: `{}`, - // }, - // { - // testName: "empty fields deeply nested 1 pass", - // input: `{"key": {"a": [1, 2], "b": [], "c": {"d": true, "e": null}}}`, - // want: `{"key":{"a":[1,2],"c":{"d":true}}}`, - // }, - // { - // testName: "empty fields deeply nested 2 passes", - // input: `{"key": {"a": [1, 2], "b": {}, "c": {"d": null}}}`, - // want: `{"key":{"a":[1,2]}}`, - // }, { - testName: "empty fields deeply nested 2 passes many empty objects", - // input: `{"key": {"a": [1, 2], "b": {}, "c": {"d": {}}, "e": {}, "f": 99}}`, - input: `{"key": {"a": [1, 2], "c": {"d": {}}, "f": 99}}`, - want: `{"key":{"a":[1,2],"f":99}}`, + testName: "empty JSON", + input: "{}", + want: "{}", + }, + { + testName: "single non-empty simple field", + input: `{"key": 42}`, + want: `{"key":42}`, + }, + { + testName: "single non-empty array field", + input: `{"key": [1, true, "answer"]}`, + want: `{"key":[1,true,"answer"]}`, + }, + { + testName: "single non-empty object field", + input: `{"key": {"inner": true}}`, + want: `{"key":{"inner":true}}`, + }, + { + testName: "single null field", + input: `{"key": null}`, + want: `{}`, + }, + { + testName: "single empty array field", + input: `{"key": []}`, + want: `{}`, + }, + { + testName: "single empty object field", + input: `{"key": {}}`, + want: `{}`, + }, + { + testName: "empty fields deeply nested 1 pass", + input: `{"key": {"a": [1, 2], "b": [], "c": {"d": true, "e": null}}}`, + want: `{"key":{"a":[1,2],"c":{"d":true}}}`, + }, + { + testName: "empty fields deeply nested 2 passes", + input: `{"key": {"a": [1, 2], "b": {}, "c": {"d": null}}}`, + want: `{"key":{"a":[1,2]}}`, + }, + { + testName: "empty fields deeply nested many empty objects", + input: `{"key": {"a": [1, 2], "b": {}, "c": {"d": {}}, "e": {}, "f": 99}}`, + want: `{"key":{"a":[1,2],"f":99}}`, }, { testName: "empty fields nested empty arrays", input: `{"key": {"a": [1, [2], [], [[]], 3]}}`, want: `{"key":{"a":[1,[2],3]}}`, }, - // { - // testName: "real life example", - // input: `{"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"TTSettings":{"TTS3Settings":{},"TTRecordSettings":{}},"Logging":{},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"LoopbackPreventionSettings":{},"CharacterSetSettings":{"CharacterSetSupport":{}},"BeforeImageSettings":{},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}}`, - // want: `{"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}}`, - // }, + { + testName: "real life example", + input: `{"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"TTSettings":{"TTS3Settings":{},"TTRecordSettings":{}},"Logging":{},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"LoopbackPreventionSettings":{},"CharacterSetSettings":{"CharacterSetSupport":{}},"BeforeImageSettings":{},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}}`, + want: `{"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}}`, + }, } for _, testCase := range testCases { From 9c30cb0993d405854bfb40c1af180a1b1c5e95cb Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 08:30:07 -0500 Subject: [PATCH 32/56] json.RemoveEmptyFields: 'string' -> '[]byte'. --- internal/json/remove.go | 10 +++++----- internal/json/remove_test.go | 4 +--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/internal/json/remove.go b/internal/json/remove.go index 167b9cee26ac..c6e5fa6c4ff5 100644 --- a/internal/json/remove.go +++ b/internal/json/remove.go @@ -45,7 +45,7 @@ func RemoveFields(in string, fields ...string) string { } // RemoveEmptyFields removes all empty fields from a valid JSON string. -func RemoveEmptyFields(in string) string { +func RemoveEmptyFields(in []byte) []byte { n := 0 for { in, n = removeEmptyFields(in) @@ -59,12 +59,12 @@ func RemoveEmptyFields(in string) string { // removeEmptyFields removes `null`, empty array (`[]`) and empty object (`{}`) fields from a valid JSON string. // Returns the new JSON string and the number of empty fields removed. -func removeEmptyFields(in string) (string, int) { +func removeEmptyFields(in []byte) ([]byte, int) { out := make([]byte, 0, len(in)) before := stack.New[int]() removed := 0 - err := ujson.Walk([]byte(in), func(_ int, key, value []byte) bool { + err := ujson.Walk(in, func(_ int, key, value []byte) bool { n := len(out) // For valid JSON, value will never be empty. @@ -110,8 +110,8 @@ func removeEmptyFields(in string) (string, int) { }) if err != nil { - return "", 0 + return nil, 0 } - return string(out), removed + return out, removed } diff --git a/internal/json/remove_test.go b/internal/json/remove_test.go index 0f6e39e25973..0e4b8445e307 100644 --- a/internal/json/remove_test.go +++ b/internal/json/remove_test.go @@ -119,11 +119,9 @@ func TestRemoveEmptyFields(t *testing.T) { t.Run(testCase.testName, func(t *testing.T) { t.Parallel() - if got, want := RemoveEmptyFields(testCase.input), testCase.want; got != want { + if got, want := RemoveEmptyFields([]byte(testCase.input)), testCase.want; string(got) != want { t.Errorf("RemoveEmptyFields(%q) = %q, want %q", testCase.input, got, want) } }) } } - -// {"TargetMetadata":{"SupportLobs":true,"LimitedSizeLobMode":true,"LobMaxSize":32},"FullLoadSettings":{"TargetTablePrepMode":"DROP_AND_CREATE","MaxFullLoadSubTasks":8,"TransactionConsistencyTimeout":600,"CommitRate":10000},"TTSettings":{"TTS3Settings":{},"TTRecordSettings":{}},"Logging":{},"ControlTablesSettings":{"HistoryTimeslotInMinutes":5},"StreamBufferSettings":{"StreamBufferCount":3,"StreamBufferSizeInMB":8},"ChangeProcessingTuning":{"BatchApplyPreserveTransaction":true,"BatchApplyTimeoutMin":1,"BatchApplyTimeoutMax":30,"BatchApplyMemoryLimit":500,"MinTransactionSize":1000,"CommitTimeout":1,"MemoryLimitTotal":1024,"MemoryKeepTime":60,"StatementCacheSize":50},"ChangeProcessingDdlHandlingPolicy":{"HandleSourceTableDropped":true,"HandleSourceTableTruncated":true,"HandleSourceTableAltered":true},"LoopbackPreventionSettings":{},"CharacterSetSettings":{"CharacterSetSupport":{}},"BeforeImageSettings":{},"ErrorBehavior":{"DataErrorPolicy":"LOG_ERROR","DataTruncationErrorPolicy":"LOG_ERROR","DataErrorEscalationPolicy":"SUSPEND_TABLE","TableErrorPolicy":"SUSPEND_TABLE","TableErrorEscalationPolicy":"STOP_TASK","RecoverableErrorCount":-1,"RecoverableErrorInterval":5,"RecoverableErrorThrottling":true,"RecoverableErrorThrottlingMax":1800,"ApplyErrorDeletePolicy":"IGNORE_RECORD","ApplyErrorInsertPolicy":"LOG_ERROR","ApplyErrorUpdatePolicy":"LOG_ERROR","ApplyErrorEscalationPolicy":"LOG_ERROR","FullLoadIgnoreConflicts":true},"ValidationSettings":{"ValidationMode":"ROW_LEVEL","ThreadCount":5,"PartitionSize":10000,"FailureMaxCount":10000,"TableFailureMaxCount":1000}} From 87b48416f62936300e20a85f748579417b245153 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:07:46 -0500 Subject: [PATCH 33/56] dms: Add 'suppressEquivalentTaskSettings'. --- internal/service/dms/replication_config.go | 6 ++---- internal/service/dms/task_settings_json.go | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index 6d5862550df2..d2468d9b0823 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -116,7 +116,7 @@ func ResourceReplicationConfig() *schema.Resource { Optional: true, Computed: true, ValidateFunc: validation.StringIsJSON, - DiffSuppressFunc: verify.SuppressEquivalentJSONDiffs, + DiffSuppressFunc: suppressEquivalentTaskSettings, DiffSuppressOnRefresh: true, }, "replication_type": { @@ -233,9 +233,7 @@ func resourceReplicationConfigRead(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "setting compute_config: %s", err) } d.Set("replication_config_identifier", replicationConfig.ReplicationConfigIdentifier) - v := flattenTaskSettings(aws.StringValue(replicationConfig.ReplicationSettings)) - log.Printf("[INFO] replication_settings=%v", v) - d.Set("replication_settings", v) + d.Set("replication_settings", replicationConfig.ReplicationSettings) d.Set("replication_type", replicationConfig.ReplicationType) d.Set("source_endpoint_arn", replicationConfig.SourceEndpointArn) d.Set("supplemental_settings", replicationConfig.SupplementalSettings) diff --git a/internal/service/dms/task_settings_json.go b/internal/service/dms/task_settings_json.go index 672759213541..f3cb248a73e0 100644 --- a/internal/service/dms/task_settings_json.go +++ b/internal/service/dms/task_settings_json.go @@ -5,6 +5,10 @@ package dms import ( "encoding/json" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + tfjson "github.com/hashicorp/terraform-provider-aws/internal/json" + "github.com/hashicorp/terraform-provider-aws/internal/verify" ) // https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Tasks.CustomizingTasks.TaskSettings.html#CHAP_Tasks.CustomizingTasks.TaskSettings.Example @@ -143,7 +147,10 @@ type taskSettings struct { } `json:"ValidationSettings,omitempty"` } -func flattenTaskSettings(apiObject string) string { +// normalizeTaskSettings returns a normalized DMS task settings JSON string. +// Read-only (non-configurable) fields are removed by using the published "schema". +// Empty fields are then removed. +func normalizeTaskSettings(apiObject string) string { var taskSettings taskSettings if err := json.Unmarshal([]byte(apiObject), &taskSettings); err != nil { @@ -153,6 +160,17 @@ func flattenTaskSettings(apiObject string) string { if b, err := json.Marshal(&taskSettings); err != nil { return apiObject } else { - return string(b) + return string(tfjson.RemoveEmptyFields(b)) + } +} + +// suppressEquivalentTaskSettings provides custom difference suppression for task settings. +func suppressEquivalentTaskSettings(k, old, new string, d *schema.ResourceData) bool { + if !json.Valid([]byte(old)) || !json.Valid([]byte(new)) { + return old == new } + + old, new = normalizeTaskSettings(old), normalizeTaskSettings(new) + + return verify.JSONStringsEqual(old, new) } From 80ff3ae2ba370938dbc167eee9262a381126430d Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:12:32 -0500 Subject: [PATCH 34/56] dms: Add 'setLastReplicationError'. --- internal/service/dms/replication_config.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index d2468d9b0823..adda23214e95 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -5,6 +5,7 @@ package dms import ( "context" + "errors" "fmt" "log" "time" @@ -19,6 +20,7 @@ import ( "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" "github.com/hashicorp/terraform-provider-aws/internal/flex" + tfslices "github.com/hashicorp/terraform-provider-aws/internal/slices" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -462,6 +464,22 @@ func statusReplication(ctx context.Context, conn *dms.DatabaseMigrationService, } } +func setLastReplicationError(err error, replication *dms.Replication) { + var errs []error + + errs = append(errs, tfslices.ApplyToAll(replication.FailureMessages, func(v *string) error { + if v := aws.StringValue(v); v != "" { + return errors.New(v) + } + return nil + })...) + if v := aws.StringValue(replication.StopReason); v != "" { + errs = append(errs, errors.New(v)) + } + + tfresource.SetLastError(err, errors.Join(errs...)) +} + func waitReplicationRunning(ctx context.Context, conn *dms.DatabaseMigrationService, arn string, timeout time.Duration) (*dms.Replication, error) { stateConf := &retry.StateChangeConf{ Pending: []string{ @@ -484,6 +502,7 @@ func waitReplicationRunning(ctx context.Context, conn *dms.DatabaseMigrationServ outputRaw, err := stateConf.WaitForStateContext(ctx) if output, ok := outputRaw.(*dms.Replication); ok { + setLastReplicationError(err, output) return output, err } @@ -503,6 +522,7 @@ func waitReplicationStopped(ctx context.Context, conn *dms.DatabaseMigrationServ outputRaw, err := stateConf.WaitForStateContext(ctx) if output, ok := outputRaw.(*dms.Replication); ok { + setLastReplicationError(err, output) return output, err } @@ -522,6 +542,7 @@ func waitReplicationDeleted(ctx context.Context, conn *dms.DatabaseMigrationServ outputRaw, err := stateConf.WaitForStateContext(ctx) if output, ok := outputRaw.(*dms.Replication); ok { + setLastReplicationError(err, output) return output, err } From 2a313df306e4769b2a68cb666e50c0cf34804053 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:15:46 -0500 Subject: [PATCH 35/56] r/aws_dms_replication_task: Use 'dms.MigrationTypeValue_Values()'. --- internal/service/dms/replication_task.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index aeb3ae87f0f7..5c36d043f0fd 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -53,13 +53,9 @@ func ResourceReplicationTask() *schema.Resource { ConflictsWith: []string{"cdc_start_position"}, }, "migration_type": { - Type: schema.TypeString, - Required: true, - ValidateFunc: validation.StringInSlice([]string{ - dms.MigrationTypeValueFullLoad, - dms.MigrationTypeValueCdc, - dms.MigrationTypeValueFullLoadAndCdc, - }, false), + Type: schema.TypeString, + Required: true, + ValidateFunc: validation.StringInSlice(dms.MigrationTypeValue_Values(), false), }, "replication_instance_arn": { Type: schema.TypeString, From 7d8b6096c87b8e408c4217fc8664d5167cafc93b Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:33:08 -0500 Subject: [PATCH 36/56] Tweak CHANGELOG entry. --- .changelog/34356.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/34356.txt b/.changelog/34356.txt index 1dd0e3aafe16..bf5c6d0a2a4c 100644 --- a/.changelog/34356.txt +++ b/.changelog/34356.txt @@ -1,3 +1,3 @@ ```release-note:bug -resource/aws_dms_replication_config: Remove read-only properties from `replication_settings` to suppress diffs +resource/aws_dms_replication_config: Prevent erroneous diffs on `replication_settings` ``` From 25840120d10b3be28dd4afa7b4437da471aa0236 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:36:58 -0500 Subject: [PATCH 37/56] Tweak CHANGELOG entry. --- .changelog/31917.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/31917.txt b/.changelog/31917.txt index b6f0cbda065c..a0a0bc638d7b 100644 --- a/.changelog/31917.txt +++ b/.changelog/31917.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/aws_dms_replication_task: allow cdc_start_time parameter to use RFC3339 formatted date additionally to a UNIX timestamp. +resource/aws_dms_replication_task: Allow `cdc_start_time` to use [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) formatted dates in addition to UNIX timestamps ``` \ No newline at end of file From be6996b1ec2449d7c900c2f65dbf94316fc1d912 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:38:36 -0500 Subject: [PATCH 38/56] Tweak documentation. --- website/docs/r/dms_replication_task.html.markdown | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/website/docs/r/dms_replication_task.html.markdown b/website/docs/r/dms_replication_task.html.markdown index 62116187d921..84ee9d4c7524 100644 --- a/website/docs/r/dms_replication_task.html.markdown +++ b/website/docs/r/dms_replication_task.html.markdown @@ -37,12 +37,8 @@ resource "aws_dms_replication_task" "test" { This resource supports the following arguments: -* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) - operation to start. The value can be a RFC3339 formatted date, a checkpoint, or a LSN/SCN format depending on the - source engine. For more information, - see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). -* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) RFC3339 formatted date string or UNIX timestamp for - the start of the Change Data Capture (CDC) operation. +* `cdc_start_position` - (Optional, Conflicts with `cdc_start_time`) Indicates when you want a change data capture (CDC) operation to start. The value can be a RFC3339 formatted date, a checkpoint, or a LSN/SCN format depending on the source engine. For more information see [Determining a CDC native start point](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Task.CDC.html#CHAP_Task.CDC.StartPoint.Native). +* `cdc_start_time` - (Optional, Conflicts with `cdc_start_position`) RFC3339 formatted date string or UNIX timestamp for the start of the Change Data Capture (CDC) operation. * `migration_type` - (Required) The migration type. Can be one of `full-load | cdc | full-load-and-cdc`. * `replication_instance_arn` - (Required) The Amazon Resource Name (ARN) of the replication instance. * `replication_task_id` - (Required) The replication task identifier. From c6c270fbf0728adfaa1084312a10eb5b6e9a4a41 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:43:53 -0500 Subject: [PATCH 39/56] Add 'timestamp.IsRFC3339()'. --- internal/types/timestamp/timestamp.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/internal/types/timestamp/timestamp.go b/internal/types/timestamp/timestamp.go index e33b72f2d57b..7af319be7315 100644 --- a/internal/types/timestamp/timestamp.go +++ b/internal/types/timestamp/timestamp.go @@ -58,3 +58,9 @@ func (t Timestamp) ValidateUTCFormat() error { return nil } + +// See https://www.rfc-editor.org/rfc/rfc3339. +func IsRFC3339(s string) bool { + _, err := time.Parse(time.RFC3339, s) + return err == nil +} From 60da92a8ddbed32c9f102635be41411bdaf46bbf Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:52:02 -0500 Subject: [PATCH 40/56] Add 'flex.StringValueToInt64Value'. --- internal/flex/flex.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/internal/flex/flex.go b/internal/flex/flex.go index f7e12d1d02b8..b5ff60a7cb02 100644 --- a/internal/flex/flex.go +++ b/internal/flex/flex.go @@ -317,11 +317,17 @@ func StringToIntValue(v *string) int { return i } -// StringValueToInt64 converts a string to a Go int64 pointer value. +// StringValueToInt64 converts a string to a Go int64 pointer. // Invalid integer strings are converted to 0. func StringValueToInt64(v string) *int64 { - i, _ := strconv.Atoi(v) - return aws.Int64(int64(i)) + return aws.Int64(StringValueToInt64Value(v)) +} + +// StringValueToInt64Value converts a string to a Go int64 value. +// Invalid integer strings are converted to 0. +func StringValueToInt64Value(v string) int64 { + i, _ := strconv.ParseInt(v, 0, 64) + return i } // Takes a string of resource attributes separated by the ResourceIdSeparator constant From 2873e18d9c3375847c14fd58218ca39bdcf27b08 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 10:55:19 -0500 Subject: [PATCH 41/56] r/aws_dms_replication_task: Correct update of 'cdc_start_time'. --- internal/service/dms/replication_task.go | 31 +++++++++--------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 29d6e57a83a4..f0ba638f710a 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -8,7 +8,6 @@ import ( "encoding/json" "fmt" "log" - "strconv" "time" "github.com/aws/aws-sdk-go/aws" @@ -20,6 +19,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" + "github.com/hashicorp/terraform-provider-aws/internal/flex" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" "github.com/hashicorp/terraform-provider-aws/internal/tfresource" "github.com/hashicorp/terraform-provider-aws/internal/verify" @@ -135,18 +135,11 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, } if v, ok := d.GetOk("cdc_start_time"); ok { - // Check if input is RFC3339 date string or UNIX timestamp. - dateTime, err := time.Parse(time.RFC3339, v.(string)) - - if err != nil { - // Not a valid RF3339 date, checking if this is a UNIX timestamp. - seconds, err := strconv.ParseInt(v.(string), 10, 64) - if err != nil { - return sdkdiag.AppendErrorf(diags, "DMS create replication task. Invalid Unix timestamp given for cdc_start_time parameter: %s", err) - } - request.CdcStartTime = aws.Time(time.Unix(seconds, 0)) + v := v.(string) + if t, err := time.Parse(time.RFC3339, v); err != nil { + request.CdcStartTime = aws.Time(time.Unix(flex.StringValueToInt64Value(v), 0)) } else { - request.CdcStartTime = aws.Time(dateTime) + request.CdcStartTime = aws.Time(t) } } @@ -232,14 +225,14 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } if d.HasChange("cdc_start_time") { - // Parse the RFC3339 date string into a time.Time object - dateTime, err := time.Parse(time.RFC3339, d.Get("cdc_start_time").(string)) - - if err != nil { - return sdkdiag.AppendErrorf(diags, "DMS update replication task. Invalid cdc_start_time value: %s", err) + if v, ok := d.GetOk("cdc_start_time"); ok { + v := v.(string) + if t, err := time.Parse(time.RFC3339, v); err != nil { + input.CdcStartTime = aws.Time(time.Unix(flex.StringValueToInt64Value(v), 0)) + } else { + input.CdcStartTime = aws.Time(t) + } } - - input.CdcStartTime = aws.Time(dateTime) } if d.HasChange("replication_task_settings") { From 5da0ce1c1d23e2bd23bd4b1b0e294655f632c1a3 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 12:00:07 -0500 Subject: [PATCH 42/56] Tweak CHANGELOG entry. --- .changelog/30721.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/30721.txt b/.changelog/30721.txt index 464706991f9f..e551608ad239 100644 --- a/.changelog/30721.txt +++ b/.changelog/30721.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/aws_dms_replication_task: Allow in-place migration between DMS instances +resource/aws_dms_replication_task: Remove [ForceNew](https://developer.hashicorp.com/terraform/plugin/sdkv2/schemas/schema-behaviors#forcenew) from `replication_instance_arn`, allowing in-place migration between DMS instances ``` \ No newline at end of file From ac5377bd5126601e715428ccae71f99385bb69a8 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 12:01:48 -0500 Subject: [PATCH 43/56] r/aws_dms_replication_task: Tidy up Create. --- internal/service/dms/replication_task.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index b9814130f912..03aa4ea2741d 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -117,12 +117,11 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DMSConn(ctx) - taskId := d.Get("replication_task_id").(string) - - request := &dms.CreateReplicationTaskInput{ + taskID := d.Get("replication_task_id").(string) + input := &dms.CreateReplicationTaskInput{ MigrationType: aws.String(d.Get("migration_type").(string)), ReplicationInstanceArn: aws.String(d.Get("replication_instance_arn").(string)), - ReplicationTaskIdentifier: aws.String(taskId), + ReplicationTaskIdentifier: aws.String(taskID), SourceEndpointArn: aws.String(d.Get("source_endpoint_arn").(string)), TableMappings: aws.String(d.Get("table_mappings").(string)), Tags: getTagsIn(ctx), @@ -130,33 +129,32 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, } if v, ok := d.GetOk("cdc_start_position"); ok { - request.CdcStartPosition = aws.String(v.(string)) + input.CdcStartPosition = aws.String(v.(string)) } if v, ok := d.GetOk("cdc_start_time"); ok { v := v.(string) if t, err := time.Parse(time.RFC3339, v); err != nil { - request.CdcStartTime = aws.Time(time.Unix(flex.StringValueToInt64Value(v), 0)) + input.CdcStartTime = aws.Time(time.Unix(flex.StringValueToInt64Value(v), 0)) } else { - request.CdcStartTime = aws.Time(t) + input.CdcStartTime = aws.Time(t) } } if v, ok := d.GetOk("replication_task_settings"); ok { - request.ReplicationTaskSettings = aws.String(v.(string)) + input.ReplicationTaskSettings = aws.String(v.(string)) } - log.Println("[DEBUG] DMS create replication task:", request) + _, err := conn.CreateReplicationTaskWithContext(ctx, input) - _, err := conn.CreateReplicationTaskWithContext(ctx, request) if err != nil { - return sdkdiag.AppendErrorf(diags, "creating DMS Replication Task (%s): %s", taskId, err) + return sdkdiag.AppendErrorf(diags, "creating DMS Replication Task (%s): %s", taskID, err) } - d.SetId(taskId) + d.SetId(taskID) if err := waitReplicationTaskReady(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { - return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) to become available: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) create: %s", d.Id(), err) } if d.Get("start_replication_task").(bool) { From abe4bc1c3f92f3c6f09d1407efd2df87da0aa761 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 12:12:55 -0500 Subject: [PATCH 44/56] r/aws_dms_replication_task: Tidy up Read. --- internal/service/dms/endpoint.go | 17 +- internal/service/dms/replication_task.go | 243 ++++++------------ .../dms/replication_task_data_source.go | 25 +- 3 files changed, 106 insertions(+), 179 deletions(-) diff --git a/internal/service/dms/endpoint.go b/internal/service/dms/endpoint.go index c150396f45c2..3beb2834d260 100644 --- a/internal/service/dms/endpoint.go +++ b/internal/service/dms/endpoint.go @@ -1681,7 +1681,7 @@ func resourceEndpointSetState(d *schema.ResourceData, endpoint *dms.Endpoint) er } func steadyEndpointReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrationService, arn string) error { - tasks, err := FindReplicationTasksByEndpointARN(ctx, conn, arn) + tasks, err := findReplicationTasksByEndpointARN(ctx, conn, arn) if err != nil { return err } @@ -1706,7 +1706,7 @@ func stopEndpointReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrati return nil, err } - tasks, err := FindReplicationTasksByEndpointARN(ctx, conn, arn) + tasks, err := findReplicationTasksByEndpointARN(ctx, conn, arn) if err != nil { return nil, err } @@ -1774,6 +1774,19 @@ func startEndpointReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrat return nil } +func findReplicationTasksByEndpointARN(ctx context.Context, conn *dms.DatabaseMigrationService, arn string) ([]*dms.ReplicationTask, error) { + input := &dms.DescribeReplicationTasksInput{ + Filters: []*dms.Filter{ + { + Name: aws.String("endpoint-arn"), + Values: aws.StringSlice([]string{arn}), + }, + }, + } + + return findReplicationTasks(ctx, conn, input) +} + func flattenOpenSearchSettings(settings *dms.ElasticsearchSettings) []map[string]interface{} { if settings == nil { return []map[string]interface{}{} diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 03aa4ea2741d..85659eb880ac 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -5,7 +5,6 @@ package dms import ( "context" - "encoding/json" "fmt" "log" "time" @@ -182,27 +181,17 @@ func resourceReplicationTaskRead(ctx context.Context, d *schema.ResourceData, me return sdkdiag.AppendErrorf(diags, "reading DMS Replication Task (%s): %s", d.Id(), err) } - if task == nil { - return sdkdiag.AppendErrorf(diags, "reading DMS Replication Task (%s): empty output", d.Id()) - } - d.Set("cdc_start_position", task.CdcStartPosition) d.Set("migration_type", task.MigrationType) d.Set("replication_instance_arn", task.ReplicationInstanceArn) d.Set("replication_task_arn", task.ReplicationTaskArn) d.Set("replication_task_id", task.ReplicationTaskIdentifier) + d.Set("replication_task_settings", task.ReplicationTaskSettings) d.Set("source_endpoint_arn", task.SourceEndpointArn) d.Set("status", task.Status) d.Set("table_mappings", task.TableMappings) d.Set("target_endpoint_arn", task.TargetEndpointArn) - settings, err := replicationTaskRemoveReadOnlySettings(aws.StringValue(task.ReplicationTaskSettings)) - if err != nil { - return sdkdiag.AppendErrorf(diags, "reading DMS Replication Task (%s): %s", d.Id(), err) - } - - d.Set("replication_task_settings", settings) - return diags } @@ -352,176 +341,40 @@ func resourceReplicationTaskDelete(ctx context.Context, d *schema.ResourceData, return diags } -func replicationTaskRemoveReadOnlySettings(settings string) (*string, error) { - var settingsData map[string]interface{} - if err := json.Unmarshal([]byte(settings), &settingsData); err != nil { - return nil, err - } - - controlTablesSettings, ok := settingsData["ControlTablesSettings"].(map[string]interface{}) - if ok { - delete(controlTablesSettings, "historyTimeslotInMinutes") - } - - logging, ok := settingsData["Logging"].(map[string]interface{}) - if ok { - delete(logging, "EnableLogContext") - delete(logging, "CloudWatchLogGroup") - delete(logging, "CloudWatchLogStream") - } - - cleanedSettings, err := json.Marshal(settingsData) - if err != nil { - return nil, err - } - - cleanedSettingsString := string(cleanedSettings) - return &cleanedSettingsString, nil -} - -func startReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { - log.Printf("[DEBUG] Starting DMS Replication Task: (%s)", id) - - task, err := FindReplicationTaskByID(ctx, conn, id) - if err != nil { - return fmt.Errorf("reading DMS Replication Task (%s): %w", id, err) - } - - if task == nil { - return fmt.Errorf("reading DMS Replication Task (%s): empty output", id) - } - - startReplicationTaskType := dms.StartReplicationTaskTypeValueStartReplication - if aws.StringValue(task.Status) != replicationTaskStatusReady { - startReplicationTaskType = dms.StartReplicationTaskTypeValueResumeProcessing - } - - _, err = conn.StartReplicationTaskWithContext(ctx, &dms.StartReplicationTaskInput{ - ReplicationTaskArn: task.ReplicationTaskArn, - StartReplicationTaskType: aws.String(startReplicationTaskType), - }) - - if err != nil { - return fmt.Errorf("starting DMS Replication Task (%s): %w", id, err) - } - - err = waitReplicationTaskRunning(ctx, conn, id) - if err != nil { - return fmt.Errorf("waiting for DMS Replication Task (%s) start: %w", id, err) - } - - return nil -} - -func stopReplicationTask(ctx context.Context, id string, conn *dms.DatabaseMigrationService) error { - log.Printf("[DEBUG] Stopping DMS Replication Task: %s", id) - - task, err := FindReplicationTaskByID(ctx, conn, id) - if err != nil { - return fmt.Errorf("reading DMS Replication Task (%s): %w", id, err) - } - - if task == nil { - return fmt.Errorf("reading DMS Replication Task (%s): empty output", id) - } - - _, err = conn.StopReplicationTaskWithContext(ctx, &dms.StopReplicationTaskInput{ - ReplicationTaskArn: task.ReplicationTaskArn, - }) - - if tfawserr.ErrMessageContains(err, dms.ErrCodeInvalidResourceStateFault, "is currently not running") { - return nil - } - - if err != nil { - return fmt.Errorf("stopping DMS Replication Task (%s): %w", id, err) - } - - err = waitReplicationTaskStopped(ctx, conn, id) - if err != nil { - return fmt.Errorf("waiting for DMS Replication Task (%s) stop: %w", id, err) - } - - return nil -} - func FindReplicationTaskByID(ctx context.Context, conn *dms.DatabaseMigrationService, id string) (*dms.ReplicationTask, error) { input := &dms.DescribeReplicationTasksInput{ Filters: []*dms.Filter{ { Name: aws.String("replication-task-id"), - Values: []*string{aws.String(id)}, // Must use d.Id() to work with import. + Values: aws.StringSlice([]string{id}), }, }, } - return FindReplicationTask(ctx, conn, input) -} - -func FindReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, input *dms.DescribeReplicationTasksInput) (*dms.ReplicationTask, error) { - var results []*dms.ReplicationTask - err := conn.DescribeReplicationTasksPagesWithContext(ctx, input, func(page *dms.DescribeReplicationTasksOutput, lastPage bool) bool { - if page == nil { - return !lastPage - } - - for _, task := range page.ReplicationTasks { - if task == nil { - continue - } - results = append(results, task) - } - - return !lastPage - }) + return findReplicationTask(ctx, conn, input) +} - if tfawserr.ErrCodeEquals(err, dms.ErrCodeResourceNotFoundFault) { - return nil, &retry.NotFoundError{ - LastError: err, - LastRequest: input, - } - } +func findReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, input *dms.DescribeReplicationTasksInput) (*dms.ReplicationTask, error) { + output, err := findReplicationTasks(ctx, conn, input) if err != nil { return nil, err } - if len(results) == 0 { - return nil, tfresource.NewEmptyResultError(input) - } - - if count := len(results); count > 1 { - return nil, tfresource.NewTooManyResultsError(count, input) - } - - return results[0], nil + return tfresource.AssertSinglePtrResult(output) } -func FindReplicationTasksByEndpointARN(ctx context.Context, conn *dms.DatabaseMigrationService, arn string) ([]*dms.ReplicationTask, error) { - input := &dms.DescribeReplicationTasksInput{ - Filters: []*dms.Filter{ - { - Name: aws.String("endpoint-arn"), - Values: []*string{aws.String(arn)}, - }, - }, - } - - var results []*dms.ReplicationTask +func findReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrationService, input *dms.DescribeReplicationTasksInput) ([]*dms.ReplicationTask, error) { + var output []*dms.ReplicationTask err := conn.DescribeReplicationTasksPagesWithContext(ctx, input, func(page *dms.DescribeReplicationTasksOutput, lastPage bool) bool { if page == nil { return !lastPage } - for _, task := range page.ReplicationTasks { - if task == nil { - continue - } - - switch aws.StringValue(task.Status) { - case replicationTaskStatusRunning, replicationTaskStatusStarting: - results = append(results, task) + for _, v := range page.ReplicationTasks { + if v != nil { + output = append(output, v) } } @@ -539,7 +392,11 @@ func FindReplicationTasksByEndpointARN(ctx context.Context, conn *dms.DatabaseMi return nil, err } - return results, nil + if err != nil { + return nil, err + } + + return output, nil } func statusReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, id string) retry.StateRefreshFunc { @@ -675,3 +532,69 @@ func waitReplicationTaskSteady(ctx context.Context, conn *dms.DatabaseMigrationS return err } + +func startReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { + log.Printf("[DEBUG] Starting DMS Replication Task: (%s)", id) + + task, err := FindReplicationTaskByID(ctx, conn, id) + if err != nil { + return fmt.Errorf("reading DMS Replication Task (%s): %w", id, err) + } + + if task == nil { + return fmt.Errorf("reading DMS Replication Task (%s): empty output", id) + } + + startReplicationTaskType := dms.StartReplicationTaskTypeValueStartReplication + if aws.StringValue(task.Status) != replicationTaskStatusReady { + startReplicationTaskType = dms.StartReplicationTaskTypeValueResumeProcessing + } + + _, err = conn.StartReplicationTaskWithContext(ctx, &dms.StartReplicationTaskInput{ + ReplicationTaskArn: task.ReplicationTaskArn, + StartReplicationTaskType: aws.String(startReplicationTaskType), + }) + + if err != nil { + return fmt.Errorf("starting DMS Replication Task (%s): %w", id, err) + } + + err = waitReplicationTaskRunning(ctx, conn, id) + if err != nil { + return fmt.Errorf("waiting for DMS Replication Task (%s) start: %w", id, err) + } + + return nil +} + +func stopReplicationTask(ctx context.Context, id string, conn *dms.DatabaseMigrationService) error { + log.Printf("[DEBUG] Stopping DMS Replication Task: %s", id) + + task, err := FindReplicationTaskByID(ctx, conn, id) + if err != nil { + return fmt.Errorf("reading DMS Replication Task (%s): %w", id, err) + } + + if task == nil { + return fmt.Errorf("reading DMS Replication Task (%s): empty output", id) + } + + _, err = conn.StopReplicationTaskWithContext(ctx, &dms.StopReplicationTaskInput{ + ReplicationTaskArn: task.ReplicationTaskArn, + }) + + if tfawserr.ErrMessageContains(err, dms.ErrCodeInvalidResourceStateFault, "is currently not running") { + return nil + } + + if err != nil { + return fmt.Errorf("stopping DMS Replication Task (%s): %w", id, err) + } + + err = waitReplicationTaskStopped(ctx, conn, id) + if err != nil { + return fmt.Errorf("waiting for DMS Replication Task (%s) stop: %w", id, err) + } + + return nil +} diff --git a/internal/service/dms/replication_task_data_source.go b/internal/service/dms/replication_task_data_source.go index ccf8a4400c3f..2eca06741512 100644 --- a/internal/service/dms/replication_task_data_source.go +++ b/internal/service/dms/replication_task_data_source.go @@ -10,9 +10,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-aws/internal/conns" - "github.com/hashicorp/terraform-provider-aws/internal/create" + "github.com/hashicorp/terraform-provider-aws/internal/errs/sdkdiag" tftags "github.com/hashicorp/terraform-provider-aws/internal/tags" - "github.com/hashicorp/terraform-provider-aws/names" ) // @SDKDataSource("aws_dms_replication_task") @@ -65,19 +64,15 @@ func DataSourceReplicationTask() *schema.Resource { Type: schema.TypeString, Computed: true, }, + "tags": tftags.TagsSchemaComputed(), "target_endpoint_arn": { Type: schema.TypeString, Computed: true, }, - "tags": tftags.TagsSchemaComputed(), }, } } -const ( - DSNameReplicationTask = "Replication Task Data Source" -) - func dataSourceReplicationTaskRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { var diags diag.Diagnostics @@ -88,8 +83,9 @@ func dataSourceReplicationTaskRead(ctx context.Context, d *schema.ResourceData, taskID := d.Get("replication_task_id").(string) task, err := FindReplicationTaskByID(ctx, conn, taskID) + if err != nil { - return create.AppendDiagError(diags, names.DMS, create.ErrActionReading, DSNameReplicationTask, d.Id(), err) + return sdkdiag.AppendErrorf(diags, "reading DMS Replication Task (%s): %s", taskID, err) } d.SetId(aws.StringValue(task.ReplicationTaskIdentifier)) @@ -98,28 +94,23 @@ func dataSourceReplicationTaskRead(ctx context.Context, d *schema.ResourceData, d.Set("replication_instance_arn", task.ReplicationInstanceArn) d.Set("replication_task_arn", task.ReplicationTaskArn) d.Set("replication_task_id", task.ReplicationTaskIdentifier) + d.Set("replication_task_settings", task.ReplicationTaskSettings) d.Set("source_endpoint_arn", task.SourceEndpointArn) d.Set("status", task.Status) d.Set("table_mappings", task.TableMappings) d.Set("target_endpoint_arn", task.TargetEndpointArn) - settings, err := replicationTaskRemoveReadOnlySettings(aws.StringValue(task.ReplicationTaskSettings)) - if err != nil { - return create.AppendDiagError(diags, names.DMS, create.ErrActionReading, DSNameReplicationTask, d.Id(), err) - } - - d.Set("replication_task_settings", settings) - tags, err := listTags(ctx, conn, aws.StringValue(task.ReplicationTaskArn)) + if err != nil { - return create.AppendDiagError(diags, names.DMS, create.ErrActionReading, DSNameReplicationTask, d.Id(), err) + return sdkdiag.AppendErrorf(diags, "listing DMS Replication Task (%s) tags: %s", d.Id(), err) } tags = tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig) //lintignore:AWSR002 if err := d.Set("tags", tags.RemoveDefaultConfig(defaultTagsConfig).Map()); err != nil { - return create.AppendDiagError(diags, names.DMS, create.ErrActionSetting, DSNameReplicationTask, d.Id(), err) + return sdkdiag.AppendErrorf(diags, "setting tags: %s", err) } return diags From c99231dc343b48e91e11dbe2c0df9eb856e2ac70 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 12:15:04 -0500 Subject: [PATCH 45/56] r/aws_dms_replication_task: Prevent erroneous diffs on `replication_task_settings`. --- .changelog/34356.txt | 4 ++++ internal/service/dms/replication_task.go | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.changelog/34356.txt b/.changelog/34356.txt index bf5c6d0a2a4c..5ecbdb78eddf 100644 --- a/.changelog/34356.txt +++ b/.changelog/34356.txt @@ -1,3 +1,7 @@ ```release-note:bug resource/aws_dms_replication_config: Prevent erroneous diffs on `replication_settings` ``` + +```release-note:bug +resource/aws_dms_replication_task: Prevent erroneous diffs on `replication_task_settings` +``` \ No newline at end of file diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 85659eb880ac..26230a1c44db 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -72,10 +72,11 @@ func ResourceReplicationTask() *schema.Resource { ValidateFunc: validReplicationTaskID, }, "replication_task_settings": { - Type: schema.TypeString, - Optional: true, - ValidateFunc: validation.StringIsJSON, - DiffSuppressFunc: verify.SuppressEquivalentJSONDiffs, + Type: schema.TypeString, + Optional: true, + ValidateFunc: validation.StringIsJSON, + DiffSuppressFunc: suppressEquivalentTaskSettings, + DiffSuppressOnRefresh: true, }, "source_endpoint_arn": { Type: schema.TypeString, From e75ba7fc5691b1d40377835af45f2dc6b776e828 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 12:18:54 -0500 Subject: [PATCH 46/56] dms: Tidy up 'startReplicationTask'. --- internal/service/dms/replication_task.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 26230a1c44db..39ed1deecc5c 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -535,33 +535,33 @@ func waitReplicationTaskSteady(ctx context.Context, conn *dms.DatabaseMigrationS } func startReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { - log.Printf("[DEBUG] Starting DMS Replication Task: (%s)", id) - task, err := FindReplicationTaskByID(ctx, conn, id) + if err != nil { return fmt.Errorf("reading DMS Replication Task (%s): %w", id, err) } - if task == nil { - return fmt.Errorf("reading DMS Replication Task (%s): empty output", id) + taskStatus := aws.StringValue(task.Status) + if taskStatus == replicationTaskStatusRunning { + return nil } startReplicationTaskType := dms.StartReplicationTaskTypeValueStartReplication - if aws.StringValue(task.Status) != replicationTaskStatusReady { + if taskStatus != replicationTaskStatusReady { startReplicationTaskType = dms.StartReplicationTaskTypeValueResumeProcessing } - - _, err = conn.StartReplicationTaskWithContext(ctx, &dms.StartReplicationTaskInput{ + input := &dms.StartReplicationTaskInput{ ReplicationTaskArn: task.ReplicationTaskArn, StartReplicationTaskType: aws.String(startReplicationTaskType), - }) + } + + _, err = conn.StartReplicationTaskWithContext(ctx, input) if err != nil { return fmt.Errorf("starting DMS Replication Task (%s): %w", id, err) } - err = waitReplicationTaskRunning(ctx, conn, id) - if err != nil { + if err := waitReplicationTaskRunning(ctx, conn, id); err != nil { return fmt.Errorf("waiting for DMS Replication Task (%s) start: %w", id, err) } From 940841aae369031491d6d265f3e9cee94e542467 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 12:23:42 -0500 Subject: [PATCH 47/56] dms: Tidy up 'stopReplicationTask'. --- internal/service/dms/endpoint.go | 2 +- internal/service/dms/replication_config.go | 2 -- internal/service/dms/replication_task.go | 31 +++++++++++++--------- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/internal/service/dms/endpoint.go b/internal/service/dms/endpoint.go index 3beb2834d260..d73e76677a8a 100644 --- a/internal/service/dms/endpoint.go +++ b/internal/service/dms/endpoint.go @@ -1716,7 +1716,7 @@ func stopEndpointReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrati rtID := aws.StringValue(task.ReplicationTaskIdentifier) switch aws.StringValue(task.Status) { case replicationTaskStatusRunning: - err := stopReplicationTask(ctx, rtID, conn) + err := stopReplicationTask(ctx, conn, rtID) if err != nil { return stoppedTasks, err diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index adda23214e95..7a43bb07b78d 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -557,7 +557,6 @@ func startReplication(ctx context.Context, conn *dms.DatabaseMigrationService, a } replicationStatus := aws.StringValue(replication.Status) - if replicationStatus == replicationStatusRunning { return nil } @@ -596,7 +595,6 @@ func stopReplication(ctx context.Context, conn *dms.DatabaseMigrationService, ar } replicationStatus := aws.StringValue(replication.Status) - if replicationStatus == replicationStatusStopped || replicationStatus == replicationStatusCreated || replicationStatus == replicationStatusFailed { return nil } diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 39ed1deecc5c..f75bc4a5598a 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -233,7 +233,7 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, status := d.Get("status").(string) if status == replicationTaskStatusRunning { log.Println("[DEBUG] stopping DMS replication task:", input) - if err := stopReplicationTask(ctx, d.Id(), conn); err != nil { + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendFromErr(diags, err) } } @@ -264,7 +264,7 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, status := d.Get("status").(string) if status == replicationTaskStatusRunning { log.Println("[DEBUG] stopping DMS replication task:", input) - if err := stopReplicationTask(ctx, d.Id(), conn); err != nil { + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendFromErr(diags, err) } } @@ -296,7 +296,7 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } } else { if status == replicationTaskStatusRunning { - if err := stopReplicationTask(ctx, d.Id(), conn); err != nil { + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendFromErr(diags, err) } } @@ -311,7 +311,7 @@ func resourceReplicationTaskDelete(ctx context.Context, d *schema.ResourceData, conn := meta.(*conns.AWSClient).DMSConn(ctx) if status := d.Get("status").(string); status == replicationTaskStatusRunning { - if err := stopReplicationTask(ctx, d.Id(), conn); err != nil { + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendFromErr(diags, err) } } @@ -568,21 +568,27 @@ func startReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationServic return nil } -func stopReplicationTask(ctx context.Context, id string, conn *dms.DatabaseMigrationService) error { - log.Printf("[DEBUG] Stopping DMS Replication Task: %s", id) - +func stopReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { task, err := FindReplicationTaskByID(ctx, conn, id) + + if tfresource.NotFound(err) { + return nil + } + if err != nil { return fmt.Errorf("reading DMS Replication Task (%s): %w", id, err) } - if task == nil { - return fmt.Errorf("reading DMS Replication Task (%s): empty output", id) + taskStatus := aws.StringValue(task.Status) + if taskStatus != replicationTaskStatusRunning { + return nil } - _, err = conn.StopReplicationTaskWithContext(ctx, &dms.StopReplicationTaskInput{ + input := &dms.StopReplicationTaskInput{ ReplicationTaskArn: task.ReplicationTaskArn, - }) + } + + _, err = conn.StopReplicationTaskWithContext(ctx, input) if tfawserr.ErrMessageContains(err, dms.ErrCodeInvalidResourceStateFault, "is currently not running") { return nil @@ -592,8 +598,7 @@ func stopReplicationTask(ctx context.Context, id string, conn *dms.DatabaseMigra return fmt.Errorf("stopping DMS Replication Task (%s): %w", id, err) } - err = waitReplicationTaskStopped(ctx, conn, id) - if err != nil { + if err := waitReplicationTaskStopped(ctx, conn, id); err != nil { return fmt.Errorf("waiting for DMS Replication Task (%s) stop: %w", id, err) } From 956aff98b565e9168e5d0aedac7248a61a71d00a Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 13:12:06 -0500 Subject: [PATCH 48/56] r/aws_dms_replication_task: Tidy up Delete. --- internal/service/dms/replication_task.go | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index f75bc4a5598a..367a111a1be8 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -310,19 +310,14 @@ func resourceReplicationTaskDelete(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DMSConn(ctx) - if status := d.Get("status").(string); status == replicationTaskStatusRunning { - if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendFromErr(diags, err) - } + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendFromErr(diags, err) } - input := &dms.DeleteReplicationTaskInput{ + log.Printf("[DEBUG] Deleting DMS Replication Task: %s", d.Id()) + _, err := conn.DeleteReplicationTaskWithContext(ctx, &dms.DeleteReplicationTaskInput{ ReplicationTaskArn: aws.String(d.Get("replication_task_arn").(string)), - } - - log.Printf("[DEBUG] DMS delete replication task: %#v", input) - - _, err := conn.DeleteReplicationTaskWithContext(ctx, input) + }) if tfawserr.ErrCodeEquals(err, dms.ErrCodeResourceNotFoundFault) { return diags @@ -333,10 +328,7 @@ func resourceReplicationTaskDelete(ctx context.Context, d *schema.ResourceData, } if err := waitReplicationTaskDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { - if tfawserr.ErrCodeEquals(err, dms.ErrCodeResourceNotFoundFault) { - return diags - } - return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) to be deleted: %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) delete: %s", d.Id(), err) } return diags From e3b06898f4722a0808a63a8804a931c966596e60 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 13:17:00 -0500 Subject: [PATCH 49/56] r/aws_dms_replication_task: Tidy up Update. --- internal/service/dms/replication_task.go | 59 +++++++++--------------- 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 367a111a1be8..0970afe2d642 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -200,10 +200,14 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, var diags diag.Diagnostics conn := meta.(*conns.AWSClient).DMSConn(ctx) - if d.HasChangesExcept("tags", "tags_all", "start_replication_task", "replication_instance_arn") { + if d.HasChangesExcept("tags", "tags_all", "replication_instance_arn", "start_replication_task") { + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + input := &dms.ModifyReplicationTaskInput{ - ReplicationTaskArn: aws.String(d.Get("replication_task_arn").(string)), MigrationType: aws.String(d.Get("migration_type").(string)), + ReplicationTaskArn: aws.String(d.Get("replication_task_arn").(string)), TableMappings: aws.String(d.Get("table_mappings").(string)), } @@ -223,25 +227,15 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } if d.HasChange("replication_task_settings") { - if v, ok := d.Get("replication_task_settings").(string); ok && v != "" { - input.ReplicationTaskSettings = aws.String(v) - } else { - input.ReplicationTaskSettings = nil - } - } - - status := d.Get("status").(string) - if status == replicationTaskStatusRunning { - log.Println("[DEBUG] stopping DMS replication task:", input) - if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendFromErr(diags, err) + if v, ok := d.GetOk("replication_task_settings"); ok { + input.ReplicationTaskSettings = aws.String(v.(string)) } } - log.Println("[DEBUG] updating DMS replication task:", input) _, err := conn.ModifyReplicationTaskWithContext(ctx, input) + if err != nil { - return sdkdiag.AppendErrorf(diags, "updating DMS Replication Task (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "modifying DMS Replication Task (%s): %s", d.Id(), err) } if err := waitReplicationTaskModified(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { @@ -249,28 +243,24 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } if d.Get("start_replication_task").(bool) { - err := startReplicationTask(ctx, conn, d.Id()) - if err != nil { + if err := startReplicationTask(ctx, conn, d.Id()); err != nil { return sdkdiag.AppendFromErr(diags, err) } } } if d.HasChange("replication_instance_arn") { + if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendFromErr(diags, err) + } + input := &dms.MoveReplicationTaskInput{ ReplicationTaskArn: aws.String(d.Get("replication_task_arn").(string)), TargetReplicationInstanceArn: aws.String(d.Get("replication_instance_arn").(string)), } - status := d.Get("status").(string) - if status == replicationTaskStatusRunning { - log.Println("[DEBUG] stopping DMS replication task:", input) - if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendFromErr(diags, err) - } - } - log.Println("[DEBUG] moving DMS replication task:", input) _, err := conn.MoveReplicationTaskWithContext(ctx, input) + if err != nil { return sdkdiag.AppendErrorf(diags, "moving DMS Replication Task (%s): %s", d.Id(), err) } @@ -287,19 +277,14 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, } if d.HasChanges("start_replication_task") { - status := d.Get("status").(string) + var f func(context.Context, *dms.DatabaseMigrationService, string) error if d.Get("start_replication_task").(bool) { - if status != replicationTaskStatusRunning { - if err := startReplicationTask(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendFromErr(diags, err) - } - } + f = startReplicationTask } else { - if status == replicationTaskStatusRunning { - if err := stopReplicationTask(ctx, conn, d.Id()); err != nil { - return sdkdiag.AppendFromErr(diags, err) - } - } + f = stopReplicationTask + } + if err := f(ctx, conn, d.Id()); err != nil { + return sdkdiag.AppendFromErr(diags, err) } } From 6020ccffb6cd3f630207ec5c73ec8498dcb3d4fe Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 13:24:07 -0500 Subject: [PATCH 50/56] r/aws_dms_replication_task: Tidy up waiters. --- internal/service/dms/endpoint.go | 2 +- internal/service/dms/replication_config.go | 2 +- internal/service/dms/replication_task.go | 127 ++++++++++++++------- 3 files changed, 89 insertions(+), 42 deletions(-) diff --git a/internal/service/dms/endpoint.go b/internal/service/dms/endpoint.go index d73e76677a8a..ca8b596a8330 100644 --- a/internal/service/dms/endpoint.go +++ b/internal/service/dms/endpoint.go @@ -1692,7 +1692,7 @@ func steadyEndpointReplicationTasks(ctx context.Context, conn *dms.DatabaseMigra case replicationTaskStatusRunning, replicationTaskStatusFailed, replicationTaskStatusReady, replicationTaskStatusStopped: continue case replicationTaskStatusCreating, replicationTaskStatusDeleting, replicationTaskStatusModifying, replicationTaskStatusStopping, replicationTaskStatusStarting: - if err := waitReplicationTaskSteady(ctx, conn, rtID); err != nil { + if _, err := waitReplicationTaskSteady(ctx, conn, rtID); err != nil { return err } } diff --git a/internal/service/dms/replication_config.go b/internal/service/dms/replication_config.go index 7a43bb07b78d..cd04271011b6 100644 --- a/internal/service/dms/replication_config.go +++ b/internal/service/dms/replication_config.go @@ -291,7 +291,7 @@ func resourceReplicationConfigUpdate(ctx context.Context, d *schema.ResourceData _, err := conn.ModifyReplicationConfigWithContext(ctx, input) if err != nil { - return sdkdiag.AppendErrorf(diags, "updating DMS Replication Config (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "modifying DMS Replication Config (%s): %s", d.Id(), err) } if d.Get("start_replication").(bool) { diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index 0970afe2d642..ad33727891dc 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -5,6 +5,7 @@ package dms import ( "context" + "errors" "fmt" "log" "time" @@ -153,7 +154,7 @@ func resourceReplicationTaskCreate(ctx context.Context, d *schema.ResourceData, d.SetId(taskID) - if err := waitReplicationTaskReady(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { + if _, err := waitReplicationTaskReady(ctx, conn, d.Id(), d.Timeout(schema.TimeoutCreate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) create: %s", d.Id(), err) } @@ -238,7 +239,7 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "modifying DMS Replication Task (%s): %s", d.Id(), err) } - if err := waitReplicationTaskModified(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { + if _, err := waitReplicationTaskModified(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) update: %s", d.Id(), err) } @@ -265,7 +266,7 @@ func resourceReplicationTaskUpdate(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "moving DMS Replication Task (%s): %s", d.Id(), err) } - if err := waitReplicationTaskMoved(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { + if _, err := waitReplicationTaskMoved(ctx, conn, d.Id(), d.Timeout(schema.TimeoutUpdate)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) update: %s", d.Id(), err) } @@ -312,7 +313,7 @@ func resourceReplicationTaskDelete(ctx context.Context, d *schema.ResourceData, return sdkdiag.AppendErrorf(diags, "deleting DMS Replication Task (%s): %s", d.Id(), err) } - if err := waitReplicationTaskDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { + if _, err := waitReplicationTaskDeleted(ctx, conn, d.Id(), d.Timeout(schema.TimeoutDelete)); err != nil { return sdkdiag.AppendErrorf(diags, "waiting for DMS Replication Task (%s) delete: %s", d.Id(), err) } @@ -393,11 +394,20 @@ func statusReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationServi } } -const ( - replicationTaskRunningTimeout = 5 * time.Minute -) +func setLastReplicationTaskError(err error, replication *dms.ReplicationTask) { + var errs []error + + if v := aws.StringValue(replication.LastFailureMessage); v != "" { + errs = append(errs, errors.New(v)) + } + if v := aws.StringValue(replication.StopReason); v != "" { + errs = append(errs, errors.New(v)) + } + + tfresource.SetLastError(err, errors.Join(errs...)) +} -func waitReplicationTaskDeleted(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { +func waitReplicationTaskDeleted(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) (*dms.ReplicationTask, error) { stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusDeleting}, Target: []string{}, @@ -407,13 +417,17 @@ func waitReplicationTaskDeleted(ctx context.Context, conn *dms.DatabaseMigration Delay: 30 * time.Second, // Wait 30 secs before starting } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) - return err + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } + + return nil, err } -func waitReplicationTaskModified(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { +func waitReplicationTaskModified(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) (*dms.ReplicationTask, error) { stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusModifying}, Target: []string{replicationTaskStatusReady, replicationTaskStatusStopped, replicationTaskStatusFailed}, @@ -423,13 +437,17 @@ func waitReplicationTaskModified(ctx context.Context, conn *dms.DatabaseMigratio Delay: 30 * time.Second, // Wait 30 secs before starting } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) - return err + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } + + return nil, err } -func waitReplicationTaskMoved(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { +func waitReplicationTaskMoved(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) (*dms.ReplicationTask, error) { stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusModifying, replicationTaskStatusMoving}, Target: []string{replicationTaskStatusReady, replicationTaskStatusStopped, replicationTaskStatusFailed}, @@ -439,13 +457,17 @@ func waitReplicationTaskMoved(ctx context.Context, conn *dms.DatabaseMigrationSe Delay: 30 * time.Second, // Wait 30 secs before starting } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) - return err + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } + + return nil, err } -func waitReplicationTaskReady(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) error { +func waitReplicationTaskReady(ctx context.Context, conn *dms.DatabaseMigrationService, id string, timeout time.Duration) (*dms.ReplicationTask, error) { stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusCreating}, Target: []string{replicationTaskStatusReady}, @@ -455,60 +477,85 @@ func waitReplicationTaskReady(ctx context.Context, conn *dms.DatabaseMigrationSe Delay: 30 * time.Second, // Wait 30 secs before starting } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } - return err + return nil, err } -func waitReplicationTaskRunning(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { +func waitReplicationTaskRunning(ctx context.Context, conn *dms.DatabaseMigrationService, id string) (*dms.ReplicationTask, error) { + const ( + timeout = 5 * time.Minute + ) stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusStarting}, Target: []string{replicationTaskStatusRunning}, Refresh: statusReplicationTask(ctx, conn, id), - Timeout: replicationTaskRunningTimeout, + Timeout: timeout, MinTimeout: 10 * time.Second, Delay: 30 * time.Second, // Wait 30 secs before starting } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } - return err + return nil, err } -func waitReplicationTaskStopped(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { +func waitReplicationTaskStopped(ctx context.Context, conn *dms.DatabaseMigrationService, id string) (*dms.ReplicationTask, error) { + const ( + timeout = 5 * time.Minute + ) stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusStopping, replicationTaskStatusRunning}, Target: []string{replicationTaskStatusStopped}, Refresh: statusReplicationTask(ctx, conn, id), - Timeout: replicationTaskRunningTimeout, + Timeout: timeout, MinTimeout: 10 * time.Second, Delay: 60 * time.Second, // Wait 60 secs before starting ContinuousTargetOccurence: 2, } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } - return err + return nil, err } -func waitReplicationTaskSteady(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { +func waitReplicationTaskSteady(ctx context.Context, conn *dms.DatabaseMigrationService, id string) (*dms.ReplicationTask, error) { + const ( + timeout = 5 * time.Minute + ) stateConf := &retry.StateChangeConf{ Pending: []string{replicationTaskStatusCreating, replicationTaskStatusDeleting, replicationTaskStatusModifying, replicationTaskStatusStopping, replicationTaskStatusStarting}, Target: []string{replicationTaskStatusFailed, replicationTaskStatusReady, replicationTaskStatusStopped, replicationTaskStatusRunning}, Refresh: statusReplicationTask(ctx, conn, id), - Timeout: replicationTaskRunningTimeout, + Timeout: timeout, MinTimeout: 10 * time.Second, Delay: 60 * time.Second, // Wait 60 secs before starting ContinuousTargetOccurence: 2, } - // Wait, catching any errors - _, err := stateConf.WaitForStateContext(ctx) + outputRaw, err := stateConf.WaitForStateContext(ctx) + + if output, ok := outputRaw.(*dms.ReplicationTask); ok { + setLastReplicationTaskError(err, output) + return output, err + } - return err + return nil, err } func startReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService, id string) error { @@ -538,7 +585,7 @@ func startReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationServic return fmt.Errorf("starting DMS Replication Task (%s): %w", id, err) } - if err := waitReplicationTaskRunning(ctx, conn, id); err != nil { + if _, err := waitReplicationTaskRunning(ctx, conn, id); err != nil { return fmt.Errorf("waiting for DMS Replication Task (%s) start: %w", id, err) } @@ -575,7 +622,7 @@ func stopReplicationTask(ctx context.Context, conn *dms.DatabaseMigrationService return fmt.Errorf("stopping DMS Replication Task (%s): %w", id, err) } - if err := waitReplicationTaskStopped(ctx, conn, id); err != nil { + if _, err := waitReplicationTaskStopped(ctx, conn, id); err != nil { return fmt.Errorf("waiting for DMS Replication Task (%s) stop: %w", id, err) } From 22541453f4e5f9bd9a4089d7cd2001dbfde33f43 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 15:42:27 -0500 Subject: [PATCH 51/56] r/aws_dms_replication_task: Tidy up acceptance tests. --- internal/service/dms/replication_task.go | 14 +- .../dms/replication_task_data_source_test.go | 4 +- internal/service/dms/replication_task_test.go | 347 ++---------------- 3 files changed, 41 insertions(+), 324 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index ad33727891dc..ac30f9124f12 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -414,7 +414,7 @@ func waitReplicationTaskDeleted(ctx context.Context, conn *dms.DatabaseMigration Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 30 * time.Second, // Wait 30 secs before starting + Delay: 30 * time.Second, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -434,7 +434,7 @@ func waitReplicationTaskModified(ctx context.Context, conn *dms.DatabaseMigratio Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 30 * time.Second, // Wait 30 secs before starting + Delay: 30 * time.Second, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -454,7 +454,7 @@ func waitReplicationTaskMoved(ctx context.Context, conn *dms.DatabaseMigrationSe Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 30 * time.Second, // Wait 30 secs before starting + Delay: 30 * time.Second, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -474,7 +474,7 @@ func waitReplicationTaskReady(ctx context.Context, conn *dms.DatabaseMigrationSe Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 30 * time.Second, // Wait 30 secs before starting + Delay: 30 * time.Second, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -497,7 +497,7 @@ func waitReplicationTaskRunning(ctx context.Context, conn *dms.DatabaseMigration Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 30 * time.Second, // Wait 30 secs before starting + Delay: 30 * time.Second, } outputRaw, err := stateConf.WaitForStateContext(ctx) @@ -520,7 +520,7 @@ func waitReplicationTaskStopped(ctx context.Context, conn *dms.DatabaseMigration Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 60 * time.Second, // Wait 60 secs before starting + Delay: 60 * time.Second, ContinuousTargetOccurence: 2, } @@ -544,7 +544,7 @@ func waitReplicationTaskSteady(ctx context.Context, conn *dms.DatabaseMigrationS Refresh: statusReplicationTask(ctx, conn, id), Timeout: timeout, MinTimeout: 10 * time.Second, - Delay: 60 * time.Second, // Wait 60 secs before starting + Delay: 60 * time.Second, ContinuousTargetOccurence: 2, } diff --git a/internal/service/dms/replication_task_data_source_test.go b/internal/service/dms/replication_task_data_source_test.go index 0fcde0c5746a..b3e487e28210 100644 --- a/internal/service/dms/replication_task_data_source_test.go +++ b/internal/service/dms/replication_task_data_source_test.go @@ -37,9 +37,7 @@ func TestAccDMSReplicationTaskDataSource_basic(t *testing.T) { } func testAccReplicationTaskDataSourceConfig_basic(rName string) string { - return acctest.ConfigCompose( - replicationTaskConfigBase(rName), - fmt.Sprintf(` + return acctest.ConfigCompose(testAccReplicationTaskConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_task" "test" { migration_type = "full-load" replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index fc896b1b4702..d40ca48f347f 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -391,10 +391,6 @@ func testAccCheckReplicationTaskExists(ctx context.Context, n string) resource.T return fmt.Errorf("Not found: %s", n) } - if rs.Primary.ID == "" { - return fmt.Errorf("No ID is set") - } - conn := acctest.Provider.Meta().(*conns.AWSClient).DMSConn(ctx) _, err := tfdms.FindReplicationTaskByID(ctx, conn, rs.Primary.ID) @@ -422,49 +418,18 @@ func testAccCheckReplicationTaskDestroy(ctx context.Context) resource.TestCheckF return err } - return fmt.Errorf("DMS replication task (%s) still exists", rs.Primary.ID) + return fmt.Errorf("DMS Replication Task %s still exists", rs.Primary.ID) } return nil } } -func replicationTaskConfigBase(rName string) string { - return acctest.ConfigCompose( - acctest.ConfigAvailableAZsNoOptIn(), - fmt.Sprintf(` +func testAccReplicationTaskConfig_base(rName string) string { + return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 2), fmt.Sprintf(` data "aws_partition" "current" {} - data "aws_region" "current" {} -resource "aws_vpc" "test" { - cidr_block = "10.1.0.0/16" - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test1" { - cidr_block = "10.1.1.0/24" - availability_zone = data.aws_availability_zones.available.names[0] - vpc_id = aws_vpc.test.id - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test2" { - cidr_block = "10.1.2.0/24" - availability_zone = data.aws_availability_zones.available.names[1] - vpc_id = aws_vpc.test.id - - tags = { - Name = "%[1]s-2" - } -} - resource "aws_dms_endpoint" "source" { database_name = %[1]q endpoint_id = "%[1]s-source" @@ -490,7 +455,7 @@ resource "aws_dms_endpoint" "target" { resource "aws_dms_replication_subnet_group" "test" { replication_subnet_group_id = %[1]q replication_subnet_group_description = "terraform test for replication subnet group" - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] + subnet_ids = aws_subnet.test[*].id } resource "aws_dms_replication_instance" "test" { @@ -506,9 +471,7 @@ resource "aws_dms_replication_instance" "test" { } func testAccReplicationTaskConfig_basic(rName, tags string) string { - return acctest.ConfigCompose( - replicationTaskConfigBase(rName), - fmt.Sprintf(` + return acctest.ConfigCompose(testAccReplicationTaskConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_task" "test" { migration_type = "full-load" replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn @@ -528,9 +491,7 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_update(rName, migType string, memLimitTotal int, ruleName string) string { - return acctest.ConfigCompose( - replicationTaskConfigBase(rName), - fmt.Sprintf(` + return acctest.ConfigCompose(testAccReplicationTaskConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_task" "test" { migration_type = %[2]q replication_instance_arn = aws_dms_replication_instance.test.replication_instance_arn @@ -549,9 +510,7 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_cdcStartPosition(rName, cdcStartPosition string) string { - return acctest.ConfigCompose( - replicationTaskConfigBase(rName), - fmt.Sprintf(` + return acctest.ConfigCompose(testAccReplicationTaskConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_task" "test" { cdc_start_position = %[1]q migration_type = "cdc" @@ -566,173 +525,7 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_start(rName string, startTask bool, ruleName string) string { - return acctest.ConfigCompose( - acctest.ConfigAvailableAZsNoOptIn(), - fmt.Sprintf(` -data "aws_partition" "current" {} - -data "aws_region" "current" {} - -resource "aws_vpc" "test" { - cidr_block = "10.1.0.0/16" - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test1" { - cidr_block = "10.1.1.0/24" - availability_zone = data.aws_availability_zones.available.names[0] - vpc_id = aws_vpc.test.id - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test2" { - cidr_block = "10.1.2.0/24" - availability_zone = data.aws_availability_zones.available.names[1] - vpc_id = aws_vpc.test.id - - tags = { - Name = "%[1]s-2" - } -} - -resource "aws_security_group" "test" { - vpc_id = aws_vpc.test.id - - ingress { - protocol = -1 - self = true - from_port = 0 - to_port = 0 - } - - egress { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] - } -} - -resource "aws_db_subnet_group" "test" { - name = %[1]q - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] - - tags = { - Name = %[1]q - } -} - -data "aws_rds_engine_version" "default" { - engine = "aurora-mysql" -} - -data "aws_rds_orderable_db_instance" "test" { - engine = data.aws_rds_engine_version.default.engine - engine_version = data.aws_rds_engine_version.default.version - preferred_instance_classes = ["db.t3.small", "db.t3.medium", "db.t3.large"] -} - -resource "aws_rds_cluster_parameter_group" "test" { - name = "%[1]s-pg-cluster" - family = data.aws_rds_engine_version.default.parameter_group_family - description = "DMS cluster parameter group" - - parameter { - name = "binlog_format" - value = "ROW" - apply_method = "pending-reboot" - } - - parameter { - name = "binlog_row_image" - value = "Full" - apply_method = "pending-reboot" - } - - parameter { - name = "binlog_checksum" - value = "NONE" - apply_method = "pending-reboot" - } -} - -resource "aws_rds_cluster" "source" { - cluster_identifier = "%[1]s-aurora-cluster-source" - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - database_name = "tftest" - master_username = "tftest" - master_password = "mustbeeightcharaters" - skip_final_snapshot = true - vpc_security_group_ids = [aws_security_group.test.id] - db_subnet_group_name = aws_db_subnet_group.test.name - db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.test.name -} - -resource "aws_rds_cluster_instance" "source" { - identifier = "%[1]s-source-primary" - cluster_identifier = aws_rds_cluster.source.id - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - instance_class = data.aws_rds_orderable_db_instance.test.instance_class - db_subnet_group_name = aws_db_subnet_group.test.name -} - -resource "aws_rds_cluster" "target" { - cluster_identifier = "%[1]s-aurora-cluster-target" - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - database_name = "tftest" - master_username = "tftest" - master_password = "mustbeeightcharaters" - skip_final_snapshot = true - vpc_security_group_ids = [aws_security_group.test.id] - db_subnet_group_name = aws_db_subnet_group.test.name -} - -resource "aws_rds_cluster_instance" "target" { - identifier = "%[1]s-target-primary" - cluster_identifier = aws_rds_cluster.target.id - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - instance_class = data.aws_rds_orderable_db_instance.test.instance_class - db_subnet_group_name = aws_db_subnet_group.test.name -} - -resource "aws_dms_endpoint" "source" { - database_name = "tftest" - endpoint_id = "%[1]s-source" - endpoint_type = "source" - engine_name = "aurora" - server_name = aws_rds_cluster.source.endpoint - port = 3306 - username = "tftest" - password = "mustbeeightcharaters" -} - -resource "aws_dms_endpoint" "target" { - database_name = "tftest" - endpoint_id = "%[1]s-target" - endpoint_type = "target" - engine_name = "aurora" - server_name = aws_rds_cluster.target.endpoint - port = 3306 - username = "tftest" - password = "mustbeeightcharaters" -} - -resource "aws_dms_replication_subnet_group" "test" { - replication_subnet_group_id = %[1]q - replication_subnet_group_description = "terraform test for replication subnet group" - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] -} - + return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_instance" "test" { allocated_storage = 5 auto_minor_version_upgrade = true @@ -766,39 +559,9 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_s3ToRDS(rName string) string { - return acctest.ConfigCompose( - acctest.ConfigAvailableAZsNoOptIn(), - testAccS3EndpointConfig_base(rName), - fmt.Sprintf(` -resource "aws_vpc" "test" { - cidr_block = "10.1.0.0/16" - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test1" { - cidr_block = "10.1.1.0/24" - availability_zone = data.aws_availability_zones.available.names[0] - vpc_id = aws_vpc.test.id - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test2" { - cidr_block = "10.1.2.0/24" - availability_zone = data.aws_availability_zones.available.names[1] - vpc_id = aws_vpc.test.id - - tags = { - Name = "%[1]s-2" - } -} - + return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 2), testAccS3EndpointConfig_base(rName), fmt.Sprintf(` resource "aws_security_group" "test" { + name = %[1]q vpc_id = aws_vpc.test.id ingress { @@ -814,11 +577,15 @@ resource "aws_security_group" "test" { protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } + + tags = { + Name = %[1]q + } } resource "aws_db_subnet_group" "test" { name = %[1]q - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] + subnet_ids = aws_subnet.test[*].id tags = { Name = %[1]q @@ -828,7 +595,7 @@ resource "aws_db_subnet_group" "test" { resource "aws_dms_replication_subnet_group" "test" { replication_subnet_group_id = %[1]q replication_subnet_group_description = "terraform test for replication subnet group" - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] + subnet_ids = aws_subnet.test[*].id } resource "aws_s3_bucket" "test" { @@ -949,9 +716,7 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_cdcStartTime(rName, cdcStartPosition string) string { - return acctest.ConfigCompose( - replicationTaskConfigBase(rName), - fmt.Sprintf(` + return acctest.ConfigCompose(testAccReplicationTaskConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_task" "test" { cdc_start_time = %[1]q migration_type = "cdc" @@ -966,67 +731,7 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_move(rName, arn string) string { - return acctest.ConfigCompose( - acctest.ConfigAvailableAZsNoOptIn(), - fmt.Sprintf(` -data "aws_partition" "current" {} -data "aws_region" "current" {} -resource "aws_vpc" "test" { - cidr_block = "10.1.0.0/16" - tags = { - Name = %[1]q - } -} -resource "aws_subnet" "test1" { - cidr_block = "10.1.1.0/24" - availability_zone = data.aws_availability_zones.available.names[0] - vpc_id = aws_vpc.test.id - tags = { - Name = %[1]q - } -} -resource "aws_subnet" "test2" { - cidr_block = "10.1.2.0/24" - availability_zone = data.aws_availability_zones.available.names[1] - vpc_id = aws_vpc.test.id - tags = { - Name = "%[1]s-2" - } -} -resource "aws_dms_endpoint" "source" { - database_name = %[1]q - endpoint_id = "%[1]s-source" - endpoint_type = "source" - engine_name = "aurora" - server_name = "tf-test-cluster.cluster-xxxxxxx.${data.aws_region.current.name}.rds.${data.aws_partition.current.dns_suffix}" - port = 3306 - username = "tftest" - password = "tftest" -} -resource "aws_dms_endpoint" "target" { - database_name = %[1]q - endpoint_id = "%[1]s-target" - endpoint_type = "target" - engine_name = "aurora" - server_name = "tf-test-cluster.cluster-xxxxxxx.${data.aws_region.current.name}.rds.${data.aws_partition.current.dns_suffix}" - port = 3306 - username = "tftest" - password = "tftest" -} -resource "aws_dms_replication_subnet_group" "test" { - replication_subnet_group_id = %[1]q - replication_subnet_group_description = "terraform test for replication subnet group" - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] -} -resource "aws_dms_replication_instance" "test" { - allocated_storage = 5 - auto_minor_version_upgrade = true - replication_instance_class = "dms.c4.large" - replication_instance_id = %[1]q - preferred_maintenance_window = "sun:00:30-sun:02:30" - publicly_accessible = false - replication_subnet_group_id = aws_dms_replication_subnet_group.test.replication_subnet_group_id -} + return acctest.ConfigCompose(testAccReplicationTaskConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_instance" "test2" { allocated_storage = 5 auto_minor_version_upgrade = true @@ -1036,5 +741,19 @@ resource "aws_dms_replication_instance" "test2" { publicly_accessible = false replication_subnet_group_id = aws_dms_replication_subnet_group.test.replication_subnet_group_id } -`, rName)) + +resource "aws_dms_replication_task" "test" { + migration_type = "full-load" + replication_instance_arn = %[2]s + replication_task_id = %[1]q + replication_task_settings = "{\"BeforeImageSettings\":null,\"FailTaskWhenCleanTaskResourceFailed\":false,\"ChangeProcessingDdlHandlingPolicy\":{\"HandleSourceTableAltered\":true,\"HandleSourceTableDropped\":true,\"HandleSourceTableTruncated\":true},\"ChangeProcessingTuning\":{\"BatchApplyMemoryLimit\":500,\"BatchApplyPreserveTransaction\":true,\"BatchApplyTimeoutMax\":30,\"BatchApplyTimeoutMin\":1,\"BatchSplitSize\":0,\"CommitTimeout\":1,\"MemoryKeepTime\":60,\"MemoryLimitTotal\":1024,\"MinTransactionSize\":1000,\"StatementCacheSize\":50},\"CharacterSetSettings\":null,\"ControlTablesSettings\":{\"ControlSchema\":\"\",\"FullLoadExceptionTableEnabled\":false,\"HistoryTableEnabled\":false,\"HistoryTimeslotInMinutes\":5,\"StatusTableEnabled\":false,\"SuspendedTablesTableEnabled\":false},\"ErrorBehavior\":{\"ApplyErrorDeletePolicy\":\"IGNORE_RECORD\",\"ApplyErrorEscalationCount\":0,\"ApplyErrorEscalationPolicy\":\"LOG_ERROR\",\"ApplyErrorFailOnTruncationDdl\":false,\"ApplyErrorInsertPolicy\":\"LOG_ERROR\",\"ApplyErrorUpdatePolicy\":\"LOG_ERROR\",\"DataErrorEscalationCount\":0,\"DataErrorEscalationPolicy\":\"SUSPEND_TABLE\",\"DataErrorPolicy\":\"LOG_ERROR\",\"DataTruncationErrorPolicy\":\"LOG_ERROR\",\"EventErrorPolicy\":\"IGNORE\",\"FailOnNoTablesCaptured\":false,\"FailOnTransactionConsistencyBreached\":false,\"FullLoadIgnoreConflicts\":true,\"RecoverableErrorCount\":-1,\"RecoverableErrorInterval\":5,\"RecoverableErrorStopRetryAfterThrottlingMax\":false,\"RecoverableErrorThrottling\":true,\"RecoverableErrorThrottlingMax\":1800,\"TableErrorEscalationCount\":0,\"TableErrorEscalationPolicy\":\"STOP_TASK\",\"TableErrorPolicy\":\"SUSPEND_TABLE\"},\"FullLoadSettings\":{\"CommitRate\":10000,\"CreatePkAfterFullLoad\":false,\"MaxFullLoadSubTasks\":8,\"StopTaskCachedChangesApplied\":false,\"StopTaskCachedChangesNotApplied\":false,\"TargetTablePrepMode\":\"DROP_AND_CREATE\",\"TransactionConsistencyTimeout\":600},\"Logging\":{\"EnableLogging\":false,\"LogComponents\":[{\"Id\":\"TRANSFORMATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_UNLOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"IO\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_LOAD\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"PERFORMANCE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SOURCE_CAPTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"SORTER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"REST_SERVER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"VALIDATOR_EXT\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TARGET_APPLY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TASK_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"TABLES_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"METADATA_MANAGER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_FACTORY\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMON\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"ADDONS\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"DATA_STRUCTURE\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"COMMUNICATION\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"},{\"Id\":\"FILE_TRANSFER\",\"Severity\":\"LOGGER_SEVERITY_DEFAULT\"}]},\"LoopbackPreventionSettings\":null,\"PostProcessingRules\":null,\"StreamBufferSettings\":{\"CtrlStreamBufferSizeInMB\":5,\"StreamBufferCount\":3,\"StreamBufferSizeInMB\":8},\"TargetMetadata\":{\"BatchApplyEnabled\":false,\"FullLobMode\":false,\"InlineLobMaxSize\":0,\"LimitedSizeLobMode\":true,\"LoadMaxFileSize\":0,\"LobChunkSize\":0,\"LobMaxSize\":32,\"ParallelApplyBufferSize\":0,\"ParallelApplyQueuesPerThread\":0,\"ParallelApplyThreads\":0,\"ParallelLoadBufferSize\":0,\"ParallelLoadQueuesPerThread\":0,\"ParallelLoadThreads\":0,\"SupportLobs\":true,\"TargetSchema\":\"\",\"TaskRecoveryTableEnabled\":false},\"TTSettings\":{\"EnableTT\":false,\"TTRecordSettings\":null,\"TTS3Settings\":null}}" + source_endpoint_arn = aws_dms_endpoint.source.endpoint_arn + table_mappings = "{\"rules\":[{\"rule-type\":\"selection\",\"rule-id\":\"1\",\"rule-name\":\"1\",\"object-locator\":{\"schema-name\":\"%%\",\"table-name\":\"%%\"},\"rule-action\":\"include\"}]}" + + tags = { + Name = %[1]q + } + + target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn +`, rName, arn)) } From cca7ce7107d5434e3372e23cb58e0e317c7fe30d Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 16:28:09 -0500 Subject: [PATCH 52/56] Fix semgrep 'dgryski.semgrep-go.oddifsequence.odd-sequence-ifs'. --- internal/service/dms/replication_task.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/internal/service/dms/replication_task.go b/internal/service/dms/replication_task.go index ac30f9124f12..fb688f6ff65a 100644 --- a/internal/service/dms/replication_task.go +++ b/internal/service/dms/replication_task.go @@ -371,10 +371,6 @@ func findReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrationServic return nil, err } - if err != nil { - return nil, err - } - return output, nil } From 3527c4411f1d7207b402e4fe7e2908702da6680a Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Mon, 18 Dec 2023 16:33:17 -0500 Subject: [PATCH 53/56] Fix terrafmt error. --- internal/service/dms/replication_task_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index d40ca48f347f..00a9aa6764c4 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -755,5 +755,6 @@ resource "aws_dms_replication_task" "test" { } target_endpoint_arn = aws_dms_endpoint.target.endpoint_arn +} `, rName, arn)) } From d0ded6b93776228f496166df6ed206a91dc08942 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 19 Dec 2023 10:22:38 -0500 Subject: [PATCH 54/56] dms: Tweak acceptance test configuration names. --- .../service/dms/replication_config_test.go | 57 ++++++++++--------- internal/service/dms/replication_task_test.go | 2 +- 2 files changed, 32 insertions(+), 27 deletions(-) diff --git a/internal/service/dms/replication_config_test.go b/internal/service/dms/replication_config_test.go index fa2a9dfe610a..a65f731cd410 100644 --- a/internal/service/dms/replication_config_test.go +++ b/internal/service/dms/replication_config_test.go @@ -30,7 +30,7 @@ func TestAccDMSReplicationConfig_basic(t *testing.T) { CheckDestroy: testAccCheckReplicationConfigDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccReplicationConfig_basic(rName), + Config: testAccReplicationConfigConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "arn"), @@ -78,7 +78,7 @@ func TestAccDMSReplicationConfig_disappears(t *testing.T) { CheckDestroy: testAccCheckReplicationConfigDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccReplicationConfig_basic(rName), + Config: testAccReplicationConfigConfig_basic(rName), Check: resource.ComposeAggregateTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), acctest.CheckResourceDisappears(ctx, acctest.Provider, tfdms.ResourceReplicationConfig(), resourceName), @@ -101,7 +101,7 @@ func TestAccDMSReplicationConfig_tags(t *testing.T) { CheckDestroy: testAccCheckReplicationConfigDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccReplicationConfig_tags1(rName, "key1", "value1"), + Config: testAccReplicationConfigConfig_tags1(rName, "key1", "value1"), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), @@ -109,7 +109,7 @@ func TestAccDMSReplicationConfig_tags(t *testing.T) { ), }, { - Config: testAccReplicationConfig_tags2(rName, "key1", "value1updated", "key2", "value2"), + Config: testAccReplicationConfigConfig_tags2(rName, "key1", "value1updated", "key2", "value2"), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "2"), @@ -118,7 +118,7 @@ func TestAccDMSReplicationConfig_tags(t *testing.T) { ), }, { - Config: testAccReplicationConfig_tags1(rName, "key2", "value2"), + Config: testAccReplicationConfigConfig_tags1(rName, "key2", "value2"), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "tags.%", "1"), @@ -141,7 +141,7 @@ func TestAccDMSReplicationConfig_update(t *testing.T) { CheckDestroy: testAccCheckReplicationConfigDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccReplicationConfig_update(rName, "cdc", 2, 16), + Config: testAccReplicationConfigConfig_update(rName, "cdc", 2, 16), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "arn"), @@ -151,7 +151,7 @@ func TestAccDMSReplicationConfig_update(t *testing.T) { ), }, { - Config: testAccReplicationConfig_update(rName, "cdc", 4, 32), + Config: testAccReplicationConfigConfig_update(rName, "cdc", 4, 32), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttrSet(resourceName, "arn"), @@ -177,7 +177,7 @@ func TestAccDMSReplicationConfig_startReplication(t *testing.T) { CheckDestroy: testAccCheckReplicationConfigDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccReplicationConfig_startReplication(rName, true), + Config: testAccReplicationConfigConfig_startReplication(rName, true), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "start_replication", "true"), @@ -190,7 +190,7 @@ func TestAccDMSReplicationConfig_startReplication(t *testing.T) { ImportStateVerifyIgnore: []string{"start_replication", "resource_identifier"}, }, { - Config: testAccReplicationConfig_startReplication(rName, false), + Config: testAccReplicationConfigConfig_startReplication(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckReplicationConfigExists(ctx, resourceName), resource.TestCheckResourceAttr(resourceName, "start_replication", "false"), @@ -241,14 +241,9 @@ func testAccCheckReplicationConfigDestroy(ctx context.Context) resource.TestChec } } -func testAccReplicationConfig_base(rName string) string { +// testAccRDSClustersConfig_base configures a pair of Aurora RDS clusters (and instances) ready for replication. +func testAccRDSClustersConfig_base(rName string) string { return acctest.ConfigCompose(acctest.ConfigVPCWithSubnets(rName, 2), fmt.Sprintf(` -resource "aws_dms_replication_subnet_group" "test" { - replication_subnet_group_id = %[1]q - replication_subnet_group_description = "terraform test" - subnet_ids = aws_subnet.test[*].id -} - resource "aws_db_subnet_group" "test" { name = %[1]q subnet_ids = aws_subnet.test[*].id @@ -353,6 +348,16 @@ resource "aws_rds_cluster_instance" "target" { instance_class = data.aws_rds_orderable_db_instance.test.instance_class db_subnet_group_name = aws_db_subnet_group.test.name } +`, rName)) +} + +func testAccReplicationConfigConfig_base(rName string) string { + return acctest.ConfigCompose(testAccRDSClustersConfig_base(rName), fmt.Sprintf(` +resource "aws_dms_replication_subnet_group" "test" { + replication_subnet_group_id = %[1]q + replication_subnet_group_description = "terraform test" + subnet_ids = aws_subnet.test[*].id +} resource "aws_dms_endpoint" "target" { database_name = "tftest" @@ -378,8 +383,8 @@ resource "aws_dms_endpoint" "source" { `, rName)) } -func testAccReplicationConfig_basic(rName string) string { - return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` +func testAccReplicationConfigConfig_basic(rName string) string { + return acctest.ConfigCompose(testAccReplicationConfigConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_config" "test" { replication_config_identifier = %[1]q replication_type = "cdc" @@ -398,8 +403,8 @@ resource "aws_dms_replication_config" "test" { `, rName)) } -func testAccReplicationConfig_update(rName, replicationType string, minCapacity, maxCapacity int) string { - return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` +func testAccReplicationConfigConfig_update(rName, replicationType string, minCapacity, maxCapacity int) string { + return acctest.ConfigCompose(testAccReplicationConfigConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_config" "test" { replication_config_identifier = %[1]q resource_identifier = %[1]q @@ -418,8 +423,8 @@ resource "aws_dms_replication_config" "test" { `, rName, replicationType, maxCapacity, minCapacity)) } -func testAccReplicationConfig_startReplication(rName string, start bool) string { - return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` +func testAccReplicationConfigConfig_startReplication(rName string, start bool) string { + return acctest.ConfigCompose(testAccReplicationConfigConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_config" "test" { replication_config_identifier = %[1]q resource_identifier = %[1]q @@ -440,8 +445,8 @@ resource "aws_dms_replication_config" "test" { `, rName, start)) } -func testAccReplicationConfig_tags1(rName, tagKey1, tagValue1 string) string { - return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` +func testAccReplicationConfigConfig_tags1(rName, tagKey1, tagValue1 string) string { + return acctest.ConfigCompose(testAccReplicationConfigConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_config" "test" { replication_config_identifier = %[1]q replication_type = "cdc" @@ -463,8 +468,8 @@ resource "aws_dms_replication_config" "test" { `, rName, tagKey1, tagValue1)) } -func testAccReplicationConfig_tags2(rName, tagKey1, tagValue1, tagKey2, tagValue2 string) string { - return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` +func testAccReplicationConfigConfig_tags2(rName, tagKey1, tagValue1, tagKey2, tagValue2 string) string { + return acctest.ConfigCompose(testAccReplicationConfigConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_config" "test" { replication_config_identifier = %[1]q replication_type = "cdc" diff --git a/internal/service/dms/replication_task_test.go b/internal/service/dms/replication_task_test.go index 00a9aa6764c4..404202fa3ed7 100644 --- a/internal/service/dms/replication_task_test.go +++ b/internal/service/dms/replication_task_test.go @@ -525,7 +525,7 @@ resource "aws_dms_replication_task" "test" { } func testAccReplicationTaskConfig_start(rName string, startTask bool, ruleName string) string { - return acctest.ConfigCompose(testAccReplicationConfig_base(rName), fmt.Sprintf(` + return acctest.ConfigCompose(testAccReplicationConfigConfig_base(rName), fmt.Sprintf(` resource "aws_dms_replication_instance" "test" { allocated_storage = 5 auto_minor_version_upgrade = true From b025e27f718dcc91b763ac2241bee2a2bf2e4648 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 19 Dec 2023 10:43:41 -0500 Subject: [PATCH 55/56] Simplify 'TestAccDMSEndpoint_pauseReplicationTasks'. --- internal/service/dms/endpoint.go | 2 +- internal/service/dms/endpoint_test.go | 164 +++----------------------- 2 files changed, 15 insertions(+), 151 deletions(-) diff --git a/internal/service/dms/endpoint.go b/internal/service/dms/endpoint.go index ca8b596a8330..0d7c92a03ccd 100644 --- a/internal/service/dms/endpoint.go +++ b/internal/service/dms/endpoint.go @@ -1757,7 +1757,7 @@ func startEndpointReplicationTasks(ctx context.Context, conn *dms.DatabaseMigrat Filters: []*dms.Filter{ { Name: aws.String("endpoint-arn"), - Values: []*string{aws.String(arn)}, + Values: aws.StringSlice([]string{arn}), }, }, }) diff --git a/internal/service/dms/endpoint_test.go b/internal/service/dms/endpoint_test.go index 8c41537fa035..a3b9ede796f2 100644 --- a/internal/service/dms/endpoint_test.go +++ b/internal/service/dms/endpoint_test.go @@ -2219,22 +2219,24 @@ func TestAccDMSEndpoint_pauseReplicationTasks(t *testing.T) { CheckDestroy: testAccCheckReplicationTaskDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccEndpointConfig_pauseReplicationTasks(rName, "3306"), + Config: testAccEndpointConfig_pauseReplicationTasks(rName, "source", "target"), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, endpointNameSource), testAccCheckEndpointExists(ctx, endpointNameTarget), testAccCheckReplicationTaskExists(ctx, replicationTaskName), - resource.TestCheckResourceAttr(endpointNameTarget, "port", "3306"), + resource.TestCheckResourceAttr(endpointNameSource, "endpoint_type", "source"), + resource.TestCheckResourceAttr(endpointNameTarget, "endpoint_type", "target"), resource.TestCheckResourceAttr(replicationTaskName, "status", "running"), ), }, { - Config: testAccEndpointConfig_pauseReplicationTasks(rName, "3307"), + Config: testAccEndpointConfig_pauseReplicationTasks(rName, "target", "source"), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, endpointNameSource), testAccCheckEndpointExists(ctx, endpointNameTarget), testAccCheckReplicationTaskExists(ctx, replicationTaskName), - resource.TestCheckResourceAttr(endpointNameTarget, "port", "3307"), + resource.TestCheckResourceAttr(endpointNameSource, "endpoint_type", "target"), + resource.TestCheckResourceAttr(endpointNameTarget, "endpoint_type", "source"), resource.TestCheckResourceAttr(replicationTaskName, "status", "running"), ), }, @@ -4681,154 +4683,16 @@ resource "aws_kms_key" "test" { `, rName)) } -func testAccEndpointConfig_pauseReplicationTasks(rName, port string) string { - return acctest.ConfigCompose( - acctest.ConfigAvailableAZsNoOptIn(), - fmt.Sprintf(` -data "aws_partition" "current" {} - -data "aws_region" "current" {} - -resource "aws_vpc" "test" { - cidr_block = "10.1.0.0/16" - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test1" { - cidr_block = "10.1.1.0/24" - availability_zone = data.aws_availability_zones.available.names[0] - vpc_id = aws_vpc.test.id - - tags = { - Name = %[1]q - } -} - -resource "aws_subnet" "test2" { - cidr_block = "10.1.2.0/24" - availability_zone = data.aws_availability_zones.available.names[1] - vpc_id = aws_vpc.test.id - - tags = { - Name = "%[1]s-2" - } -} - -resource "aws_security_group" "test" { - vpc_id = aws_vpc.test.id - - ingress { - protocol = -1 - self = true - from_port = 0 - to_port = 0 - } - - egress { - from_port = 0 - to_port = 0 - protocol = "-1" - cidr_blocks = ["0.0.0.0/0"] - } -} - -resource "aws_db_subnet_group" "test" { - name = %[1]q - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] - - tags = { - Name = %[1]q - } -} - -data "aws_rds_engine_version" "default" { - engine = "aurora-mysql" -} - -data "aws_rds_orderable_db_instance" "test" { - engine = data.aws_rds_engine_version.default.engine - engine_version = data.aws_rds_engine_version.default.version - preferred_instance_classes = ["db.t3.small", "db.t3.medium", "db.t3.large"] -} - -resource "aws_rds_cluster_parameter_group" "test" { - name = "%[1]s-pg-cluster" - family = data.aws_rds_engine_version.default.parameter_group_family - description = "DMS cluster parameter group" - - parameter { - name = "binlog_format" - value = "ROW" - apply_method = "pending-reboot" - } - - parameter { - name = "binlog_row_image" - value = "Full" - apply_method = "pending-reboot" - } - - parameter { - name = "binlog_checksum" - value = "NONE" - apply_method = "pending-reboot" - } -} - -resource "aws_rds_cluster" "source" { - cluster_identifier = "%[1]s-aurora-cluster-source" - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - database_name = "tftest" - master_username = "tftest" - master_password = "mustbeeightcharaters" - skip_final_snapshot = true - vpc_security_group_ids = [aws_security_group.test.id] - db_subnet_group_name = aws_db_subnet_group.test.name - db_cluster_parameter_group_name = aws_rds_cluster_parameter_group.test.name -} - -resource "aws_rds_cluster_instance" "source" { - identifier = "%[1]s-source-primary" - cluster_identifier = aws_rds_cluster.source.id - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - instance_class = data.aws_rds_orderable_db_instance.test.instance_class - db_subnet_group_name = aws_db_subnet_group.test.name -} - -resource "aws_rds_cluster" "target" { - cluster_identifier = "%[1]s-aurora-cluster-target" - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - database_name = "tftest" - master_username = "tftest" - master_password = "mustbeeightcharaters" - skip_final_snapshot = true - vpc_security_group_ids = [aws_security_group.test.id] - db_subnet_group_name = aws_db_subnet_group.test.name -} - -resource "aws_rds_cluster_instance" "target" { - identifier = "%[1]s-target-primary" - cluster_identifier = aws_rds_cluster.target.id - engine = data.aws_rds_orderable_db_instance.test.engine - engine_version = data.aws_rds_orderable_db_instance.test.engine_version - instance_class = data.aws_rds_orderable_db_instance.test.instance_class - db_subnet_group_name = aws_db_subnet_group.test.name -} - +func testAccEndpointConfig_pauseReplicationTasks(rName, type1, type2 string) string { + return acctest.ConfigCompose(testAccRDSClustersConfig_base(rName), fmt.Sprintf(` resource "aws_dms_endpoint" "source" { database_name = "tftest" endpoint_id = "%[1]s-source" - endpoint_type = "source" + endpoint_type = %[2]q engine_name = "aurora" password = "mustbeeightcharaters" pause_replication_tasks = true - port = %[2]s + port = 3306 server_name = aws_rds_cluster.source.endpoint username = "tftest" } @@ -4836,11 +4700,11 @@ resource "aws_dms_endpoint" "source" { resource "aws_dms_endpoint" "target" { database_name = "tftest" endpoint_id = "%[1]s-target" - endpoint_type = "target" + endpoint_type = %[3]q engine_name = "aurora" password = "mustbeeightcharaters" pause_replication_tasks = true - port = %[2]s + port = 3306 server_name = aws_rds_cluster.target.endpoint username = "tftest" } @@ -4848,7 +4712,7 @@ resource "aws_dms_endpoint" "target" { resource "aws_dms_replication_subnet_group" "test" { replication_subnet_group_id = %[1]q replication_subnet_group_description = "terraform test for replication subnet group" - subnet_ids = [aws_subnet.test1.id, aws_subnet.test2.id] + subnet_ids = aws_subnet.test[*].id } resource "aws_dms_replication_instance" "test" { @@ -4880,5 +4744,5 @@ resource "aws_dms_replication_task" "test" { depends_on = [aws_rds_cluster_instance.source, aws_rds_cluster_instance.target] } -`, rName, port)) +`, rName, type1, type2)) } From a50d08e70cd0269ef1dac1bd5187336d3f5962a5 Mon Sep 17 00:00:00 2001 From: Kit Ewbank Date: Tue, 19 Dec 2023 12:21:50 -0500 Subject: [PATCH 56/56] Simplify 'TestAccDMSEndpoint_pauseReplicationTasks' again. --- internal/service/dms/endpoint.go | 593 +++++++++++++------------- internal/service/dms/endpoint_test.go | 20 +- 2 files changed, 308 insertions(+), 305 deletions(-) diff --git a/internal/service/dms/endpoint.go b/internal/service/dms/endpoint.go index 0d7c92a03ccd..3492080b9997 100644 --- a/internal/service/dms/endpoint.go +++ b/internal/service/dms/endpoint.go @@ -1057,351 +1057,358 @@ func resourceEndpointUpdate(ctx context.Context, d *schema.ResourceData, meta in conn := meta.(*conns.AWSClient).DMSConn(ctx) if d.HasChangesExcept("tags", "tags_all") { - input := &dms.ModifyEndpointInput{ - EndpointArn: aws.String(d.Get("endpoint_arn").(string)), - } - - if d.HasChange("certificate_arn") { - input.CertificateArn = aws.String(d.Get("certificate_arn").(string)) - } - - if d.HasChange("endpoint_type") { - input.EndpointType = aws.String(d.Get("endpoint_type").(string)) - } + endpointARN := d.Get("endpoint_arn").(string) + pauseTasks := d.Get("pause_replication_tasks").(bool) + var tasks []*dms.ReplicationTask - if d.HasChange("engine_name") { - input.EngineName = aws.String(d.Get("engine_name").(string)) - } + if pauseTasks { + var err error + tasks, err = stopEndpointReplicationTasks(ctx, conn, endpointARN) - if d.HasChange("extra_connection_attributes") { - input.ExtraConnectionAttributes = aws.String(d.Get("extra_connection_attributes").(string)) + if err != nil { + return sdkdiag.AppendErrorf(diags, "stopping replication tasks before updating DMS Endpoint (%s): %s", d.Id(), err) + } } - if d.HasChange("service_access_role") { - input.DynamoDbSettings = &dms.DynamoDbSettings{ - ServiceAccessRoleArn: aws.String(d.Get("service_access_role").(string)), + if d.HasChangesExcept("pause_replication_tasks") { + input := &dms.ModifyEndpointInput{ + EndpointArn: aws.String(endpointARN), } - } - if d.HasChange("ssl_mode") { - input.SslMode = aws.String(d.Get("ssl_mode").(string)) - } + if d.HasChange("certificate_arn") { + input.CertificateArn = aws.String(d.Get("certificate_arn").(string)) + } - switch engineName := d.Get("engine_name").(string); engineName { - case engineNameAurora, engineNameMariadb, engineNameMySQL: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.MySQLSettings = &dms.MySQLSettings{ - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), - } - } else { - input.MySQLSettings = &dms.MySQLSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), - } - input.EngineName = aws.String(engineName) + if d.HasChange("endpoint_type") { + input.EndpointType = aws.String(d.Get("endpoint_type").(string)) + } - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) - } + if d.HasChange("engine_name") { + input.EngineName = aws.String(d.Get("engine_name").(string)) } - case engineNameAuroraPostgresql, engineNamePostgres: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.PostgreSQLSettings = &dms.PostgreSQLSettings{ - DatabaseName: aws.String(d.Get("database_name").(string)), - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), - } - } else { - input.PostgreSQLSettings = &dms.PostgreSQLSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), - } - input.EngineName = aws.String(engineName) // Must be included (should be 'postgres') - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) - } + if d.HasChange("extra_connection_attributes") { + input.ExtraConnectionAttributes = aws.String(d.Get("extra_connection_attributes").(string)) } - case engineNameDynamoDB: + if d.HasChange("service_access_role") { input.DynamoDbSettings = &dms.DynamoDbSettings{ ServiceAccessRoleArn: aws.String(d.Get("service_access_role").(string)), } } - case engineNameElasticsearch, engineNameOpenSearch: - if d.HasChanges( - "elasticsearch_settings.0.endpoint_uri", - "elasticsearch_settings.0.error_retry_duration", - "elasticsearch_settings.0.full_load_error_percentage", - "elasticsearch_settings.0.service_access_role_arn", - "elasticsearch_settings.0.use_new_mapping_type") { - input.ElasticsearchSettings = &dms.ElasticsearchSettings{ - ServiceAccessRoleArn: aws.String(d.Get("elasticsearch_settings.0.service_access_role_arn").(string)), - EndpointUri: aws.String(d.Get("elasticsearch_settings.0.endpoint_uri").(string)), - ErrorRetryDuration: aws.Int64(int64(d.Get("elasticsearch_settings.0.error_retry_duration").(int))), - FullLoadErrorPercentage: aws.Int64(int64(d.Get("elasticsearch_settings.0.full_load_error_percentage").(int))), - UseNewMappingType: aws.Bool(d.Get("elasticsearch_settings.0.use_new_mapping_type").(bool)), - } - input.EngineName = aws.String(engineName) - } - case engineNameKafka: - if d.HasChange("kafka_settings") { - input.KafkaSettings = expandKafkaSettings(d.Get("kafka_settings").([]interface{})[0].(map[string]interface{})) - input.EngineName = aws.String(engineName) - } - case engineNameKinesis: - if d.HasChanges("kinesis_settings") { - input.KinesisSettings = expandKinesisSettings(d.Get("kinesis_settings").([]interface{})[0].(map[string]interface{})) - input.EngineName = aws.String(engineName) + + if d.HasChange("ssl_mode") { + input.SslMode = aws.String(d.Get("ssl_mode").(string)) } - case engineNameMongodb: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "mongodb_settings.0.auth_type", - "mongodb_settings.0.auth_mechanism", "mongodb_settings.0.nesting_level", "mongodb_settings.0.extract_doc_id", - "mongodb_settings.0.docs_to_investigate", "mongodb_settings.0.auth_source", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.MongoDbSettings = &dms.MongoDbSettings{ - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), - DatabaseName: aws.String(d.Get("database_name").(string)), - KmsKeyId: aws.String(d.Get("kms_key_arn").(string)), - - AuthType: aws.String(d.Get("mongodb_settings.0.auth_type").(string)), - AuthMechanism: aws.String(d.Get("mongodb_settings.0.auth_mechanism").(string)), - NestingLevel: aws.String(d.Get("mongodb_settings.0.nesting_level").(string)), - ExtractDocId: aws.String(d.Get("mongodb_settings.0.extract_doc_id").(string)), - DocsToInvestigate: aws.String(d.Get("mongodb_settings.0.docs_to_investigate").(string)), - AuthSource: aws.String(d.Get("mongodb_settings.0.auth_source").(string)), - } - } else { - input.MongoDbSettings = &dms.MongoDbSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), - KmsKeyId: aws.String(d.Get("kms_key_arn").(string)), - - AuthType: aws.String(d.Get("mongodb_settings.0.auth_type").(string)), - AuthMechanism: aws.String(d.Get("mongodb_settings.0.auth_mechanism").(string)), - NestingLevel: aws.String(d.Get("mongodb_settings.0.nesting_level").(string)), - ExtractDocId: aws.String(d.Get("mongodb_settings.0.extract_doc_id").(string)), - DocsToInvestigate: aws.String(d.Get("mongodb_settings.0.docs_to_investigate").(string)), - AuthSource: aws.String(d.Get("mongodb_settings.0.auth_source").(string)), + + switch engineName := d.Get("engine_name").(string); engineName { + case engineNameAurora, engineNameMariadb, engineNameMySQL: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.MySQLSettings = &dms.MySQLSettings{ + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.MySQLSettings = &dms.MySQLSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) + + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) } - input.EngineName = aws.String(engineName) + } + case engineNameAuroraPostgresql, engineNamePostgres: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.PostgreSQLSettings = &dms.PostgreSQLSettings{ + DatabaseName: aws.String(d.Get("database_name").(string)), + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.PostgreSQLSettings = &dms.PostgreSQLSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) // Must be included (should be 'postgres') - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) + } } - } - case engineNameOracle: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.OracleSettings = &dms.OracleSettings{ - DatabaseName: aws.String(d.Get("database_name").(string)), - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + case engineNameDynamoDB: + if d.HasChange("service_access_role") { + input.DynamoDbSettings = &dms.DynamoDbSettings{ + ServiceAccessRoleArn: aws.String(d.Get("service_access_role").(string)), } - } else { - input.OracleSettings = &dms.OracleSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), + } + case engineNameElasticsearch, engineNameOpenSearch: + if d.HasChanges( + "elasticsearch_settings.0.endpoint_uri", + "elasticsearch_settings.0.error_retry_duration", + "elasticsearch_settings.0.full_load_error_percentage", + "elasticsearch_settings.0.service_access_role_arn", + "elasticsearch_settings.0.use_new_mapping_type") { + input.ElasticsearchSettings = &dms.ElasticsearchSettings{ + ServiceAccessRoleArn: aws.String(d.Get("elasticsearch_settings.0.service_access_role_arn").(string)), + EndpointUri: aws.String(d.Get("elasticsearch_settings.0.endpoint_uri").(string)), + ErrorRetryDuration: aws.Int64(int64(d.Get("elasticsearch_settings.0.error_retry_duration").(int))), + FullLoadErrorPercentage: aws.Int64(int64(d.Get("elasticsearch_settings.0.full_load_error_percentage").(int))), + UseNewMappingType: aws.Bool(d.Get("elasticsearch_settings.0.use_new_mapping_type").(bool)), } - input.EngineName = aws.String(engineName) // Must be included (should be 'oracle') - - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) + input.EngineName = aws.String(engineName) } - } - case engineNameRedis: - if d.HasChanges("redis_settings") { - input.RedisSettings = expandRedisSettings(d.Get("redis_settings").([]interface{})[0].(map[string]interface{})) - input.EngineName = aws.String(engineName) - } - case engineNameRedshift: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", - "redshift_settings", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.RedshiftSettings = &dms.RedshiftSettings{ - DatabaseName: aws.String(d.Get("database_name").(string)), - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + case engineNameKafka: + if d.HasChange("kafka_settings") { + input.KafkaSettings = expandKafkaSettings(d.Get("kafka_settings").([]interface{})[0].(map[string]interface{})) + input.EngineName = aws.String(engineName) + } + case engineNameKinesis: + if d.HasChanges("kinesis_settings") { + input.KinesisSettings = expandKinesisSettings(d.Get("kinesis_settings").([]interface{})[0].(map[string]interface{})) + input.EngineName = aws.String(engineName) + } + case engineNameMongodb: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "mongodb_settings.0.auth_type", + "mongodb_settings.0.auth_mechanism", "mongodb_settings.0.nesting_level", "mongodb_settings.0.extract_doc_id", + "mongodb_settings.0.docs_to_investigate", "mongodb_settings.0.auth_source", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.MongoDbSettings = &dms.MongoDbSettings{ + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + DatabaseName: aws.String(d.Get("database_name").(string)), + KmsKeyId: aws.String(d.Get("kms_key_arn").(string)), + + AuthType: aws.String(d.Get("mongodb_settings.0.auth_type").(string)), + AuthMechanism: aws.String(d.Get("mongodb_settings.0.auth_mechanism").(string)), + NestingLevel: aws.String(d.Get("mongodb_settings.0.nesting_level").(string)), + ExtractDocId: aws.String(d.Get("mongodb_settings.0.extract_doc_id").(string)), + DocsToInvestigate: aws.String(d.Get("mongodb_settings.0.docs_to_investigate").(string)), + AuthSource: aws.String(d.Get("mongodb_settings.0.auth_source").(string)), + } + } else { + input.MongoDbSettings = &dms.MongoDbSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + KmsKeyId: aws.String(d.Get("kms_key_arn").(string)), + + AuthType: aws.String(d.Get("mongodb_settings.0.auth_type").(string)), + AuthMechanism: aws.String(d.Get("mongodb_settings.0.auth_mechanism").(string)), + NestingLevel: aws.String(d.Get("mongodb_settings.0.nesting_level").(string)), + ExtractDocId: aws.String(d.Get("mongodb_settings.0.extract_doc_id").(string)), + DocsToInvestigate: aws.String(d.Get("mongodb_settings.0.docs_to_investigate").(string)), + AuthSource: aws.String(d.Get("mongodb_settings.0.auth_source").(string)), + } + input.EngineName = aws.String(engineName) + + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) } - } else { - input.RedshiftSettings = &dms.RedshiftSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), + } + case engineNameOracle: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.OracleSettings = &dms.OracleSettings{ + DatabaseName: aws.String(d.Get("database_name").(string)), + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.OracleSettings = &dms.OracleSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) // Must be included (should be 'oracle') + + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) } - input.EngineName = aws.String(engineName) // Must be included (should be 'redshift') + } + case engineNameRedis: + if d.HasChanges("redis_settings") { + input.RedisSettings = expandRedisSettings(d.Get("redis_settings").([]interface{})[0].(map[string]interface{})) + input.EngineName = aws.String(engineName) + } + case engineNameRedshift: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", + "redshift_settings", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.RedshiftSettings = &dms.RedshiftSettings{ + DatabaseName: aws.String(d.Get("database_name").(string)), + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.RedshiftSettings = &dms.RedshiftSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) // Must be included (should be 'redshift') - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) - if v, ok := d.GetOk("redshift_settings"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { - tfMap := v.([]interface{})[0].(map[string]interface{}) + if v, ok := d.GetOk("redshift_settings"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil { + tfMap := v.([]interface{})[0].(map[string]interface{}) - if v, ok := tfMap["bucket_folder"].(string); ok && v != "" { - input.RedshiftSettings.BucketFolder = aws.String(v) - } + if v, ok := tfMap["bucket_folder"].(string); ok && v != "" { + input.RedshiftSettings.BucketFolder = aws.String(v) + } - if v, ok := tfMap["bucket_name"].(string); ok && v != "" { - input.RedshiftSettings.BucketName = aws.String(v) - } + if v, ok := tfMap["bucket_name"].(string); ok && v != "" { + input.RedshiftSettings.BucketName = aws.String(v) + } - if v, ok := tfMap["encryption_mode"].(string); ok && v != "" { - input.RedshiftSettings.EncryptionMode = aws.String(v) - } + if v, ok := tfMap["encryption_mode"].(string); ok && v != "" { + input.RedshiftSettings.EncryptionMode = aws.String(v) + } - if v, ok := tfMap["server_side_encryption_kms_key_id"].(string); ok && v != "" { - input.RedshiftSettings.ServerSideEncryptionKmsKeyId = aws.String(v) - } + if v, ok := tfMap["server_side_encryption_kms_key_id"].(string); ok && v != "" { + input.RedshiftSettings.ServerSideEncryptionKmsKeyId = aws.String(v) + } - if v, ok := tfMap["service_access_role_arn"].(string); ok && v != "" { - input.RedshiftSettings.ServiceAccessRoleArn = aws.String(v) + if v, ok := tfMap["service_access_role_arn"].(string); ok && v != "" { + input.RedshiftSettings.ServiceAccessRoleArn = aws.String(v) + } } } } - } - case engineNameSQLServer, engineNameBabelfish: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.MicrosoftSQLServerSettings = &dms.MicrosoftSQLServerSettings{ - DatabaseName: aws.String(d.Get("database_name").(string)), - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), - } - } else { - input.MicrosoftSQLServerSettings = &dms.MicrosoftSQLServerSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), - } - input.EngineName = aws.String(engineName) // Must be included (should be 'postgres') + case engineNameSQLServer, engineNameBabelfish: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.MicrosoftSQLServerSettings = &dms.MicrosoftSQLServerSettings{ + DatabaseName: aws.String(d.Get("database_name").(string)), + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.MicrosoftSQLServerSettings = &dms.MicrosoftSQLServerSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) // Must be included (should be 'postgres') - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) - } - } - case engineNameSybase: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.SybaseSettings = &dms.SybaseSettings{ - DatabaseName: aws.String(d.Get("database_name").(string)), - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) } - } else { - input.SybaseSettings = &dms.SybaseSettings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), - } - input.EngineName = aws.String(engineName) // Must be included (should be 'postgres') - - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) } - } - case engineNameDB2, engineNameDB2zOS: - if d.HasChanges( - "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", - "secrets_manager_arn") { - if _, ok := d.GetOk("secrets_manager_arn"); ok { - input.IBMDb2Settings = &dms.IBMDb2Settings{ - DatabaseName: aws.String(d.Get("database_name").(string)), - SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), - SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + case engineNameSybase: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.SybaseSettings = &dms.SybaseSettings{ + DatabaseName: aws.String(d.Get("database_name").(string)), + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.SybaseSettings = &dms.SybaseSettings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) // Must be included (should be 'postgres') + + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) } - } else { - input.IBMDb2Settings = &dms.IBMDb2Settings{ - Username: aws.String(d.Get("username").(string)), - Password: aws.String(d.Get("password").(string)), - ServerName: aws.String(d.Get("server_name").(string)), - Port: aws.Int64(int64(d.Get("port").(int))), - DatabaseName: aws.String(d.Get("database_name").(string)), + } + case engineNameDB2, engineNameDB2zOS: + if d.HasChanges( + "username", "password", "server_name", "port", "database_name", "secrets_manager_access_role_arn", + "secrets_manager_arn") { + if _, ok := d.GetOk("secrets_manager_arn"); ok { + input.IBMDb2Settings = &dms.IBMDb2Settings{ + DatabaseName: aws.String(d.Get("database_name").(string)), + SecretsManagerAccessRoleArn: aws.String(d.Get("secrets_manager_access_role_arn").(string)), + SecretsManagerSecretId: aws.String(d.Get("secrets_manager_arn").(string)), + } + } else { + input.IBMDb2Settings = &dms.IBMDb2Settings{ + Username: aws.String(d.Get("username").(string)), + Password: aws.String(d.Get("password").(string)), + ServerName: aws.String(d.Get("server_name").(string)), + Port: aws.Int64(int64(d.Get("port").(int))), + DatabaseName: aws.String(d.Get("database_name").(string)), + } + input.EngineName = aws.String(engineName) // Must be included (should be 'db2') + + // Update connection info in top-level namespace as well + expandTopLevelConnectionInfoModify(d, input) } - input.EngineName = aws.String(engineName) // Must be included (should be 'db2') + } + case engineNameS3: + if d.HasChanges("s3_settings") { + input.S3Settings = expandS3Settings(d.Get("s3_settings").([]interface{})[0].(map[string]interface{})) + input.EngineName = aws.String(engineName) + } + default: + if d.HasChange("database_name") { + input.DatabaseName = aws.String(d.Get("database_name").(string)) + } - // Update connection info in top-level namespace as well - expandTopLevelConnectionInfoModify(d, input) + if d.HasChange("password") { + input.Password = aws.String(d.Get("password").(string)) } - } - case engineNameS3: - if d.HasChanges("s3_settings") { - input.S3Settings = expandS3Settings(d.Get("s3_settings").([]interface{})[0].(map[string]interface{})) - input.EngineName = aws.String(engineName) - } - default: - if d.HasChange("database_name") { - input.DatabaseName = aws.String(d.Get("database_name").(string)) - } - if d.HasChange("password") { - input.Password = aws.String(d.Get("password").(string)) - } + if d.HasChange("port") { + input.Port = aws.Int64(int64(d.Get("port").(int))) + } - if d.HasChange("port") { - input.Port = aws.Int64(int64(d.Get("port").(int))) - } + if d.HasChange("server_name") { + input.ServerName = aws.String(d.Get("server_name").(string)) + } - if d.HasChange("server_name") { - input.ServerName = aws.String(d.Get("server_name").(string)) + if d.HasChange("username") { + input.Username = aws.String(d.Get("username").(string)) + } } - if d.HasChange("username") { - input.Username = aws.String(d.Get("username").(string)) - } - } + _, err := conn.ModifyEndpointWithContext(ctx, input) - var tasks []*dms.ReplicationTask - if v, ok := d.GetOk("pause_replication_tasks"); ok && v.(bool) { - var err error - tasks, err = stopEndpointReplicationTasks(ctx, conn, d.Get("endpoint_arn").(string)) if err != nil { - return sdkdiag.AppendErrorf(diags, "pausing replication tasks before updating DMS Endpoint (%s): %s", d.Id(), err) + return sdkdiag.AppendErrorf(diags, "updating DMS Endpoint (%s): %s", d.Id(), err) } } - _, err := conn.ModifyEndpointWithContext(ctx, input) - if err != nil { - return sdkdiag.AppendErrorf(diags, "updating DMS Endpoint (%s): %s", d.Id(), err) - } - - if v, ok := d.GetOk("pause_replication_tasks"); ok && v.(bool) && len(tasks) > 0 { - if err := startEndpointReplicationTasks(ctx, conn, d.Get("endpoint_arn").(string), tasks); err != nil { + if pauseTasks && len(tasks) > 0 { + if err := startEndpointReplicationTasks(ctx, conn, endpointARN, tasks); err != nil { return sdkdiag.AppendErrorf(diags, "starting replication tasks after updating DMS Endpoint (%s): %s", d.Id(), err) } } diff --git a/internal/service/dms/endpoint_test.go b/internal/service/dms/endpoint_test.go index a3b9ede796f2..f661333bf5ff 100644 --- a/internal/service/dms/endpoint_test.go +++ b/internal/service/dms/endpoint_test.go @@ -2219,24 +2219,20 @@ func TestAccDMSEndpoint_pauseReplicationTasks(t *testing.T) { CheckDestroy: testAccCheckReplicationTaskDestroy(ctx), Steps: []resource.TestStep{ { - Config: testAccEndpointConfig_pauseReplicationTasks(rName, "source", "target"), + Config: testAccEndpointConfig_pauseReplicationTasks(rName, false), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, endpointNameSource), testAccCheckEndpointExists(ctx, endpointNameTarget), testAccCheckReplicationTaskExists(ctx, replicationTaskName), - resource.TestCheckResourceAttr(endpointNameSource, "endpoint_type", "source"), - resource.TestCheckResourceAttr(endpointNameTarget, "endpoint_type", "target"), resource.TestCheckResourceAttr(replicationTaskName, "status", "running"), ), }, { - Config: testAccEndpointConfig_pauseReplicationTasks(rName, "target", "source"), + Config: testAccEndpointConfig_pauseReplicationTasks(rName, true), Check: resource.ComposeTestCheckFunc( testAccCheckEndpointExists(ctx, endpointNameSource), testAccCheckEndpointExists(ctx, endpointNameTarget), testAccCheckReplicationTaskExists(ctx, replicationTaskName), - resource.TestCheckResourceAttr(endpointNameSource, "endpoint_type", "target"), - resource.TestCheckResourceAttr(endpointNameTarget, "endpoint_type", "source"), resource.TestCheckResourceAttr(replicationTaskName, "status", "running"), ), }, @@ -4683,15 +4679,15 @@ resource "aws_kms_key" "test" { `, rName)) } -func testAccEndpointConfig_pauseReplicationTasks(rName, type1, type2 string) string { +func testAccEndpointConfig_pauseReplicationTasks(rName string, pause bool) string { return acctest.ConfigCompose(testAccRDSClustersConfig_base(rName), fmt.Sprintf(` resource "aws_dms_endpoint" "source" { database_name = "tftest" endpoint_id = "%[1]s-source" - endpoint_type = %[2]q + endpoint_type = "source" engine_name = "aurora" password = "mustbeeightcharaters" - pause_replication_tasks = true + pause_replication_tasks = %[2]t port = 3306 server_name = aws_rds_cluster.source.endpoint username = "tftest" @@ -4700,10 +4696,10 @@ resource "aws_dms_endpoint" "source" { resource "aws_dms_endpoint" "target" { database_name = "tftest" endpoint_id = "%[1]s-target" - endpoint_type = %[3]q + endpoint_type = "target" engine_name = "aurora" password = "mustbeeightcharaters" - pause_replication_tasks = true + pause_replication_tasks = %[2]t port = 3306 server_name = aws_rds_cluster.target.endpoint username = "tftest" @@ -4744,5 +4740,5 @@ resource "aws_dms_replication_task" "test" { depends_on = [aws_rds_cluster_instance.source, aws_rds_cluster_instance.target] } -`, rName, type1, type2)) +`, rName, pause)) }