in discovery-marathon-api/src/main/scala/org/apache/pekko/discovery/marathon/MarathonApiServiceDiscovery.scala [96:133]
override def lookup(lookup: Lookup, resolveTimeout: FiniteDuration): Future[Resolved] = {
val uri =
Uri(settings.appApiUrl).withQuery(
Uri.Query(
"embed" -> "apps.tasks",
"embed" -> "apps.deployments",
"label" -> settings.appLabelQuery.format(lookup.serviceName)))
val request = HttpRequest(uri = uri)
log.info("Requesting seed nodes by: {}", request.uri)
val portName = lookup.portName match {
case Some(name) => name
case None => settings.appPortName
}
for {
response <- http.singleRequest(request)
entity <- response.entity.toStrict(resolveTimeout)
appList <- {
log.debug("Marathon API entity: [{}]", entity.data.utf8String)
val unmarshalled = Unmarshal(entity).to[AppList]
unmarshalled.failed.foreach { _ =>
log.error(
"Failed to unmarshal Marathon API response status [{}], entity: [{}], uri: [{}]",
response.status.value,
entity.data.utf8String,
uri)
}
unmarshalled
}
} yield Resolved(lookup.serviceName, targets(appList, portName))
}