func testAccCheckInstanceDestroyWithProvider(s *terraform.State, provider *schema.Provider) error { conn := provider.Meta().(*AWSClient).ec2conn for _, rs := range s.RootModule().Resources { if rs.Type != "aws_instance" { continue } // Try to find the resource resp, err := conn.DescribeInstances(&ec2.DescribeInstancesInput{ InstanceIds: []*string{aws.String(rs.Primary.ID)}, }) if err == nil { for _, r := range resp.Reservations { for _, i := range r.Instances { if i.State != nil && *i.State.Name != "terminated" { return fmt.Errorf("Found unterminated instance: %s", i) } } } } // Verify the error is what we want if ae, ok := err.(awserr.Error); ok && ae.Code() == "InvalidInstanceID.NotFound" { continue } return err } return nil }
func testAccCheckRoute53ZoneAssociationExistsWithProvider(s *terraform.State, n string, zone *route53.HostedZone, provider *schema.Provider) error { rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } if rs.Primary.ID == "" { return fmt.Errorf("No zone association ID is set") } zone_id, vpc_id := resourceAwsRoute53ZoneAssociationParseId(rs.Primary.ID) conn := provider.Meta().(*AWSClient).r53conn resp, err := conn.GetHostedZone(&route53.GetHostedZoneInput{Id: aws.String(zone_id)}) if err != nil { return fmt.Errorf("Hosted zone err: %v", err) } exists := false for _, vpc := range resp.VPCs { if vpc_id == *vpc.VPCId { exists = true } } if !exists { return fmt.Errorf("Hosted zone association not found") } *zone = *resp.HostedZone return nil }
func testAccCheckRoute53ZoneDestroyWithProvider(s *terraform.State, provider *schema.Provider) error { conn := provider.Meta().(*AWSClient).r53conn for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route53_zone" { continue } _, err := conn.GetHostedZone(&route53.GetHostedZoneInput{Id: aws.String(rs.Primary.ID)}) if err == nil { return fmt.Errorf("Hosted zone still exists") } } return nil }
func testAccCheckRoute53DelegationSetDestroy(s *terraform.State, provider *schema.Provider) error { conn := provider.Meta().(*AWSClient).r53conn for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route53_delegation_set" { continue } _, err := conn.GetReusableDelegationSet(&route53.GetReusableDelegationSetInput{Id: aws.String(rs.Primary.ID)}) if err == nil { return fmt.Errorf("Delegation set still exists") } } return nil }
func testAccCheckRoute53ZoneExistsWithProvider(s *terraform.State, n string, zone *route53.GetHostedZoneOutput, provider *schema.Provider) error { rs, ok := s.RootModule().Resources[n] if !ok { return fmt.Errorf("Not found: %s", n) } if rs.Primary.ID == "" { return fmt.Errorf("No hosted zone ID is set") } conn := provider.Meta().(*AWSClient).r53conn resp, err := conn.GetHostedZone(&route53.GetHostedZoneInput{Id: aws.String(rs.Primary.ID)}) if err != nil { return fmt.Errorf("Hosted zone err: %v", err) } aws_comment := *resp.HostedZone.Config.Comment rs_comment := rs.Primary.Attributes["comment"] if rs_comment != "" && rs_comment != aws_comment { return fmt.Errorf("Hosted zone with comment '%s' found but does not match '%s'", aws_comment, rs_comment) } if !*resp.HostedZone.Config.PrivateZone { sorted_ns := make([]string, len(resp.DelegationSet.NameServers)) for i, ns := range resp.DelegationSet.NameServers { sorted_ns[i] = *ns } sort.Strings(sorted_ns) for idx, ns := range sorted_ns { attribute := fmt.Sprintf("name_servers.%d", idx) dsns := rs.Primary.Attributes[attribute] if dsns != ns { return fmt.Errorf("Got: %v for %v, Expected: %v", dsns, attribute, ns) } } } *zone = *resp return nil }
func testAccCheckRoute53ZoneAssociationDestroyWithProvider(s *terraform.State, provider *schema.Provider) error { conn := provider.Meta().(*AWSClient).r53conn for _, rs := range s.RootModule().Resources { if rs.Type != "aws_route53_zone_association" { continue } zone_id, vpc_id := resourceAwsRoute53ZoneAssociationParseId(rs.Primary.ID) resp, err := conn.GetHostedZone(&route53.GetHostedZoneInput{Id: aws.String(zone_id)}) if err != nil { exists := false for _, vpc := range resp.VPCs { if vpc_id == *vpc.VPCId { exists = true } } if exists { return fmt.Errorf("VPC: %v is still associated to HostedZone: %v", vpc_id, zone_id) } } } return nil }