func resourceAwsRDSClusterDelete(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).rdsconn log.Printf("[DEBUG] Destroying RDS Cluster (%s)", d.Id()) deleteOpts := rds.DeleteDBClusterInput{ DBClusterIdentifier: aws.String(d.Id()), } finalSnapshot := d.Get("final_snapshot_identifier").(string) if finalSnapshot == "" { deleteOpts.SkipFinalSnapshot = aws.Bool(true) } else { deleteOpts.FinalDBSnapshotIdentifier = aws.String(finalSnapshot) deleteOpts.SkipFinalSnapshot = aws.Bool(false) } log.Printf("[DEBUG] RDS Cluster delete options: %s", deleteOpts) _, err := conn.DeleteDBCluster(&deleteOpts) stateConf := &resource.StateChangeConf{ Pending: []string{"deleting", "backing-up", "modifying"}, Target: "destroyed", Refresh: resourceAwsRDSClusterStateRefreshFunc(d, meta), Timeout: 5 * time.Minute, MinTimeout: 3 * time.Second, } // Wait, catching any errors _, err = stateConf.WaitForState() if err != nil { return fmt.Errorf("[WARN] Error deleting RDS Cluster (%s): %s", d.Id(), err) } return nil }
func resourceAwsRDSClusterDelete(d *schema.ResourceData, meta interface{}) error { conn := meta.(*AWSClient).rdsconn log.Printf("[DEBUG] Destroying RDS Cluster (%s)", d.Id()) deleteOpts := rds.DeleteDBClusterInput{ DBClusterIdentifier: aws.String(d.Id()), } skipFinalSnapshot := d.Get("skip_final_snapshot").(bool) deleteOpts.SkipFinalSnapshot = aws.Bool(skipFinalSnapshot) if skipFinalSnapshot == false { if name, present := d.GetOk("final_snapshot_identifier"); present { deleteOpts.FinalDBSnapshotIdentifier = aws.String(name.(string)) } else { return fmt.Errorf("RDS Cluster FinalSnapshotIdentifier is required when a final snapshot is required") } } log.Printf("[DEBUG] RDS Cluster delete options: %s", deleteOpts) _, err := conn.DeleteDBCluster(&deleteOpts) stateConf := &resource.StateChangeConf{ Pending: []string{"available", "deleting", "backing-up", "modifying"}, Target: []string{"destroyed"}, Refresh: resourceAwsRDSClusterStateRefreshFunc(d, meta), Timeout: 15 * time.Minute, MinTimeout: 3 * time.Second, } // Wait, catching any errors _, err = stateConf.WaitForState() if err != nil { return fmt.Errorf("[WARN] Error deleting RDS Cluster (%s): %s", d.Id(), err) } return nil }