def addRecord = Action.async()

in app/controllers/HostInfoController.scala [46:67]


  def addRecord = Action.async(parse.xml) { request=>
    val client = esClientMgr.getClient()

    HostInfo.fromXml(request.body, ZonedDateTime.now()) match {
      case Right(entry)=>
        val idToUse = s"${entry.hostName}"

        client.execute {
            update(idToUse).in(s"$indexName/entry").docAsUpsert(entry)
        }.map({
          case Left(failure) => InternalServerError(GenericErrorResponse("elasticsearch_error", failure.error.toString).asJson)
          case Right(success) =>
            Ok(success.result.id)
        }).recoverWith({
          case ex:Throwable=>
            logger.error("Could not create host entry", ex)
            Future(InternalServerError(GenericErrorResponse("elasticsearch_error", ex.getLocalizedMessage).asJson))
        })
      case Left(err)=>
        Future(BadRequest(ErrorListResponse("bad_data", err).asJson))
    }
  }