Commit c58854c4 authored by Leonardo Menezes's avatar Leonardo Menezes
Browse files

first version of templates module

parent aa677483
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
package controllers

import models.ElasticServer
import models.analysis.OpenIndices
import models.templates.Templates

import scala.concurrent.ExecutionContext.Implicits.global

class TemplatesController extends BaseController {

  def templates = process { (request, client) =>
    client.getTemplates(ElasticServer(request.host, request.authentication)).map { response =>
      Status(response.status)(Templates(response.body))
    }
  }

  def delete = process { (request, client) =>
    val name = request.get("name")
    client.deleteTemplate(name, ElasticServer(request.host, request.authentication)).map { response =>
      Status(response.status)(Templates(response.body))
    }
  }

  def create = process { (request, client) =>
    val name = request.get("name")
    val template = request.getObj("template")
    client.createTemplate(name, template, ElasticServer(request.host, request.authentication)).map { response =>
      Status(response.status)(Templates(response.body))
    }
  }


}
+15 −0
Original line number Diff line number Diff line
@@ -148,6 +148,21 @@ trait ElasticClient {
    execute(s"${target.host}$path", "GET", None, target.authentication)
  }

  def getTemplates(target: ElasticServer) = {
    val path = s"/_template"
    execute(s"${target.host}$path", "GET", None, target.authentication)
  }

  def createTemplate(name: String, template: JsValue, target: ElasticServer) = {
    val path = s"/_template/$name"
    execute(s"${target.host}$path", "PUT", Some(template.toString), target.authentication)
  }

  def deleteTemplate(name: String, target: ElasticServer) = {
    val path = s"/_template/$name"
    execute(s"${target.host}$path", "DELETE", None, target.authentication)
  }

  def getNodes(target: ElasticServer) = {
    val path = s"/_cat/nodes?format=json"
    execute(s"${target.host}$path", "GET", None, target.authentication)
+3 −0
Original line number Diff line number Diff line
@@ -13,6 +13,9 @@ class CerebroRequest(val host: String, val authentication: Option[ESAuth], body:

  def getArray(name: String) = (body \ name).asOpt[Array[String]].getOrElse(throw MissingRequiredParamException(name))

  def getObj(name: String) =
    (body \ name).asOpt[JsObject].getOrElse(throw MissingRequiredParamException(name))

  def getOpt(name: String) =
    (body \ name).asOpt[JsValue]

+14 −0
Original line number Diff line number Diff line
package models.templates

import play.api.libs.json._

object Templates {

  def apply(json: JsValue): JsValue = {
    val names = json.as[JsObject].keys
    JsArray(names.map { name =>
      Json.obj("name" -> name, "template" -> (json \ name).as[JsValue])
    }.toSeq)
  }

}
+5 −0
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ POST /commons/get_node_stats @controllers.CommonsContro
POST        /create_index/get_index_metadata          @controllers.CreateIndexController.getIndexMetadata
POST        /create_index/create                      @controllers.CreateIndexController.execute

# Index templates module
POST        /templates                                @controllers.TemplatesController.templates
POST        /templates/delete                         @controllers.TemplatesController.delete
POST        /templates/create                         @controllers.TemplatesController.create

# Connect module
GET         /connect/hosts                            @controllers.ConnectController.index

Loading