Skip to content
Snippets Groups Projects
Commit 1da3a757 authored by Cédric Moreau's avatar Cédric Moreau
Browse files

[enh] #951 Add hooks for `reset data` and `reset config` events

parent 9b661804
No related branches found
No related tags found
No related merge requests found
...@@ -92,6 +92,8 @@ function Stack(dependencies) { ...@@ -92,6 +92,8 @@ function Stack(dependencies) {
const cli = require('./app/cli')(); const cli = require('./app/cli')();
const configLoadingCallbacks = []; const configLoadingCallbacks = [];
const configBeforeSaveCallbacks = []; const configBeforeSaveCallbacks = [];
const resetDataHooks = [];
const resetConfigHooks = [];
const INPUT = new InputStream(); const INPUT = new InputStream();
const PROCESS = new ProcessStream(); const PROCESS = new ProcessStream();
const loaded = {}; const loaded = {};
...@@ -137,6 +139,20 @@ function Stack(dependencies) { ...@@ -137,6 +139,20 @@ function Stack(dependencies) {
} }
} }
/**
* Reset data/config injection
* -----------------------
*/
if (def.onReset) {
if (def.onReset.data) {
resetDataHooks.push(def.onReset.data);
}
// Before the configuration is saved, the module can make some injection/cleaning
if (def.onReset.config) {
resetConfigHooks.push(def.onReset.config);
}
}
/** /**
* Wizard injection * Wizard injection
* ----------------------- * -----------------------
...@@ -186,6 +202,18 @@ function Stack(dependencies) { ...@@ -186,6 +202,18 @@ function Stack(dependencies) {
}); });
}); });
// Config or Data reset hooks
server.resetDataHook = () => co(function*() {
for (const callback of resetDataHooks) {
yield callback(server.conf, program, logger, server.dal.confDAL);
}
})
server.resetConfigHook = () => co(function*() {
for (const callback of resetConfigHooks) {
yield callback(server.conf, program, logger, server.dal.confDAL);
}
})
// Initialize server (db connection, ...) // Initialize server (db connection, ...)
try { try {
server.onPluggedFSHook = () => co(function*() { server.onPluggedFSHook = () => co(function*() {
......
...@@ -225,22 +225,26 @@ function Server (home, memoryOnly, overrideConf) { ...@@ -225,22 +225,26 @@ function Server (home, memoryOnly, overrideConf) {
}); });
this.resetAll = (done) => co(function*() { this.resetAll = (done) => co(function*() {
yield that.resetDataHook()
yield that.resetConfigHook()
const files = ['stats', 'cores', 'current', directory.DUNITER_DB_NAME, directory.DUNITER_DB_NAME + '.db', directory.DUNITER_DB_NAME + '.log', directory.WOTB_FILE, 'export.zip', 'import.zip', 'conf']; const files = ['stats', 'cores', 'current', directory.DUNITER_DB_NAME, directory.DUNITER_DB_NAME + '.db', directory.DUNITER_DB_NAME + '.log', directory.WOTB_FILE, 'export.zip', 'import.zip', 'conf'];
const dirs = ['blocks', 'blockchain', 'ud_history', 'branches', 'certs', 'txs', 'cores', 'sources', 'links', 'ms', 'identities', 'peers', 'indicators', 'leveldb']; const dirs = ['blocks', 'blockchain', 'ud_history', 'branches', 'certs', 'txs', 'cores', 'sources', 'links', 'ms', 'identities', 'peers', 'indicators', 'leveldb'];
return resetFiles(files, dirs, done); return resetFiles(files, dirs, done);
}); });
this.resetData = (done) => co(function*(){ this.resetData = (done) => co(function*(){
yield that.resetDataHook()
const files = ['stats', 'cores', 'current', directory.DUNITER_DB_NAME, directory.DUNITER_DB_NAME + '.db', directory.DUNITER_DB_NAME + '.log', directory.WOTB_FILE]; const files = ['stats', 'cores', 'current', directory.DUNITER_DB_NAME, directory.DUNITER_DB_NAME + '.db', directory.DUNITER_DB_NAME + '.log', directory.WOTB_FILE];
const dirs = ['blocks', 'ud_history', 'branches', 'certs', 'txs', 'cores', 'sources', 'links', 'ms', 'identities', 'peers', 'indicators', 'leveldb']; const dirs = ['blocks', 'ud_history', 'branches', 'certs', 'txs', 'cores', 'sources', 'links', 'ms', 'identities', 'peers', 'indicators', 'leveldb'];
yield resetFiles(files, dirs, done); yield resetFiles(files, dirs, done);
}); });
this.resetConf = (done) => { this.resetConf = (done) => co(function*() {
yield that.resetConfigHook()
const files = ['conf']; const files = ['conf'];
const dirs = []; const dirs = [];
return resetFiles(files, dirs, done); return resetFiles(files, dirs, done);
}; });
this.resetStats = (done) => { this.resetStats = (done) => {
const files = ['stats']; const files = ['stats'];
...@@ -455,10 +459,20 @@ function Server (home, memoryOnly, overrideConf) { ...@@ -455,10 +459,20 @@ function Server (home, memoryOnly, overrideConf) {
*/ */
this.generatorNewCertsToLinks = () => Promise.resolve({}) this.generatorNewCertsToLinks = () => Promise.resolve({})
/* /**
* Default hook on file system plugging. To be overriden by module system. * Default hook on file system plugging. To be overriden by module system.
*/ */
this.onPluggedFSHook = () => Promise.resolve({}) this.onPluggedFSHook = () => Promise.resolve({})
/**
* Default hook on data reset. To be overriden by module system.
*/
this.resetDataHook = () => Promise.resolve({})
/**
* Default hook on data reset. To be overriden by module system.
*/
this.resetConfigHook = () => Promise.resolve({})
} }
util.inherits(Server, stream.Duplex); util.inherits(Server, stream.Duplex);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment