forked from openshift/hive
/
dnscleanup.go
56 lines (51 loc) · 1.7 KB
/
dnscleanup.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package installmanager
import (
awsclient "github.com/openshift/hive/pkg/awsclient"
log "github.com/sirupsen/logrus"
awssdk "github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/route53"
)
// cleanupDNSZone queries the Route53 zone and deletes any A records found. Other record
// types may be added in the future, but right now this is the only one we're seeing
// leak and conflict.
// May no longer be necessary once https://jira.coreos.com/browse/CORS-1195 is fixed.
func cleanupDNSZone(dnsZoneID, region string, logger log.FieldLogger) error {
zoneLogger := logger.WithField("dnsZoneID", dnsZoneID)
zoneLogger.Info("cleaning up DNSZone")
awsClient, err := awsclient.NewClient(nil, "", "", region)
if err != nil {
return err
}
recordsOutput, err := awsClient.ListResourceRecordSets(
&route53.ListResourceRecordSetsInput{
HostedZoneId: awssdk.String(dnsZoneID),
},
)
if err != nil {
return err
}
for _, r := range recordsOutput.ResourceRecordSets {
// We're only experiencing problems with A records, so these are all we cleanup for now:
if *r.Type == "A" {
zoneLogger.WithFields(log.Fields{"name": *r.Name, "type": *r.Type}).Info("deleting A record")
request := &route53.ChangeResourceRecordSetsInput{
ChangeBatch: &route53.ChangeBatch{
Changes: []*route53.Change{
{
Action: awssdk.String("DELETE"),
ResourceRecordSet: r,
},
},
},
HostedZoneId: awssdk.String(dnsZoneID),
}
_, err := awsClient.ChangeResourceRecordSets(request)
if err != nil {
logger.WithError(err).WithField("recordset", r.Name).Warn("error deleting recordset")
return err
}
}
}
zoneLogger.Info("DNSZone A records deleted")
return nil
}