Listening to redis event for all core models
Change-Id: I183b688cf73b7f54aede5e2b9519f26a54d2790c
diff --git a/src/controllers/redis.js b/src/controllers/redis.js
index 0bcebe3..1ed8a20 100644
--- a/src/controllers/redis.js
+++ b/src/controllers/redis.js
@@ -2,14 +2,16 @@
'use strict';
const socketIo = require('./websocket.js');
- const config = require('../config/config.js').redis;
+ const config = require('../config/config.js');
const logger = require('../config/logger.js');
+ const request = require('superagent');
const socket = socketIo.get();
+ const _ = require('lodash');
var redis = require('redis');
var client = redis.createClient({
- host: config.host,
- port: config.port
+ host: config.redis.host,
+ port: config.redis.port
});
client.on('error', function (err) {
@@ -38,20 +40,21 @@
msg = message;
socket.emit('event', {model: channel, msg: msg});
}
-
});
- const watchedCollections = [
- 'Instance',
- 'Node',
- 'Service',
- 'Slice',
- 'Site',
- 'Subscriber',
- 'Tenant'
- ];
-
- watchedCollections.forEach(c => {
- client.subscribe(c);
+ // dynamically load Model names to listen on channels
+ // NOTE how to listen for models defined by services?
+ request.get(`${config.xos.host}:${config.xos.port}/api/utility/modeldefs`)
+ .end((err, res) => {
+ if (err) {
+ logger.log('error', err);
+ }
+ if (res) {
+ const models = _.map(res.body, i => i.name);
+ _.forEach(models, c => {
+ client.subscribe(c);
+ });
+ }
});
+
})();
\ No newline at end of file