Commit 99f8d510 authored by Leonardo Menezes's avatar Leonardo Menezes
Browse files

refactored controllers

parent 6af6e2e9
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
package controllers

import models.CerebroRequest
import play.api.Logger
import play.api.mvc.{Action, Controller, Result}

import scala.concurrent.Future

trait BaseController extends Controller {

  protected val logger = Logger("elastic")

  def execute = Action.async(parse.json) { request =>
    try {
      processRequest(CerebroRequest(request.body))
    } catch {
      case _ => Future.successful(Status(500)(s"Error")) // FIXME: proper error handling
    }
  }

  def processRequest: CerebroRequest => Future[Result]

}
+15 −0
Original line number Diff line number Diff line
package controllers

import elastic.ElasticClient.clearIndexCache

import scala.concurrent.ExecutionContext.Implicits.global

class ClearIndexCacheController extends BaseController {

  def processRequest = { request =>
    clearIndexCache(request.get("indices"), request.host).map {
      response => Status(response.status)(response.body)
    }
  }

}
+15 −0
Original line number Diff line number Diff line
package controllers

import elastic.ElasticClient.closeIndex

import scala.concurrent.ExecutionContext.Implicits.global

class CloseIndexController extends BaseController {

  def processRequest = { request =>
    closeIndex(request.get("indices"), request.host).map {
      response => Status(response.status)(response.body)
    }
  }

}
+16 −17
Original line number Diff line number Diff line
@@ -2,30 +2,29 @@ package controllers

import elastic.ElasticClient._
import models.overview.ClusterOverview
import play.api.mvc.{Action, Controller}

import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future


object ClusterOverviewController extends Controller {
class ClusterOverviewController extends BaseController {

  def index = Action.async {
  def processRequest = {
    request => {
      val host = request.queryString.getOrElse("host", Seq("http://localhost:9200")).head
      try {
        val response = Future.sequence(
          Seq(clusterState(host), nodesStats(host), indicesStats(host), clusterSettings(host), aliases(host), clusterHealth(host), nodes(host), main(host))
      Future.sequence(
        Seq(
          clusterState(request.host),
          nodesStats(request.host),
          indicesStats(request.host),
          clusterSettings(request.host),
          aliases(request.host),
          clusterHealth(request.host),
          nodes(request.host),
          main(request.host)
        )
      ).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
        }.recover {
          case e =>
            throw e
        }
        response.map(Ok(_))
      } catch {
        case _ => Future.successful(Status(500)(s"Cannot connect to $host"))
      }
      }.map(Ok(_))
    }

  }
+15 −0
Original line number Diff line number Diff line
package controllers

import elastic.ElasticClient.deleteIndex

import scala.concurrent.ExecutionContext.Implicits.global

class DeleteIndexController extends BaseController {

  def processRequest = { request =>
    deleteIndex(request.get("indices"), request.host).map {
      response => Status(response.status)(response.body)
    }
  }

}
Loading