diff --git a/src/api.js b/src/api.js index ded26d6..1fbd413 100644 --- a/src/api.js +++ b/src/api.js @@ -585,11 +585,8 @@ Api.fn.xapi = { throw Api.err.NO_SUCH_OBJECT; } - return xobjs.pool.first(vm.get('pool_uuid')); - }).then(function (pool) { - var xapi = xo.connections[pool.get('uuid')]; - - return xapi.call('VM.pause', vm.get('ref')); + var xapi = xo.connections[vm.get('pool')]; + return xapi.call('VM.pause', p_id); }).thenResolve(true); }, @@ -601,9 +598,10 @@ Api.fn.xapi = { } var xo = this.xo; + var xobjs = xo.xobjs; var vm; return this.checkPermission(session, 'write').then(function () { - return xo.vms.first(p_id); + return xobjs.VM.first(p_id); }).then(function (tmp) { vm = tmp; @@ -612,11 +610,8 @@ Api.fn.xapi = { throw Api.err.NO_SUCH_OBJECT; } - return xo.pools.first(vm.get('pool_uuid')); - }).then(function (pool) { - var xapi = xo.connections[pool.get('uuid')]; - - return xapi.call('VM.unpause', vm.get('ref')); + var xapi = xo.connections[vm.get('pool')]; + return xapi.call('VM.unpause', p_id); }).thenResolve(true); }, @@ -628,9 +623,10 @@ Api.fn.xapi = { } var xo = this.xo; + var xobjs = xo.xobjs; var vm; return this.checkPermission(session, 'write').then(function () { - return xo.vms.first(p_id); + return xobjs.VM.first(p_id); }).then(function (tmp) { vm = tmp; @@ -639,12 +635,10 @@ Api.fn.xapi = { throw Api.err.NO_SUCH_OBJECT; } - return xo.pools.first(vm.get('pool_uuid')); - }).then(function (pool) { - var xapi = xo.connections[pool.get('uuid')]; + var xapi = xo.connections[vm.get('pool')]; // @todo If XS tools are unavailable, do a hard reboot. - return xapi.call('VM.clean_reboot', vm.get('ref')); + return xapi.call('VM.clean_reboot', p_id); }).thenResolve(true); }, @@ -656,9 +650,10 @@ Api.fn.xapi = { } var xo = this.xo; + var xobjs = xo.xobjs; var vm; return this.checkPermission(session, 'write').then(function () { - return xo.vms.first(p_id); + return xobjs.VM.first(p_id); }).then(function (tmp) { vm = tmp; @@ -667,12 +662,10 @@ Api.fn.xapi = { throw Api.err.NO_SUCH_OBJECT; } - return xo.pools.first(vm.get('pool_uuid')); - }).then(function (pool) { - var xapi = xo.connections[pool.get('uuid')]; + var xapi = xo.connections[vm.get('pool')]; // @todo If XS tools are unavailable, do a hard shutdown. - return xapi.call('VM.clean_shutdown', vm.get('ref')); + return xapi.call('VM.clean_shutdown', p_id); }).thenResolve(true); }, @@ -686,9 +679,10 @@ Api.fn.xapi = { } var xo = this.xo; + var xobjs = xo.xobjs; var vm; return this.checkPermission(session, 'write').then(function () { - return xo.vms.first(p_id); + return xobjs.VM.first(p_id); }).then(function (tmp) { vm = tmp; @@ -697,11 +691,8 @@ Api.fn.xapi = { throw Api.err.NO_SUCH_OBJECT; } - return xo.pools.first(vm.get('pool_uuid')); - }).then(function (pool) { - var xapi = xo.connections[pool.get('uuid')]; - - return xapi.call('VM.start', vm.get('ref'), false, false); + var xapi = xo.connections[vm.get('pool')]; + return xapi.call('VM.start', p_id, false, false); }).thenResolve(true); }, }, diff --git a/src/xo.js b/src/xo.js index e4aa691..b32a60c 100644 --- a/src/xo.js +++ b/src/xo.js @@ -249,6 +249,8 @@ Xo.prototype.start = function (cfg) { 'indexes': ['email'], }); + xo.connections = {}; + xo.xclasses = [ 'console', 'crashdump', @@ -292,6 +294,7 @@ Xo.prototype.start = function (cfg) { var connect = function (server) { var pool_id = server.id; var xapi = new Xapi(server.host, server.username, server.password); + xo.connections[pool_id] = xapi; var xclasses = xo.xclasses; var xobjs = xo.xobjs;