From 302d9cb3211261a744a3c6783633e9b67a3f2146 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Thu, 10 Oct 2013 15:25:12 +0200 Subject: [PATCH] Handles object deletions in XAPI events. --- src/xo.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/xo.js b/src/xo.js index b096e41..9c18977 100644 --- a/src/xo.js +++ b/src/xo.js @@ -321,18 +321,27 @@ Xo.prototype.start = function (cfg) { return function loop() { return xapi.call('event.next').then(function (events) { _.each(events, function (event) { - var collection = xobjs[xclasses_map[event.class]]; + var klass = event.class; + var collection = xobjs[xclasses_map[klass]]; if (collection) { - var record = event.snapshot; - record.id = event.ref; - record.pool = pool_id; + var operation = event.operation; + var ref = event.ref; - console.log(xapi.host, event.class, event.ref); + console.log(xapi.host, operation, klass, ref); - // @todo Handle operation types. - collection.add(event.snapshot, {'replace': true}); + if ('del' === event.operation) + { + collection.remove(event.ref); + } + else + { + var record = event.snapshot; + record.id = ref; + record.pool = pool_id; + collection.add(record, {'replace': true}); + } } }); @@ -364,7 +373,9 @@ Xo.prototype.start = function (cfg) { _.each(servers, connect); }); xo.servers.on('remove', function (server_ids) { - // @todo + _.each(server_ids, function (server_id) { + delete xo.connections[server_id]; + }); }); // xo events are used to automatically close connections if the