From 54420b327e2ef5b5c5d3e26445e6446032f822f7 Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Sat, 11 Mar 2017 12:27:10 -0500 Subject: [PATCH] detect when ethereum node comes back online and redeploy --- lib/core/services_monitor.js | 11 +++++++++++ lib/index.js | 10 +++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/core/services_monitor.js b/lib/core/services_monitor.js index 04febab61..2685c5c2e 100644 --- a/lib/core/services_monitor.js +++ b/lib/core/services_monitor.js @@ -1,5 +1,8 @@ var async = require('../utils/async_extend.js'); +// TODO: need to separate colors from states +// i.e use status: /on|off|warn/ not /red|green/ +// it's up to the logger or console to determine the color var ServicesMonitor = function(options) { this.events = options.events; this.logger = options.logger; @@ -16,7 +19,15 @@ ServicesMonitor.prototype.initCheck = function(checkName) { if (!check) { return false; } self.events.on('check:' + checkName, function(obj) { + // TODO: see todo above + if (check && check.status === 'red' && obj.status === 'green') { + self.events.emit('check:backOnline:' + checkName); + } + if (check && check.status === 'green' && obj.status === 'red') { + self.events.emit('check:wentOffline:' + checkName); + } self.checkState[checkName] = obj.name[obj.status]; + check.status = obj.status; self.events.emit("servicesState", self.checkState); }); diff --git a/lib/index.js b/lib/index.js index fc0c360e1..4ed7ad389 100644 --- a/lib/index.js +++ b/lib/index.js @@ -103,12 +103,21 @@ var Embark = { engine.logger.info("loaded plugins: " + pluginList.join(", ")); } + engine.startMonitor(); engine.startService("web3"); engine.startService("pipeline"); engine.startService("abi"); engine.startService("deployment"); engine.startService("ipfs"); + engine.events.on('check:backOnline:Ethereum', function() { + engine.logger.info('Ethereum node detected..'); + engine.config.reloadConfig(); + engine.deployManager.deployContracts(function() { + engine.logger.info('Deployment Done'); + }); + }); + engine.deployManager.deployContracts(function() { engine.startService("fileWatcher"); if (options.runWebserver) { @@ -117,7 +126,6 @@ var Embark = { port: options.serverPort }); } - engine.startMonitor(); callback(); }); }