From 1d848f5cb8796ec6804c2f83357707b86f65a14c Mon Sep 17 00:00:00 2001 From: Pedro Kiefer Date: Tue, 21 Mar 2023 10:27:49 -0300 Subject: [PATCH] refactor: add a filter for route53 API results as it might return larger values than requested --- .../vinyldns/route53/backend/Route53Backend.scala | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/modules/r53/src/main/scala/vinyldns/route53/backend/Route53Backend.scala b/modules/r53/src/main/scala/vinyldns/route53/backend/Route53Backend.scala index 9625b7e61..2997c551f 100644 --- a/modules/r53/src/main/scala/vinyldns/route53/backend/Route53Backend.scala +++ b/modules/r53/src/main/scala/vinyldns/route53/backend/Route53Backend.scala @@ -106,10 +106,17 @@ class Route53Backend( * @return A list of record sets matching the name, empty if not found */ def resolve(name: String, zoneName: String, typ: RecordType): IO[List[RecordSet]] = { + val fqdn = Fqdn.merge(name, zoneName).fqdn + def filterResourceRecordSet( + rrs: java.util.List[ResourceRecordSet], + rrType: RRType + ): java.util.List[ResourceRecordSet] = + rrs.asScala.filter { r => + r.getName == fqdn && RRType.fromValue(r.getType) == rrType + }.asJava for { hostedZoneId <- lookupHostedZone(zoneName) awsRRType <- OptionT.fromOption[IO](toRoute53RecordType(typ)) - fqdn = Fqdn.merge(name, zoneName).fqdn result <- OptionT.liftF { r53( new ListResourceRecordSetsRequest() @@ -119,7 +126,10 @@ class Route53Backend( client.listResourceRecordSetsAsync ) } - } yield toVinylRecordSets(result.getResourceRecordSets, zoneName: String) + } yield toVinylRecordSets( + filterResourceRecordSet(result.getResourceRecordSets, awsRRType), + zoneName: String + ) }.getOrElse(Nil) /**