def parseHosts()

in riff-raff/app/resources/PrismLookup.scala [162:184]


    def parseHosts(json: JsValue, entity: String = "instances"): Seq[Host] = {
      val tryHosts = (json \ "data" \ entity).as[JsArray].value.map { jsHost =>
        Try(jsHost.as[Host])
      }

      val errors = tryHosts.flatMap {
        case f @ Failure(e) => Some(f)
        case _              => None
      }
      if (errors.nonEmpty)
        log.warn(
          s"Encountered ${errors.size} (of ${tryHosts.size}) $entity records that could not be parsed in Prism response"
        )
      if (log.isDebugEnabled)
        errors.foreach(e =>
          log.debug("Couldn't parse instance from Prism data", e.exception)
        )

      tryHosts.toSeq.flatMap {
        case Success(hosts) => Some(hosts)
        case _              => None
      }
    }