Commit 0ff7edc4 authored by Leonardo Menezes's avatar Leonardo Menezes
Browse files

differentiate between success/error on es response

parent fe126981
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ package controllers
import javax.inject.Inject

import controllers.auth.AuthenticationModule
import elastic.ElasticClient
import elastic.{ElasticClient, Error, Success}
import models.{Aliases, CerebroResponse, Hosts}
import play.api.libs.json.JsArray

@@ -14,8 +14,9 @@ class AliasesController @Inject()(val authentication: AuthenticationModule,
                                  client: ElasticClient) extends BaseController {

  def getAliases = process { request =>
    client.getAliases(request.target).map { aliases =>
      CerebroResponse(aliases.status, Aliases(aliases.body))
    client.getAliases(request.target).map {
      case Success(status, aliases) => CerebroResponse(status, Aliases(aliases))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

+17 −12
Original line number Diff line number Diff line
@@ -3,9 +3,9 @@ package controllers
import javax.inject.Inject

import controllers.auth.AuthenticationModule
import elastic.ElasticClient
import models.{CerebroResponse, ElasticServer, Hosts}
import elastic.{ElasticClient, Error, Success}
import models.analysis.{IndexAnalyzers, IndexFields, OpenIndices, Tokens}
import models.{CerebroResponse, Hosts}

import scala.concurrent.ExecutionContext.Implicits.global

@@ -14,22 +14,25 @@ class AnalysisController @Inject()(val authentication: AuthenticationModule,
                                   client: ElasticClient) extends BaseController {

  def getIndices = process { request =>
    client.getIndices(request.target).map { response =>
      CerebroResponse(response.status, OpenIndices(response.body))
    client.getIndices(request.target).map {
      case Success(status, indices) => CerebroResponse(status, OpenIndices(indices))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

  def getIndexAnalyzers = process { request =>
    val index = request.get("index")
    client.getIndexSettings(index, request.target).map { response =>
      CerebroResponse(response.status, IndexAnalyzers(index, response.body))
    client.getIndexSettings(index, request.target).map {
      case Success(status, settings) => CerebroResponse(status, IndexAnalyzers(index, settings))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

  def getIndexFields = process { request =>
    val index = request.get("index")
    client.getIndexMapping(index, request.target).map { response =>
      CerebroResponse(response.status, IndexFields(index, response.body))
    client.getIndexMapping(index, request.target).map {
      case Success(status, mapping) => CerebroResponse(status, IndexFields(index, mapping))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

@@ -37,8 +40,9 @@ class AnalysisController @Inject()(val authentication: AuthenticationModule,
    val index = request.get("index")
    val field = request.get("field")
    val text = request.get("text")
    client.analyzeTextByField(index, field, text, request.target).map { response =>
      CerebroResponse(response.status, Tokens(response.body))
    client.analyzeTextByField(index, field, text, request.target).map {
      case Success(status, tokens) => CerebroResponse(status, Tokens(tokens))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

@@ -46,8 +50,9 @@ class AnalysisController @Inject()(val authentication: AuthenticationModule,
    val index = request.get("index")
    val analyzer = request.get("analyzer")
    val text = request.get("text")
    client.analyzeTextByAnalyzer(index, analyzer, text, request.target).map { response =>
      CerebroResponse(response.status, Tokens(response.body))
    client.analyzeTextByAnalyzer(index, analyzer, text, request.target).map {
      case Success(status, tokens) => CerebroResponse(status, Tokens(tokens))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

+14 −7
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ package controllers
import javax.inject.Inject

import controllers.auth.AuthenticationModule
import elastic.ElasticClient
import elastic.{ElasticClient, Error}
import models.commons.{Indices, Nodes}
import models.{CerebroResponse, Hosts}
import play.api.libs.json.Json
@@ -21,11 +21,18 @@ class ClusterChangesController @Inject()(val authentication: AuthenticationModul
      client.getNodes(request.target),
      client.main(request.target)
    )).map { responses =>
      Json.obj(
      val failed = responses.find(_.isInstanceOf[Error])
      failed match {
        case None =>
          val body = Json.obj(
            "indices" -> Indices(responses(0).body),
            "nodes" -> Nodes(responses(1).body),
            "cluster_name" -> (responses(2).body \ "cluster_name").as[String]
          )
    }.map(CerebroResponse(200, _))
          CerebroResponse(200, body)
        case Some(f) =>
          CerebroResponse(f.status, f.body)
      }
    }
  }
}
+34 −8
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ package controllers
import javax.inject.Inject

import controllers.auth.AuthenticationModule
import elastic.ElasticClient
import elastic.{ElasticClient, Error}
import models.overview.ClusterOverview
import models.{CerebroResponse, Hosts, ShardStats}

@@ -26,9 +26,24 @@ class ClusterOverviewController @Inject()(val authentication: AuthenticationModu
        client.nodes(request.target),
        client.main(request.target)
      )
    ).map { f =>
      new ClusterOverview(f(0).body, f(1).body, f(2).body, f(3).body, f(4).body, f(5).body, f(6).body, f(7).body).json
    }.map(CerebroResponse(200, _))
    ).map { responses =>
      val failed = responses.find(_.isInstanceOf[Error])
      failed match {
        case Some(f) => CerebroResponse(f.status, f.body)
        case None =>
          val overview = ClusterOverview(
            responses(0).body,
            responses(1).body,
            responses(2).body,
            responses(3).body,
            responses(4).body,
            responses(5).body,
            responses(6).body,
            responses(7).body
          )
          CerebroResponse(200, overview)
      }
    }
  }

  def disableShardAllocation = process { request =>
@@ -83,10 +98,21 @@ class ClusterOverviewController @Inject()(val authentication: AuthenticationModu
    val index = request.get("index")
    val shard = request.getInt("shard")
    val node = request.get("node")
    client.getShardStats(index, request.target).zip(
    Future.sequence(
      Seq(
        client.getShardStats(index, request.target),
        client.getIndexRecovery(index, request.target)
    ).map {
      case (stats, recovery) => CerebroResponse(200, ShardStats(index, node, shard, stats.body, recovery.body))
      )
    ).map { responses =>
      val failed = responses.find(_.isInstanceOf[Error])
      failed match {
        case None =>
          val stats = responses(0).body
          val recovery = responses(1).body
          CerebroResponse(200, ShardStats(index, node, shard, stats, recovery))
        case Some(f) =>
          CerebroResponse(f.status, f.body)
      }
    }
  }

+7 −5
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ package controllers
import javax.inject.Inject

import controllers.auth.AuthenticationModule
import elastic.ElasticClient
import elastic.{ElasticClient, Error, Success}
import models.commons.{Indices, Nodes}
import models.{CerebroResponse, Hosts}

@@ -14,14 +14,16 @@ class CommonsController @Inject()(val authentication: AuthenticationModule,
                                  client: ElasticClient) extends BaseController {

  def indices = process { request =>
    client.getIndices(request.target).map { response =>
      CerebroResponse(response.status, Indices(response.body))
    client.getIndices(request.target).map {
      case Success(status, indices) => CerebroResponse(status, Indices(indices))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

  def nodes = process { request =>
    client.getNodes(request.target).map { response =>
      CerebroResponse(response.status, Nodes(response.body))
    client.getNodes(request.target).map {
      case Success(status, nodes) => CerebroResponse(status, Nodes(nodes))
      case Error(status, error) => CerebroResponse(status, error)
    }
  }

Loading