Loading app/models/overview/ClusterOverview.scala +5 −6 Original line number Diff line number Diff line Loading @@ -42,10 +42,8 @@ object Nodes { def apply(clusterState: JsValue, nodesStats: JsValue, nodes: JsValue): Seq[JsValue] = { val currentMaster = (clusterState \ "master_node").as[String] (nodes \ "nodes").as[JsObject].value.map { case (nodeId, info) => val master = (info \ "attributes" \ "master").asOpt[String].getOrElse("true").equals("true") val data = (info \ "attributes" \ "data").asOpt[String].getOrElse("true").equals("true") val client = (info \ "attributes" \ "client").asOpt[String].getOrElse("false").equals("true") val nodeRoles = NodeRoles(info) val stats = (nodesStats \ "nodes" \ nodeId).as[JsObject] // FIXME: 1.X val totalInBytes = (stats \ "fs" \ "total" \ "total_in_bytes").asOpt[Long].getOrElse(0l) Loading @@ -64,9 +62,10 @@ object Nodes { "load_average" -> JsNumber(BigDecimal((stats \ "os" \ "load_average").asOpt[Int].getOrElse(0))),// FIXME: 1.X "available_processors" -> (info \ "os" \ "available_processors").as[JsNumber], "cpu_percent" -> cpuPercent, "master" -> JsBoolean(master && !client), "data" -> JsBoolean(data && !client), "client" -> JsBoolean(client || !master && !data), "master" -> JsBoolean(nodeRoles.master), "data" -> JsBoolean(nodeRoles.data), "client" -> JsBoolean(nodeRoles.client), "ingest" -> JsBoolean(nodeRoles.ingest), "heap" -> Json.obj( "used" -> (stats \ "jvm" \ "mem" \ "heap_used_in_bytes").as[JsNumber], "committed" -> (stats \ "jvm" \ "mem" \ "heap_committed_in_bytes").as[JsNumber], Loading app/models/overview/NodeRoles.scala 0 → 100644 +34 −0 Original line number Diff line number Diff line package models.overview import play.api.libs.json.{JsArray, JsString, JsValue} case class NodeRoles(master: Boolean, data: Boolean, ingest: Boolean) { def client: Boolean = !master && !data && !ingest } object NodeRoles { def apply(nodeInfo: JsValue): NodeRoles = { (nodeInfo \ "roles").asOpt[JsArray] match { case Some(JsArray(roles)) => // 5.X NodeRoles( roles.contains(JsString("master")), roles.contains(JsString("data")), roles.contains(JsString("ingest")) ) case None => // 2.X val master = (nodeInfo \ "attributes" \ "master").asOpt[String].getOrElse("true").equals("true") val data = (nodeInfo \ "attributes" \ "data").asOpt[String].getOrElse("true").equals("true") val client = (nodeInfo \ "attributes" \ "client").asOpt[String].getOrElse("false").equals("true") NodeRoles( master && !client, data && !client, false // 2.x doesnt support ingest ) } } } Loading
app/models/overview/ClusterOverview.scala +5 −6 Original line number Diff line number Diff line Loading @@ -42,10 +42,8 @@ object Nodes { def apply(clusterState: JsValue, nodesStats: JsValue, nodes: JsValue): Seq[JsValue] = { val currentMaster = (clusterState \ "master_node").as[String] (nodes \ "nodes").as[JsObject].value.map { case (nodeId, info) => val master = (info \ "attributes" \ "master").asOpt[String].getOrElse("true").equals("true") val data = (info \ "attributes" \ "data").asOpt[String].getOrElse("true").equals("true") val client = (info \ "attributes" \ "client").asOpt[String].getOrElse("false").equals("true") val nodeRoles = NodeRoles(info) val stats = (nodesStats \ "nodes" \ nodeId).as[JsObject] // FIXME: 1.X val totalInBytes = (stats \ "fs" \ "total" \ "total_in_bytes").asOpt[Long].getOrElse(0l) Loading @@ -64,9 +62,10 @@ object Nodes { "load_average" -> JsNumber(BigDecimal((stats \ "os" \ "load_average").asOpt[Int].getOrElse(0))),// FIXME: 1.X "available_processors" -> (info \ "os" \ "available_processors").as[JsNumber], "cpu_percent" -> cpuPercent, "master" -> JsBoolean(master && !client), "data" -> JsBoolean(data && !client), "client" -> JsBoolean(client || !master && !data), "master" -> JsBoolean(nodeRoles.master), "data" -> JsBoolean(nodeRoles.data), "client" -> JsBoolean(nodeRoles.client), "ingest" -> JsBoolean(nodeRoles.ingest), "heap" -> Json.obj( "used" -> (stats \ "jvm" \ "mem" \ "heap_used_in_bytes").as[JsNumber], "committed" -> (stats \ "jvm" \ "mem" \ "heap_committed_in_bytes").as[JsNumber], Loading
app/models/overview/NodeRoles.scala 0 → 100644 +34 −0 Original line number Diff line number Diff line package models.overview import play.api.libs.json.{JsArray, JsString, JsValue} case class NodeRoles(master: Boolean, data: Boolean, ingest: Boolean) { def client: Boolean = !master && !data && !ingest } object NodeRoles { def apply(nodeInfo: JsValue): NodeRoles = { (nodeInfo \ "roles").asOpt[JsArray] match { case Some(JsArray(roles)) => // 5.X NodeRoles( roles.contains(JsString("master")), roles.contains(JsString("data")), roles.contains(JsString("ingest")) ) case None => // 2.X val master = (nodeInfo \ "attributes" \ "master").asOpt[String].getOrElse("true").equals("true") val data = (nodeInfo \ "attributes" \ "data").asOpt[String].getOrElse("true").equals("true") val client = (nodeInfo \ "attributes" \ "client").asOpt[String].getOrElse("false").equals("true") NodeRoles( master && !client, data && !client, false // 2.x doesnt support ingest ) } } }