diff --git a/src/api.js b/src/api.js index c49e364..ded26d6 100644 --- a/src/api.js +++ b/src/api.js @@ -549,19 +549,21 @@ Api.fn.xo = { Api.fn.xapi = { '__catchAll': function (session, req) { - var RE = /^xapi\.(pool|host|vm|network|sr|vdi|pif|vif)\.getAll$/; - var match; - if (!(match = req.method.match(RE))) + var RE = /^xapi\.(.*)\.getAll$/; + var match = req.method.match(RE); + var collection; + if (!match || !(collection = this.xo.xobjs[match[1]])) { throw Api.err.INVALID_METHOD; } - var xobjs = this.xo.xobjs; - var collection = xobjs[match[1]] || xobjs[match[1].toUpperCase()]; - return collection.get(); }, + 'getClasses': function () { + return this.xo.xclasses; + }, + 'vm': { 'pause': function (session, req) { var p_id = req.params.id; diff --git a/src/xo.js b/src/xo.js index 1f6210f..e4aa691 100644 --- a/src/xo.js +++ b/src/xo.js @@ -315,24 +315,24 @@ Xo.prototype.start = function (cfg) { xo.computeStats(); return function loop() { - return xapi.call('event.next').then(function (event) { - event = event[0]; // @todo Handle multiple events. + return xapi.call('event.next').then(function (events) { + _.each(events, function (event) { + var collection = xobjs[xclasses_map[event.class]]; + if (collection) + { + var record = event.snapshot; + record.id = event.ref; + record.pool = pool_id; - var collection = xobjs[xclasses_map[event.class]]; - if (collection) - { - var record = event.snapshot; - record.id = event.ref; - record.pool = pool_id; + console.log(xapi.host, event.class, event.ref); - console.log(xapi.host, event.class, event.ref); + // @todo Handle operation types. + collection.add(event.snapshot, {'replace': true}); - // @todo Handle operation types. - collection.add(event.snapshot, {'replace': true}); - - xo.computeStats(); - } + } + }); + xo.computeStats(); return loop(); }).fail(function (error) { if ('SESSION_NOT_REGISTERED' === error[0])