diff --git a/aws/resource_aws_redshift_cluster.go b/aws/resource_aws_redshift_cluster.go index 4fe7d0592f45..b19eb6ab081b 100644 --- a/aws/resource_aws_redshift_cluster.go +++ b/aws/resource_aws_redshift_cluster.go @@ -787,31 +787,38 @@ func resourceAwsRedshiftClusterUpdate(d *schema.ResourceData, meta interface{}) } } - deprecatedHasChange := (d.HasChange("enable_logging") || d.HasChange("bucket_name") || d.HasChange("s3_key_prefix")) - if d.HasChange("logging") || deprecatedHasChange { - var loggingErr error - - logging, ok := d.GetOk("logging.0.enable") - _, deprecatedOk := d.GetOk("enable_logging") - - if (ok && logging.(bool)) || deprecatedOk { + if d.HasChange("logging") { + if loggingEnabled, ok := d.GetOk("logging.0.enable"); ok && loggingEnabled.(bool) { log.Printf("[INFO] Enabling Logging for Redshift Cluster %q", d.Id()) - loggingErr = enableRedshiftClusterLogging(d, conn) - if loggingErr != nil { - return loggingErr + err := enableRedshiftClusterLogging(d, conn) + if err != nil { + return err } } else { log.Printf("[INFO] Disabling Logging for Redshift Cluster %q", d.Id()) - _, loggingErr = conn.DisableLogging(&redshift.DisableLoggingInput{ + _, err := conn.DisableLogging(&redshift.DisableLoggingInput{ ClusterIdentifier: aws.String(d.Id()), }) - if loggingErr != nil { - return loggingErr + if err != nil { + return err + } + } + } else if d.HasChange("enable_logging") || d.HasChange("bucket_name") || d.HasChange("s3_key_prefix") { + if enableLogging, ok := d.GetOk("enable_logging"); ok && enableLogging.(bool) { + log.Printf("[INFO] Enabling Logging for Redshift Cluster %q", d.Id()) + err := enableRedshiftClusterLogging(d, conn) + if err != nil { + return err + } + } else { + log.Printf("[INFO] Disabling Logging for Redshift Cluster %q", d.Id()) + _, err := conn.DisableLogging(&redshift.DisableLoggingInput{ + ClusterIdentifier: aws.String(d.Id()), + }) + if err != nil { + return err } } - - d.SetPartial("enable_logging") - d.SetPartial("logging") } d.Partial(false)