Loading app/controllers/ClusterChangesController.scala 0 → 100644 +25 −0 Original line number Diff line number Diff line package controllers import models.ElasticServer import models.commons.{Indices, Nodes} import play.api.libs.json.Json import scala.concurrent.Future import scala.concurrent.ExecutionContext.Implicits.global class ClusterChangesController extends BaseController { def get = process { (request, client) => Future.sequence(Seq( client.getIndices(ElasticServer(request.host, request.authentication)), client.getNodes(ElasticServer(request.host, request.authentication)), client.main(ElasticServer(request.host, request.authentication)) )).map { responses => Json.obj( "indices" -> Indices(responses(0).body), "nodes" -> Nodes(responses(1).body), "cluster_name" -> (responses(2).body \ "cluster_name").as[String] ) }.map(Ok(_)) } } conf/routes +3 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ POST /analysis/fields @controllers.AnalysisContr POST /analysis/analyze/analyzer @controllers.AnalysisController.analyzeByAnalyzer POST /analysis/analyze/field @controllers.AnalysisController.analyzeByField # Cluster Changes Controller POST /cluster_changes @controllers.ClusterChangesController.get # Commons POST /commons/indices @controllers.CommonsController.indices POST /commons/nodes @controllers.CommonsController.nodes Loading public/js/app.js +45 −35 Original line number Diff line number Diff line Loading @@ -1660,39 +1660,48 @@ angular.module('cerebro').factory('ClusterChangesService', [ '$rootScope', 'AlertService', 'RefreshService', 'DataService', function($rootScope, AlertService, RefreshService, DataService) { var indices; var nodes; var current = { indices: undefined, noeds: undefined, clusterName: undefined }; var process = function() { var successIndices = function(currentIndices) { if (indices) { var created = difference(currentIndices, indices); var deleted = difference(indices, currentIndices); var processNodeChanges = function(nodes) { var joined = difference(nodes, current.nodes); var left = difference(current.nodes, nodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } current.nodes = nodes; }; var processIndicesChanges = function(indices) { var created = difference(indices, current.indices); var deleted = difference(current.indices, indices); if (created.length > 0) { info(created, ' indices created'); } if (deleted.length > 0) { warn(deleted, ' indices deleted'); } } indices = currentIndices; current.indices = indices; }; DataService.getIndices(successIndices, angular.noop); var successNodes = function(currentNodes) { if (nodes) { var joined = difference(currentNodes, nodes); var left = difference(nodes, currentNodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } var process = function() { var success = function(data) { if (current.clusterName === data.cluster_name) { processNodeChanges(data.nodes); processIndicesChanges(data.indices); } else { current.clusterName = data.cluster_name; current.indices = data.indices; current.nodes = data.nodes; } nodes = currentNodes; }; DataService.getNodes(successNodes, angular.noop); DataService.clusterChanges(success, angular.noop); }; var difference = function(set1, set2) { Loading @@ -1710,12 +1719,8 @@ angular.module('cerebro').factory('ClusterChangesService', [ }; $rootScope.$watch( function() { return RefreshService.lastUpdate(); }, function() { process(); }, function() { return RefreshService.lastUpdate(); }, function() { process(); }, true ); Loading Loading @@ -1874,6 +1879,11 @@ angular.module('cerebro').factory('DataService', ['$rootScope', '$timeout', request('/aliases/update_aliases', {changes: changes}, success, error); }; // ---------- Cluster State Changes ---------- this.clusterChanges = function(success, error) { request('/cluster_changes', {}, success, error); }; // ---------- Connect ---------- this.getHosts = function(success, error) { var config = { Loading src/app/shared/services/cluster_changes.js +40 −35 Original line number Diff line number Diff line Loading @@ -2,39 +2,48 @@ angular.module('cerebro').factory('ClusterChangesService', [ '$rootScope', 'AlertService', 'RefreshService', 'DataService', function($rootScope, AlertService, RefreshService, DataService) { var indices; var nodes; var current = { indices: undefined, noeds: undefined, clusterName: undefined }; var process = function() { var successIndices = function(currentIndices) { if (indices) { var created = difference(currentIndices, indices); var deleted = difference(indices, currentIndices); var processNodeChanges = function(nodes) { var joined = difference(nodes, current.nodes); var left = difference(current.nodes, nodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } current.nodes = nodes; }; var processIndicesChanges = function(indices) { var created = difference(indices, current.indices); var deleted = difference(current.indices, indices); if (created.length > 0) { info(created, ' indices created'); } if (deleted.length > 0) { warn(deleted, ' indices deleted'); } } indices = currentIndices; current.indices = indices; }; DataService.getIndices(successIndices, angular.noop); var successNodes = function(currentNodes) { if (nodes) { var joined = difference(currentNodes, nodes); var left = difference(nodes, currentNodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } var process = function() { var success = function(data) { if (current.clusterName === data.cluster_name) { processNodeChanges(data.nodes); processIndicesChanges(data.indices); } else { current.clusterName = data.cluster_name; current.indices = data.indices; current.nodes = data.nodes; } nodes = currentNodes; }; DataService.getNodes(successNodes, angular.noop); DataService.clusterChanges(success, angular.noop); }; var difference = function(set1, set2) { Loading @@ -52,12 +61,8 @@ angular.module('cerebro').factory('ClusterChangesService', [ }; $rootScope.$watch( function() { return RefreshService.lastUpdate(); }, function() { process(); }, function() { return RefreshService.lastUpdate(); }, function() { process(); }, true ); Loading src/app/shared/services/data.js +5 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,11 @@ angular.module('cerebro').factory('DataService', ['$rootScope', '$timeout', request('/aliases/update_aliases', {changes: changes}, success, error); }; // ---------- Cluster State Changes ---------- this.clusterChanges = function(success, error) { request('/cluster_changes', {}, success, error); }; // ---------- Connect ---------- this.getHosts = function(success, error) { var config = { Loading Loading
app/controllers/ClusterChangesController.scala 0 → 100644 +25 −0 Original line number Diff line number Diff line package controllers import models.ElasticServer import models.commons.{Indices, Nodes} import play.api.libs.json.Json import scala.concurrent.Future import scala.concurrent.ExecutionContext.Implicits.global class ClusterChangesController extends BaseController { def get = process { (request, client) => Future.sequence(Seq( client.getIndices(ElasticServer(request.host, request.authentication)), client.getNodes(ElasticServer(request.host, request.authentication)), client.main(ElasticServer(request.host, request.authentication)) )).map { responses => Json.obj( "indices" -> Indices(responses(0).body), "nodes" -> Nodes(responses(1).body), "cluster_name" -> (responses(2).body \ "cluster_name").as[String] ) }.map(Ok(_)) } }
conf/routes +3 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,9 @@ POST /analysis/fields @controllers.AnalysisContr POST /analysis/analyze/analyzer @controllers.AnalysisController.analyzeByAnalyzer POST /analysis/analyze/field @controllers.AnalysisController.analyzeByField # Cluster Changes Controller POST /cluster_changes @controllers.ClusterChangesController.get # Commons POST /commons/indices @controllers.CommonsController.indices POST /commons/nodes @controllers.CommonsController.nodes Loading
public/js/app.js +45 −35 Original line number Diff line number Diff line Loading @@ -1660,39 +1660,48 @@ angular.module('cerebro').factory('ClusterChangesService', [ '$rootScope', 'AlertService', 'RefreshService', 'DataService', function($rootScope, AlertService, RefreshService, DataService) { var indices; var nodes; var current = { indices: undefined, noeds: undefined, clusterName: undefined }; var process = function() { var successIndices = function(currentIndices) { if (indices) { var created = difference(currentIndices, indices); var deleted = difference(indices, currentIndices); var processNodeChanges = function(nodes) { var joined = difference(nodes, current.nodes); var left = difference(current.nodes, nodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } current.nodes = nodes; }; var processIndicesChanges = function(indices) { var created = difference(indices, current.indices); var deleted = difference(current.indices, indices); if (created.length > 0) { info(created, ' indices created'); } if (deleted.length > 0) { warn(deleted, ' indices deleted'); } } indices = currentIndices; current.indices = indices; }; DataService.getIndices(successIndices, angular.noop); var successNodes = function(currentNodes) { if (nodes) { var joined = difference(currentNodes, nodes); var left = difference(nodes, currentNodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } var process = function() { var success = function(data) { if (current.clusterName === data.cluster_name) { processNodeChanges(data.nodes); processIndicesChanges(data.indices); } else { current.clusterName = data.cluster_name; current.indices = data.indices; current.nodes = data.nodes; } nodes = currentNodes; }; DataService.getNodes(successNodes, angular.noop); DataService.clusterChanges(success, angular.noop); }; var difference = function(set1, set2) { Loading @@ -1710,12 +1719,8 @@ angular.module('cerebro').factory('ClusterChangesService', [ }; $rootScope.$watch( function() { return RefreshService.lastUpdate(); }, function() { process(); }, function() { return RefreshService.lastUpdate(); }, function() { process(); }, true ); Loading Loading @@ -1874,6 +1879,11 @@ angular.module('cerebro').factory('DataService', ['$rootScope', '$timeout', request('/aliases/update_aliases', {changes: changes}, success, error); }; // ---------- Cluster State Changes ---------- this.clusterChanges = function(success, error) { request('/cluster_changes', {}, success, error); }; // ---------- Connect ---------- this.getHosts = function(success, error) { var config = { Loading
src/app/shared/services/cluster_changes.js +40 −35 Original line number Diff line number Diff line Loading @@ -2,39 +2,48 @@ angular.module('cerebro').factory('ClusterChangesService', [ '$rootScope', 'AlertService', 'RefreshService', 'DataService', function($rootScope, AlertService, RefreshService, DataService) { var indices; var nodes; var current = { indices: undefined, noeds: undefined, clusterName: undefined }; var process = function() { var successIndices = function(currentIndices) { if (indices) { var created = difference(currentIndices, indices); var deleted = difference(indices, currentIndices); var processNodeChanges = function(nodes) { var joined = difference(nodes, current.nodes); var left = difference(current.nodes, nodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } current.nodes = nodes; }; var processIndicesChanges = function(indices) { var created = difference(indices, current.indices); var deleted = difference(current.indices, indices); if (created.length > 0) { info(created, ' indices created'); } if (deleted.length > 0) { warn(deleted, ' indices deleted'); } } indices = currentIndices; current.indices = indices; }; DataService.getIndices(successIndices, angular.noop); var successNodes = function(currentNodes) { if (nodes) { var joined = difference(currentNodes, nodes); var left = difference(nodes, currentNodes); if (joined.length > 0) { info(joined, ' nodes joined the cluster'); } if (left.length > 0) { warn(left, ' nodes left the cluster'); } var process = function() { var success = function(data) { if (current.clusterName === data.cluster_name) { processNodeChanges(data.nodes); processIndicesChanges(data.indices); } else { current.clusterName = data.cluster_name; current.indices = data.indices; current.nodes = data.nodes; } nodes = currentNodes; }; DataService.getNodes(successNodes, angular.noop); DataService.clusterChanges(success, angular.noop); }; var difference = function(set1, set2) { Loading @@ -52,12 +61,8 @@ angular.module('cerebro').factory('ClusterChangesService', [ }; $rootScope.$watch( function() { return RefreshService.lastUpdate(); }, function() { process(); }, function() { return RefreshService.lastUpdate(); }, function() { process(); }, true ); Loading
src/app/shared/services/data.js +5 −0 Original line number Diff line number Diff line Loading @@ -147,6 +147,11 @@ angular.module('cerebro').factory('DataService', ['$rootScope', '$timeout', request('/aliases/update_aliases', {changes: changes}, success, error); }; // ---------- Cluster State Changes ---------- this.clusterChanges = function(success, error) { request('/cluster_changes', {}, success, error); }; // ---------- Connect ---------- this.getHosts = function(success, error) { var config = { Loading