diff --git a/src/api/pool.js b/src/api/pool.js index f5385a26a..7682b63e8 100644 --- a/src/api/pool.js +++ b/src/api/pool.js @@ -54,6 +54,25 @@ setDefaultSr.params = { setDefaultSr.resolve = { sr: ['sr', 'SR'] } + +// ------------------------------------------------------------------- + +export async function setPoolMaster ({ host }) { + await this.hasPermissions(this.user.id, [ [ host.$pool, 'administrate' ] ]) + + await this.getXapi(host).setPoolMaster(host._xapiId) +} + +setPoolMaster.params = { + host: { + type: 'string' + } +} + +setPoolMaster.resolve = { + host: ['host', 'host'] +} + // ------------------------------------------------------------------- export async function installPatch ({pool, patch: patchUuid}) { diff --git a/src/xapi/index.js b/src/xapi/index.js index 4e58a34cb..a22adde94 100644 --- a/src/xapi/index.js +++ b/src/xapi/index.js @@ -350,6 +350,12 @@ export default class Xapi extends XapiBase { // ================================================================= + async setPoolMaster (hostId) { + await this.call('pool.designate_new_master', this.getObject(hostId).$ref) + } + + // ================================================================= + async joinPool (masterAddress, masterUsername, masterPassword, force = false) { await this.call( force ? 'pool.join_force' : 'pool.join',