Skip to content
This repository was archived by the owner on Jun 5, 2018. It is now read-only.

Commit 1673773

Browse files
committed
Fix deleteDNSRecord
Make sure only the desired record is deleted taking into account that the `Start*` params only assure that `ListResourceRecordSets()` returns the records whose attributes are lexicographically greater than the corresponding `Start*` params. Improve the logging in this method.
1 parent 61783f1 commit 1673773

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

ecssd_agent.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -333,20 +333,26 @@ func deleteDNSRecord(serviceName string, dockerId string) error {
333333
r53 := route53.New(sess)
334334
srvRecordName := serviceName + "." + DNSName
335335
srvSetIdentifier := configuration.Hostname + ":" + dockerId
336+
log.Infof("Deleting Record %s (%s)", srvRecordName, srvSetIdentifier)
336337
// This API Call looks for the Route53 DNS record for this service and docker ID to get the values to delete
337338
paramsList := &route53.ListResourceRecordSetsInput{
338-
HostedZoneId: aws.String(configuration.HostedZoneId), // Required
339-
MaxItems: aws.String("100"),
340-
StartRecordName: aws.String(srvRecordName),
341-
StartRecordType: aws.String(route53.RRTypeSrv),
339+
HostedZoneId: aws.String(configuration.HostedZoneId), // Required
340+
MaxItems: aws.String("100"),
341+
StartRecordIdentifier: aws.String(srvSetIdentifier),
342+
StartRecordName: aws.String(srvRecordName),
343+
StartRecordType: aws.String(route53.RRTypeSrv)
342344
}
343345
more := true
344346
var recordSetToDelete *route53.ResourceRecordSet
345347
resp, err := r53.ListResourceRecordSets(paramsList)
346348
for more && recordSetToDelete == nil && err == nil {
347349
for _, rrset := range resp.ResourceRecordSets {
348-
if isManagedResourceRecordSet(rrset) && *rrset.SetIdentifier == srvSetIdentifier {
350+
if isManagedResourceRecordSet(rrset) &&
351+
*rrset.SetIdentifier == srvSetIdentifier &&
352+
strings.HasPrefix(*rrset.Name, srvRecordName) &&
353+
*rrset.Type == route53.RRTypeSrv {
349354
recordSetToDelete = rrset
355+
break
350356
}
351357
}
352358

@@ -361,7 +367,7 @@ func deleteDNSRecord(serviceName string, dockerId string) error {
361367
return err
362368
}
363369
if recordSetToDelete == nil {
364-
log.Error("Route53 record doesn't exist")
370+
log.Errorf("Route53 record %s (%s) doesn't exist", srvRecordName, srvSetIdentifier)
365371
return nil
366372
}
367373

@@ -381,7 +387,7 @@ func deleteDNSRecord(serviceName string, dockerId string) error {
381387
_, err = r53.ChangeResourceRecordSets(params)
382388
logErrorNoFatal(err)
383389
if err == nil {
384-
log.Info("Record " + srvRecordName + " deleted")
390+
log.Infof("Record %s (%s) deleted", srvRecordName, srvSetIdentifier)
385391
}
386392
return err
387393
}

0 commit comments

Comments
 (0)