PR comment review
This commit is contained in:
parent
412a1bd62a
commit
9928d47fa2
@ -26,7 +26,7 @@ exports.delete = delete_
|
|||||||
|
|
||||||
disconnect = $coroutine ({vbd}) ->
|
disconnect = $coroutine ({vbd}) ->
|
||||||
xapi = @getXAPI vbd
|
xapi = @getXAPI vbd
|
||||||
yield xapi.disconnectVBD(vbd._xapiRef)
|
yield xapi.disconnectVbd(vbd._xapiRef)
|
||||||
return
|
return
|
||||||
|
|
||||||
disconnect.params = {
|
disconnect.params = {
|
||||||
@ -43,7 +43,7 @@ exports.disconnect = disconnect
|
|||||||
|
|
||||||
connect = $coroutine ({vbd}) ->
|
connect = $coroutine ({vbd}) ->
|
||||||
xapi = @getXAPI vbd
|
xapi = @getXAPI vbd
|
||||||
yield xapi.connectVBD(vbd._xapiRef)
|
yield xapi.connectVbd(vbd._xapiRef)
|
||||||
return
|
return
|
||||||
|
|
||||||
connect.params = {
|
connect.params = {
|
||||||
|
@ -1026,6 +1026,7 @@ export default class Xapi extends XapiBase {
|
|||||||
|
|
||||||
let host
|
let host
|
||||||
let snapshotRef
|
let snapshotRef
|
||||||
|
// It's not needed to snapshot the VM to get the metadata
|
||||||
if (isVmRunning(vm) && !onlyMetadata) {
|
if (isVmRunning(vm) && !onlyMetadata) {
|
||||||
host = vm.$resident_on
|
host = vm.$resident_on
|
||||||
snapshotRef = await this._snapshotVm(vm)
|
snapshotRef = await this._snapshotVm(vm)
|
||||||
@ -1514,11 +1515,11 @@ export default class Xapi extends XapiBase {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
async connectVBD (vbdId) {
|
async connectVbd (vbdId) {
|
||||||
await this.call('VBD.plug', vbdId)
|
await this.call('VBD.plug', vbdId)
|
||||||
}
|
}
|
||||||
|
|
||||||
async disconnectVBD (vbdId) {
|
async disconnectVbd (vbdId) {
|
||||||
// TODO: check if VBD is attached before
|
// TODO: check if VBD is attached before
|
||||||
await this.call('VBD.unplug_force', vbdId)
|
await this.call('VBD.unplug_force', vbdId)
|
||||||
}
|
}
|
||||||
@ -1526,7 +1527,7 @@ export default class Xapi extends XapiBase {
|
|||||||
async destroyVbdsFromVm (vmId) {
|
async destroyVbdsFromVm (vmId) {
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
mapToArray(this.getObject(vmId).$VBDs, async vbd => {
|
mapToArray(this.getObject(vmId).$VBDs, async vbd => {
|
||||||
await this.disconnectVBD(vbd.$ref).catch(noop)
|
await this.disconnectVbd(vbd.$ref).catch(noop)
|
||||||
return this.call('VBD.destroy', vbd.$ref)
|
return this.call('VBD.destroy', vbd.$ref)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
10
src/xo.js
10
src/xo.js
@ -782,7 +782,7 @@ export default class Xo extends EventEmitter {
|
|||||||
const files = await fs.readdir(`${path}/${deltaDir}`)
|
const files = await fs.readdir(`${path}/${deltaDir}`)
|
||||||
const deltaBackups = filter(files, xvaFilter)
|
const deltaBackups = filter(files, xvaFilter)
|
||||||
|
|
||||||
Array.prototype.push.apply(backups, mapToArray(deltaBackups, deltaBackup => `${deltaDir}/${deltaBackup}`))
|
backups.push(...mapToArray(deltaBackups, deltaBackup => `${deltaDir}/${deltaBackup}`))
|
||||||
}
|
}
|
||||||
|
|
||||||
return backups
|
return backups
|
||||||
@ -951,7 +951,7 @@ export default class Xo extends EventEmitter {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const targetStream = fs.createWriteStream(backupFullPath, { flags: 'wx' })
|
const targetStream = fs.createWriteStream(backupFullPath, { flags: 'wx' })
|
||||||
sourceStream.on('error', () => targetStream.emit('error'))
|
sourceStream.on('error', error => targetStream.emit('error', error))
|
||||||
await eventToPromise(sourceStream.pipe(targetStream), 'finish')
|
await eventToPromise(sourceStream.pipe(targetStream), 'finish')
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// Remove backup. (corrupt)
|
// Remove backup. (corrupt)
|
||||||
@ -974,7 +974,8 @@ export default class Xo extends EventEmitter {
|
|||||||
|
|
||||||
async _importVdiBackupContent (xapi, file, vdiId) {
|
async _importVdiBackupContent (xapi, file, vdiId) {
|
||||||
const [ stream, length ] = await this._openAndwaitReadableFile(
|
const [ stream, length ] = await this._openAndwaitReadableFile(
|
||||||
file, 'VDI to import not found in this remote')
|
file, 'VDI to import not found in this remote'
|
||||||
|
)
|
||||||
|
|
||||||
await xapi.importVdiContent(vdiId, stream, {
|
await xapi.importVdiContent(vdiId, stream, {
|
||||||
length,
|
length,
|
||||||
@ -1097,7 +1098,8 @@ export default class Xo extends EventEmitter {
|
|||||||
|
|
||||||
async _importVmMetadata (xapi, file) {
|
async _importVmMetadata (xapi, file) {
|
||||||
const [ stream, length ] = await this._openAndwaitReadableFile(
|
const [ stream, length ] = await this._openAndwaitReadableFile(
|
||||||
file, 'VM metadata to import not found in this remote')
|
file, 'VM metadata to import not found in this remote'
|
||||||
|
)
|
||||||
return await xapi.importVm(stream, length, { onlyMetadata: true })
|
return await xapi.importVm(stream, length, { onlyMetadata: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user