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))
}
}